07. februar 2009 - 00:43Der er
6 kommentarer og 1 løsning
Design spørgsmål
Hvis vi har to tabeller.
Tabel 1: Person (columns: CPR NR (primary key)) Tabel 2: Telefon (columns: telefonnummer (primary key))
Der skal være en forbindelse mellem de to tabeller. I min klasse valgte min underviser en 1:M forbindelse, hvor Telefon har en foreign key, som peger på CPR NR.
Efter nærmere omtanke vil dette dog være problematisk for hvad sker der, hvis to personer deler én telefon?
Lad os sige det så var omvendt. Altså så Person har en foreign key til telefonnummer, så vil vi skulle ændre i databasen, hvis en person har flere telefonnumrer.
Hvad skal jeg gøre, hvis jeg vil have, at flere personer skal kunne dele samme telefonnummer og samtidig eje mere end én telefon? Jeg har prøvet at tænke frem og tilbage, men jeg synes ikke rigtigt at det kan lade sig gøre. Man kan selvfølgelig lave én fælles tabel, hvor CPR nummer en Primary key og telefonnummer er en column under Person, hvor man så har 10 columns af telefonumrer. Det vil jo være usædvanligt hvis en person ejer mere end 10 numrer...
Hmm man skal altså bestemme sig for om det skal være ejer eller bruger relation? Kan man ikke have en ER model (database), som både viser hvem der bruger og ejer et bestemt telefonummer?
Ahh, hvis man har en tredje klasse (pure fabrication), så vil denne jo have en composite primary key, som består af CPR og Telefonnummer og to foreign keys (CPR og Telefonnumer). Dvs, hvis man vil finde ud af, hvor mange personer der deler et bestemt tlf nummer, så filtrer man sine søgninger i den tredje tabel efter det pågældende tlf nummer. Og omvendt, hvis man vil finde ud af hvem der eger et bestemt tlf nummer, så skal man blot tilføje en 1:M relation mellem Person og Telefon.
Tusind tak. Du gør det nemt at forstå "simple ting" :)
Nogen gange skal man dog joine alle 3 tabeller, fordi man skal bruge info fra den ene rigtige og have en where betingelse på noget i den anden rigtige og stadig skal have mellem tabellen med.
Synes godt om
Ny brugerNybegynder
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.