Avatar billede Slettet bruger
22. august 2006 - 15:01 Der er 16 kommentarer og
2 løsninger

innoDB's relationer eller lave det i kald?

Hej eksperter.
Jeg kode i PHP ligegyldigt, men hvad skal jeg fortrække når jeg skal lave relationer:
1. innoDB's relations ting
2. i mit SQL udtræk?

Jeg har kun prøvet nr. 2, så hvis du kender en side ect. der forklar med innoDB.

Håber I kan komme med nogen gode forslag, til hvorfor det ene er bedre end det andet.
Avatar billede arne_v Ekspert
22. august 2006 - 15:18 #1
ikke forstaaet

du skal lave joins i dit SQL udtraek uanset hvad

InnoDB's foreign keys kan sikre at dine data er konsistente

to helt forskellige ting
Avatar billede Slettet bruger
22. august 2006 - 15:53 #2
Jamen har da set der er en knap til noget relation's noget, men det kommer kun frem når man har valg database typen innoDB.
den findes f.eks. ikke med myISAM.
Avatar billede arne_v Ekspert
22. august 2006 - 15:56 #3
siger du at det vaerktoej som du udvikler PHP i har noget database
support med en query builder som kan udnytte InnoDB foreign key
constratints til at foreslaa joins ?
Avatar billede Slettet bruger
22. august 2006 - 16:03 #4
Nej det er i selve PHP my Admin som jeg bruger, hvis du opretter en database med type innoDB, så får du adgang til et punkt der hedder ca. 'relationer'
Avatar billede Slettet bruger
22. august 2006 - 16:03 #5
Her kan du så vælge hvor de forskellige f.eks. bruger, hvor den skal hente det fra, hvis det skal være fra en anden tabel i databasen.
Det kommer i en drop down.
Avatar billede Slettet bruger
22. august 2006 - 16:09 #6
Ok, det er der, du mener. Det er med rimelig stor (ca 99%) sikkerhed til at indstille foreign keys for en tabel, så databasen kan sikre f.eks at din ordretabel ikke henviser til et ikke-eksisterende kundenummer og den slags.
Avatar billede arne_v Ekspert
22. august 2006 - 16:21 #8
ja - i PHPMyAdmin kan du oprette foreign keys for InnoDB tabeller men ikke
for MyISAM tabeller

men det betyder intet for dine queries i PHP
Avatar billede Slettet bruger
22. august 2006 - 16:24 #9
Hvad betyder foreign keys da?
For så har jeg ikke forstået hvad pokker det skal bruges til.
Men jeg forsætter bare med at lave det i my queries.
Avatar billede arne_v Ekspert
22. august 2006 - 16:32 #10
foreign keys betyder at en INSERT i tabellen vil fejle hvis der
ikke er noget som den foreign key kan pege paa

d.v.s. at databasen sikrer konsistens i dine data

men naar du skal selecte maa du stadig selv lave dine joins
Avatar billede arne_v Ekspert
22. august 2006 - 16:37 #11
og derudover kan den vist ogsaa lave cascade delete
Avatar billede Slettet bruger
22. august 2006 - 16:38 #12
De bruges til at sikre mod:
- oprettelse af ugyldige poster
- sletning af brugte poster

og de kan også bruges til automatisk sletning af relaterede poster i andre tabeller. Dette kaldes kaskadevis sletning, og er meget farligt, hvis man laver en fejl.

Som i mit tidligere eksempel, hvis kundenummerfeltet i ordretabellen er sat til at være en fremmednøgle, der peger på det tilsvarende felt i kundetabellen, så vil databasen give fejl, hvis man forsøger at oprette en ordre uden at kunden findes, og man får ikke lov til at slette kunden, når der er en ordre.
Avatar billede arne_v Ekspert
30. september 2006 - 21:08 #13
coldgate ?
Avatar billede Slettet bruger
30. september 2006 - 22:54 #14
sandbox> Smart det du skrev med fremmednøgler.
Avatar billede Slettet bruger
30. september 2006 - 22:54 #15
Ved ikke hvem der skal ha' points, en deler eller?
Avatar billede arne_v Ekspert
30. september 2006 - 23:01 #16
den er jeg helt med på
Avatar billede Slettet bruger
01. oktober 2006 - 11:56 #17
Lyder fint.
Avatar billede Slettet bruger
21. december 2006 - 23:35 #18
Jeg har sat points op til 50, så I får 25 hver.
Takker!
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