25. september 2007 - 22:47Der er
5 kommentarer og 1 løsning
Angive brødre og søstre
Jeg har en tabel med personer (id, cpr, navn adresse osv). Hvordan kan jeg registrere hvem af personerne der i familie med hinanden? En person kan have alt fra ingen til mange søskende.
Du kan f.eks. give hver prson to felter 'parentMid' og 'parentFid' ('M' og 'F' for 'male' og 'female'), der indeholder forældrenes ID'er. Så kan du derudfra hente personer, som har samme forældre.
Relationen er en mange til mange. Det løser du ved at oprette en ny tabel med (mindst) to felter i, nemlig 2*id, du kan kalde dem id1 og id2, men begge refererer til feltet id i personer. For at kunne kende typen af relation ville jeg sætte en type på relationen også, så man kan se hvorfor at de relaterer til hinanden ("forælder", "barn af", "gift" osv.) Du kan oprette en pseudo-primærnøgle også hvis du vil, men det plejer man ikke på sådanne tabeller.
Ole: Jeg har desværre ikke adgang til forældredata! teepee: Jeg havde oprindeligt tænkt mig det samme som du foreslår, men forkastede da f.eks. 3 brødre ville give 6 poster: 1-2, 1-3, 2-1 osv. Ideen er at man skal kunne slå op i en formular og få vist en person samt kunne vise og registrere evt. søskende.
claus66>> teepee's måde er sådan man gør, du kan ikke have mange til mange relationer på anden måde uden af få redundantdata, og det ER NOGET MAN SKAL UNDGÅ !!
Du kan sagtens vise det du gerne vil med teepee's måde :)
3 brødre giver kun 3 rækker, med mindre at du ikke vil slå op i både id1 og id2 for at finde relationer. Hvis 1-2 står i tabellen, så står 2-1 der implicit også. Derfor kan du f.eks. ved relationen 33-101 med typen "barn af" også implicit udregne at der må være en 101-33 "fader til" om man vil. Jeg tror at det hele falder bedre på plads når først du begynder at lave forskellige opslag i tabellen.
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.