Avatar billede imv29 Nybegynder
20. december 2002 - 12:45 Der 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
Avatar billede imv29 Nybegynder
20. december 2002 - 12:52 #1
+ 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?
Avatar billede mfalck Praktikant
20. december 2002 - 12:53 #2
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)
Avatar billede mfalck Praktikant
20. december 2002 - 12:57 #3
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.
Avatar billede mfalck Praktikant
20. december 2002 - 12:59 #4
og referentiel integritet en del af mysql hvis du bruger de korrekte databaser (innoDB) samt en del af mysql 4 som skulle blive frigivet "snart" :-)
Avatar billede mfalck Praktikant
20. december 2002 - 13:01 #5
Avatar billede imv29 Nybegynder
20. december 2002 - 13:13 #6
>>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?
Avatar billede mfalck Praktikant
20. december 2002 - 13:15 #7
det var vist også noget vås ... som jeg skrev senere så er der kun understøttelse af fremmednøgler med InnoDB og ver 4.
Avatar billede mfalck Praktikant
20. december 2002 - 13:16 #8
men det er vel alment kendt at hvis du skal have en "rigtig" database så er mysql ikke god nok - så skal du bruge postfix
Avatar billede imv29 Nybegynder
20. december 2002 - 13:25 #9
" 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?
Avatar billede niboan Nybegynder
20. december 2002 - 13:53 #10
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. ;-)
Avatar billede mfalck Praktikant
20. december 2002 - 14:19 #11
dough - man skal prøve at adskille i hovedet det man arbejder med og det man forsøger at skrive på skærmen :-)
Avatar billede imv29 Nybegynder
20. december 2002 - 16:21 #12
det jeg finder underligt er under 2NF som man jo ikke KAN overholde i Mysql

"Create relationships between these new tables and their predecessors through the use of foreign keys"
kilde http://databases.about.com/library/weekly/aa090201a.htm?terms=Normalization+
Avatar billede Slettet bruger
20. december 2002 - 16:31 #13
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.).
Avatar billede imv29 Nybegynder
20. december 2002 - 17:18 #14
>>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?
Avatar billede 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).
Avatar billede Slettet bruger
20. december 2002 - 17:25 #16
Ja, det var vist også nogenlunde, hvad du skrev :)
Avatar billede imv29 Nybegynder
20. december 2002 - 17:40 #17
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?
Avatar billede imv29 Nybegynder
20. december 2002 - 17:42 #18
Er der i øvrigt nogen der vil have pionts for denne glimrende tråd?
Avatar billede Slettet bruger
20. december 2002 - 17:44 #19
Om du har foreign keys eller bare almindelige nøgler giver i forbindelse med din SELECT ingen forskel.
Avatar billede imv29 Nybegynder
20. december 2002 - 17:47 #20
øh ok, i hvilken slags forspørgelse er det så jeg har fordele af foreign keys ?
Avatar billede 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).
Avatar billede 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".
Avatar billede imv29 Nybegynder
20. december 2002 - 18:00 #23
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.

rigtigt forstået?
Avatar billede Slettet bruger
20. december 2002 - 18:01 #24
Ja.
Avatar billede imv29 Nybegynder
20. december 2002 - 18:16 #25
endelig faldt 10 øren:-)  tak for det!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester