Avatar billede lone_a_p Praktikant
22. maj 2011 - 13:53 Der er 4 kommentarer og
1 løsning

Mange til mange relation

Hvordan er det nu lige med en mange til mange relation?

For at databasen ikke skal tjekke alle rows igennem (dvs. benytte index) skal jeg lave en ny tabel, hvor jeg smider nøglerne i?

Er jeg nogenlunde på rette vej?

Mvh Lone
Avatar billede wanze Nybegynder
22. maj 2011 - 14:57 #1
Jeg er ikke helt sikker på om jeg forstår, det du spørger om.

Men hvis vi siger du har to tabeller - en tabel med elever:
ID navn  Årgang
1  Peter 1999
2  Tine  2001

og en tabel med de fag de kan tage:
ID Fag
1  Matematik
2  Geografi
3  Historie

Hvis du så ønsker lave en tabel, der binder disse sammen, så kan du oprette en tabel i stil med
elevID fagID
1      2
1      3
2      1
2      3

Den tabel viser, at Peter har Geografi og Historie, og Tine har Matematik og Historie.

Jeg ved ikke om det var svar nok på dit spørgsmål, ellers bliver du nok nødt til at uddybe. :)
Avatar billede lone_a_p Praktikant
22. maj 2011 - 15:13 #2
Hej wanze,

Ja, det var netop dette - bortset fra, at jeg havde to tabeller mere på - en forbundet med elever og en med fag. Så i stedet for at få nøglerne med over fra disse, skulle jeg slå op i de gamle tabeller hele tiden, hvilket gav et enormt opslag.

Endnu et (denne gang ret stort!) skridt til at få databasen gjort mere stabil :-)

Men der er mere endnu, som jeg har at fornøje mig med - jeg skal "blot" lige i første omgang have fundet kernen til næste problem ;-)

Er denne form for "mange til mange tabel" = "ekstratabel" egentlig det man kalder aggregation?

Vil du lægge point endnu engang - jeg takker meget for din deltagelse.
Avatar billede wanze Nybegynder
22. maj 2011 - 15:25 #3
Der kommer et svar her. :)

Jeg har ikke lige mine bøger til at rådføre mig lige nu, men så vidt jeg husker er det ikke tabellen, man kalder for aggregation - det er bare en relationstabel du har lavet. Det abstrakte objekt du får ud derimod, når du laver din forspørgsel, der er et aggregationsobjekt, der er baseret på relationer mellem andre objekter. Men jeg kan tage fejl!

Du benytter dig vel af JOINs, når du laver opslag fra flere tabeller på én gang, ikke?
Avatar billede lone_a_p Praktikant
22. maj 2011 - 15:32 #4
Jo, jeg benytter joins :-) For det meste inner joins og ganske få gange left. (jeg kunne godt dele nogle tabeller mere op!)

Forstod ikke helt din forklaring, men det går i al fald noget hurtigere i databasen, så løsningen er den rigtige - og den giver kun nødvendigt antal rows ved explain select ... før gav den hele tabellen, hvilket blev temmelig meget, når der kommer andre relationer på :-/

Og tak for svar - igen :-)
Avatar billede sifuentes Nybegynder
22. maj 2011 - 16:00 #5
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