SQL- navrh struktury

Sekcia: Ostatné 15.12.2006 | 09:57
jv   Návštevník
Mam nasledujucu databazu suciastok: Suciastka je definovana: 1) skladove cislo 2) typ 3) pocet na sklade Jednu suciastku mozu vyrabat viaceri vyrobcovia, ale mozu sa lisit malicko v niektorych parametroch... Tieto parametre su v dalsej tabulke: 1) skladove cislo 2) vyrobca 3) parametre suciastky v strukture: -vlastnost -hodnota Uvediem priklad: Mam 10k odpor, jeho definicia nech je v tabulke skladu: skladove cislo: RR10k0.0 typ: resistor 10k pocet na sklade: 1500 a tuto suciastku vyraba firma AVX aj Zetex, preto su v tabulke vyrobcov taketo udaje: skladove cislo: RR10k0.0 vyrobca: AVX parametre: vlastnost 1: max temperature hodnota 1: 200C vlastnost 2: max power hodnota 2: 3W vlastnost 3: linearity hodnota 3: 5% a pre Zetex je tam tento zaznam: skladove cislo: RR10k0.0 vyrobca: Zetex parametre: vlastnost 1: max temperature hodnota 1: 250C vlastnost 2: max power hodnota 2: 3W vlastnost 3: package volume hodnota 3: 500 pcs. vlastnost 4: pitch distance hodnota 4: 15mm vlastnost 5: tolerance hodnota 5: 1% No a neviem ako vytvarat tabulky s premenlivou strukturou (tabulka vyrobcov moze mat viacero typov vlastnosti a pod.) Neviete mi poradit? Dakujem.
    • Re: SQL- navrh struktury 12.12.2006 | 17:11
      WlaSaTy   Návštevník
      tabulky s premenlivou strukturou nam zatial nedodali. tato funkcionalita sa emuluje tym ze pouzijes viacero zaznamov pre jedno ID. pozeram zadanie, skladove cislo je jedinecne (unique), typ je textovy popis, vyrobca je textovy popis. potialto je to jednoduche ale v tej druhej tabulke mas rozkol ako to budes riesit. jej struktura je znama, otazny je sposob zobrazovania. mas tam mat dynamicky pocet stlpcov alebo to moze byt vo viacerych riadkoch?
      • Re: Re: SQL- navrh struktury 12.12.2006 | 17:25
        jv   Návštevník
        Moze to byt vo viacerych riadkoch. Lenze ako? Rozmyslal som nad tym, ze bude takato tabulka: skladove cislo vyrobca parametre Parametre budu typu string a bude to nazov tabulky, v ktorych je mozne najst parametre... Problem tu nastava taky, ze tych tabuliek tym padom moze byt velmi vela a neviem, ci je to standardne riesenie. Priklad: skladove cislo: RR10k0.0 vyrobca: Zetex parametre: table_000001 table_00001: vlastnost: max temperature hodnota: 250C vlastnost: max power hodnota: 3W vlastnost: package volume hodnota: 500 pcs. vlastnost: pitch distance hodnota: 15mm vlastnost: tolerance hodnota: 1% Kedze som s SQL este nerobil, neviem, ci toto riesenie ma nedostatky a nie je nachylne na nejake operacie a to uz nehovorim o bezpecnosti...
    • Re: SQL- navrh struktury 12.12.2006 | 17:33
      Avatar Frantisek Klabzuba Debian  Používateľ
      Vyrabat tabulky s premenlivou strukturou je sice zaujimava featura ale neviem o tom ze by sa niekde TAKTO pouzivala na takto jednoduche veci. V tych tabulkach ti chybaju serialy (neviem aku db pouzivas, serial je proste cislo integer ktore je unikatne v celej tabulke, v tvojej db sa mozno robia inak, ja pouzijem informixovsku syntax). Pridaj tam tie serialy! Ja by som to robil takto: 1. Tabulka vyrobcov create table vyrobca ( i_vyrobca serial, n_meno char(20)) insert into vyrobca ("Philips"); // dostane serial 1 insert into vyrobca ("ST"); // dostane serial 2 insert into vyrobca ("Tesla"); // dostane serial 3 2. Tabulka tovarov (v c_vyrobca je vazba na prislusneho vyrobcu, t.j. jeho serial) create table tovar ( i_tovar serial, n_kod char(20), c_vyrobca integer); insert into tovar ("R10k", 3); // teslacky odpor bude mat serial 1 insert into tovar ("R12k", 3); // tesla 12k, serial 2 insert into tovar ("R10k", 1); // serial bude 3 3. Dalej tabulku vlastnosti. Tu je cela pointa v tom ze kolko ma vyrobok vlastnosti tolko krat je v tabulke "vlastnost" jedna veta typu vlastnost=hodnota pre dany vyrobok: create table vlastnost ( i_vlastnost serial, c_tovar integer, n_vlastnost char(20), n_hodnota char(20) ) // teslacky 10k odpor je smejd insert into vlastnost (1,"kvalita","smejd"); insert into vlastnost (1,"linearita","5"); insert into vlastnost (1,"cena","2.50"); // philipsacky 10k odpor je lepsi, ma navyse parameter dt insert into vlastnost (2,"kvalita","parada"); insert into vlastnost (2,"linearita","0.1"); insert into vlastnost (2,"dt","0.21"); insert into vlastnost (2,"cena","5.99"); Vsetky vlastnosti odporov ziskas takto: select tovar.n_kod, vyrobca.n_meno, vlastnost.n_hodnota, vlastnost.n_vlastnost from tovar, vlastnost where tovar.i_tovar = vlanstnost.c_tovar and vyrobca.i_vyrobca = tovar.c_vyrobca Vypise to: r10k | tesla | kvalita | smejd r10k | tesla | linearita | 5 r10k | tesla | cena | 2.50 r10k | philips | kvalita | parada r10k | philips | linearita | 0.1 r10k | philips | dt | 0.21 r10k | philips | cena | 5.99 Tak tolko na uvod, myslim ze s toho si pointu pochopil. V skutocnosti by som doporucoval v tabulke vlastnost namiesto n_vlastnost pouzit vazbu na nejaku tabulku "kodov vlastnosti" cez serial, napr. takto: create table kodvl ( i_kodvl serial, n_meno char(20) ) insert into kodvl ("kvalita"); insert into kodvl ("linearita"); insert into kodvl ("cena"); insert into kodvl ("dt"); create table vlastnost ( i_vlastnost serial, c_tovar integer, c_kodvl integer, n_hodnota char(20) ) insert into vlastnost (1,1,"smejd"); insert into vlastnost (1,2,"5"); insert into vlastnost (1,3,"2.50"); insert into vlastnost (2,1,"parada"); insert into vlastnost (2,2,"0.1"); insert into vlastnost (2,4,"0.21"); insert into vlastnost (2,3,"5.99"); V selekte dotiahnez vlastnost cez vazbu: and vlastnost.c_kodvl = kodvl.i_kodvl atd. atd. atd... uz teraz vidis ze som niektore nazvy tabuliek nezvolil optimalne, tiez mozes kazdej vlastnoti vytvorit tabulku povolenych hodnot. Tak sa s tym pohraj. Pisem to z hlavy bude tam par preklepov...
      • Re: Re: SQL- navrh struktury 12.12.2006 | 17:59
        WlaSaTy   Návštevník
        skoda ze lacnejsie datamazy nemaju constarainy inac sa mozu dostat do tabulky tovarov a vlastnosti dostat zaznamy pre neexistujucich vyrobcov a do tabulky vlastnosti aj neexistujuci tovar. :) ale ako zadanie to hadam staci.
        • Re: Re: Re: SQL- navrh struktury 12.12.2006 | 18:13
          f0f0   Návštevník
          perfektny program najdes tu http://fabforce.net/dbdesigner4/ vyskusaj
      • Re: Re: SQL- navrh struktury 15.12.2006 | 09:57
        jv   Návštevník
        Dakujem za vystiznu odpoved. Pochopil som tu logiku tvorenia, ale dostal som sa na problem0 potrebujem este vyriesit tzv. revizie- to znamena, ze ked niekto spravi nejaku zmenu do tabulky vlastnosti (parametrov), tak tejto suciastke sa zmeni revizia a je mozne si tieto revizie pozerat. Nemusi to byt len zmena vlastnosti, ale aj vymazanie alebo pridanie novej vlastnosti. To uz je asi moc zlozite...