tabel relation hvor en tabel er afhængig af 2 rækker fra en anden

Tags:    sql mysql

Hej

Jeg har brug for lidt hjælp. Jeg har en tabel i min MySQL database lige nu, som hedder 'Teams'. 'Teams' tabellen indeholder data om en hold, såsom deres holdnavn, by og lignende.

I min database, vil jeg gerne registrere fodboldkampe, og til dette har jeg tænkt på at lave en anden tabel, som f.eks. kunne hedde 'Games'. I 'Games' tabellen vil jeg gemme information om kampen, såsom hvilke hold der deltog, samt hvad kampens stilling blev og lignende.

Mit problem ligger nu i at jeg ikke helt er sikker på hvordan jeg skal bygge relationen imellem de to tabeller. Jeg er ikke helt sikker, fordi jeg med min nuværende tankegang har relationen således.

- Et hold kan deltage i mange kampe
- En kamp skal altid indeholde to hold.

Jeg er dog ikke helt sikker på hvordan jeg kan opbygge dette med SQL. Jeg har tænkt på at 'Games' tabellen skal have to foreign keys til 'Teams' tabellen, hvor den ene attribut hedder 'team_one_id', og den anden 'team_two_id', men dette er mig stadig lidt forvirrende, og forstår heller ikke helt hvad man så kalder relationen.

Skal jeg over i noget hvor jeg bruger en nøgletabel, og laver det som en mange til mange relation eller hvad?

Hvad ville i gøre?



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Hej Martin

Der er intet galt i den arkitektur du har lagt op til. Det kaldes en netværks-relation, og betyder egentlig blot, at du har to fremmednøgler i din games-tabel. Det er et helt fint design.

Hvad er det du er i tvivl om?



Jeg er stadig interesseret i at høre om min løsning er den helt rigtige måde at gøre dette på.

Jeg tror dog midlertidigt at jeg har fået min løsning til at virke.

Hvis jeg opretter de to tabeller således

Teams
- id (primær)
- name

games
- id (primær)
- team_one_id (fremmed)
- team_one_score
- team_two_id (fremmed)
- team_two_score

og fylder lidt test data i dem, så kan jeg få dataene ude med følgende SQL statement

Fold kodeboks ind/udSQL kode 


Eller måske endnu bedre dette SQL statement

Fold kodeboks ind/udSQL kode 


Jeg er dog stadig interesseret i at vide om der findes en bedre måde, eller om dette faktisk er den rigtige måde, da jeg føler den er lidt klodset.



Indlæg senest redigeret d. 31.07.2014 13:03 af Bruger #4487
umiddelbart er jeg ikke i tvivl om mere, men var mere usikker på om det var den rigtige måde at gøre det på... Men det lyder sådan :)



Er alle aspekter tænkt ind i det?

Hvis det fx et et system der automatisk skal danne kampene, hvad gør du så hvis et hold trækker sig? Kan du bare fylde et nyt ind og hvad så hvis der ikke er et hold at sætte ind?

Evt. et ERD vil kunne vise det hele en smule mere klart og det gør det lidt lettere at kigge på om man evt skal ændre på sit design.



t