20. december 2002 - 12:45Der er
24 kommentarer og 1 løsning
foreign key og normalisering
eftersom myspl ikke understøtter foreign key, er der så nogen ide i at lave formalisering, efter Boyce-Codd? hvis der er nogen der evt har et ling til et site der omhandler mysql og normalisering ville det være en stor hjælp
+ da myspl ikke understøtter foreign keys, kan man så overhovedet tale om en relationsdatabase, hvis relationerne kun laves gennem forspørgelser og ikke i databasestrukturen?
hmm - der er understøttelse af foreign key - der er bare ikke constraints understøttelse (cascading deletes f.eks.) - men det kan vel altid betale sig at normalisere til 3. normal niveau (som mere eller mindre svarer til Boyce-Codd)
BCNF adresserer 3NF i de tilfælde hvor kandidatnøglen er sammensat og der er overlap mellem de sammensatte nøgler. I de fleste tilfælde reducereres denne blot til 3nf.
>>mfalck du siger at "der er understøttelse af foreign key - der er bare ikke constraints understøttelse " jeg er ikke helt sikker på hvad du mener, jeg er ret ny i området. men grunden til jeg spørger er at hvis jeg fx laver en tabel med en "foreign key ( bilID ) references bil," så er den pist væk hvis jeg går under "eksport strukturen" det re kun min primære nøgle der kan ses her. derfor kan jeg ikke se hvordan der er understøttlese for foreign key hvis myspl bare ignorere den?
" en "rigtig" database så er mysql ikke god nok " ja sådan har jeg også forstået det, og det er netop derfor jeg undrer mig om om der er en sammenhænf mellem normaliseringeni myspl, og manglende understøttelse af foreign keys. ikke mindst da normaliseringen vel altandet lige bevirker mere beregningstid for systemet?
Postfix er ganske rigtigt et udmærket alternativ - til sendmail. Mon ikke du mener PostgreSQL? ;-) Ellers er det i hvert fald den første MTA med understøttelse af foreign keys. ;-)
Det er jo noget vrøvl. Fordi mySQL ikke håndhæver foreign keys (i nuværende stable), kan du da sagtens normalisere din database i mySQL til 3. normalform (eller videre).
Du må sørge for, at det sprog du interfacer til databasen med, sørger for at opretholde dens integritet (det være sig Java, C whatever). (Eg. slette fra tabel B (der har fremmednøgle med ref. til nøgle i tabel A) når du sletter fra tabel A osv.).
>>mercur8 ok så dvs. når man arbejder i mysql, skal denne del af normaliseringen opretholdes af interface delen(fx gennem php). hvorimod hvis det er en "rigtig" database (ikke mysql) kan man lave denne del af normaliseringen i selve databaselaget gennem foreign keys. er det rigtigt forstået?
Synes godt om
Slettet bruger
20. december 2002 - 17:22#15
Normalisering er jo foretaget i dit database design alene. Distribution af data i forskellige relationer, relevante nøgler osv.
Man kan sige, at du gennem interfacesproget opretholder og håndhæver integriteten (normaliseringen).
Synes godt om
Slettet bruger
20. december 2002 - 17:25#16
Ja, det var vist også nogenlunde, hvad du skrev :)
ok nu begynder jge så små at forstå:-) eks: hvis jeg har 4 tabellre der er kaskade afhængige(mener jeg det hedder). A-D hvor A er afhængig af B som er afhæning af C osv gennem primærenøgler der eksistree som "fremmednøgler" i næste tabel. i mysql vil jeg i interfacet kun kunne få sammengængen i a fra tabelA med d i tabel D, ved at sige "SELECT A.a, D.d form A,B,C,D WHERE A.a=B.a AND .......C.d=D.d. fordi jeg ikke har "rigtige" foreign keys. der forbinder tabellerne. hvis jeg havde mulighed for at bruge rigtige foreign keys, hvad ville jeg så have af fordel her?
øh ok, i hvilken slags forspørgelse er det så jeg har fordele af foreign keys ?
Synes godt om
Slettet bruger
20. december 2002 - 17:52#21
Ved modifikation af de indeholdt data (eg. UPDATE, INSERT, DELETE). Foregin keys er et værktøj til at opretholde den referentielle integritet. Hvilken du i mySQL ikke har til rådighed, men selv må sørge for at opretholde (typisk gennem det sprog du interfacer til databasen med).
Synes godt om
Slettet bruger
20. december 2002 - 17:54#22
"Det sprog du interfacer til databasen med" : Lidt misvisende. For dette sprog er jo som bekendt SQL. Så i stedet: "Et niveau højere end databasen".
AHA. så foreign keys sikre mig at hvis jeg ændre en post i eksemplet fra før, vil det påvirke kaskaden af tabeller og ikke kun den tabel jeg retter i. men i Mysql er jeg nød til at sikre denne sammenhæng i et lag højere end databasen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.