Avatar billede kimgr00 Nybegynder
17. december 2003 - 21:12 Der er 15 kommentarer og
1 løsning

stamtræ over famile

Jeg skal til at lave et stamtræ i db, der videre skal vises via asp. Jeg vil hører om der er nogle der har en god ide til opdeling af data i tabellene i db.

mit egen forslag vil være at dele det op i to tabeller.
Den første tabel skal indeholde hver person altså

Id | Navn | efternavn | æktefælde

næste tabel er familierelationer

Id | Id på æktefælde | Id Børn | ID forældre

Problemet med dette er at med laver f.eks fire kolonner til id på børn, og så må en familie kun få fire børn. Der bliver også problemer når dataerne skal hives ud via asp.

Er der nogen der har et forslag til en bedre opbygning?
Avatar billede netro Nybegynder
17. december 2003 - 21:17 #1
Prøv at kigge lidt på: http://www.html.dk/scripts/asp/00015/
Avatar billede kimgr00 Nybegynder
17. december 2003 - 21:23 #2
Jeg kan se der er noget jeg muligvis kan bruge når dataerne skal hentes ud, men ikke hvordan jeg skal opbygge db.
Avatar billede netro Nybegynder
17. december 2003 - 21:31 #3
Det burde være til at forstå, hvis du downloader eksemplet og studerer det. Når du indsætter en ny post, angiver du simpelthen, hvilken anden den skal referere til (befinde sig under).

Lad os sige, at Peter har et ID på 6. Hans datter, Jeanette, skal naturligt nok referere til ham. Derfor indsætter vi Jeanette som en post, hvor hun f.eks. får tildelt et ID på 13. I RID skriver vi 6, da det er hendes faders ID. Hvis/når Jeanette får et barn, får han/hun et RID på 13.
Avatar billede kimgr00 Nybegynder
17. december 2003 - 21:40 #4
Den er opfanget :-) men hvis Peter får to børn, og Jeanette får tre børn. Hvad så skal jeg så ikke lave min. tre colonner
Avatar billede netpxg Nybegynder
17. december 2003 - 21:49 #5
Giv hver person et far og mor felt.
Avatar billede netro Nybegynder
17. december 2003 - 21:50 #6
Hehe... Hvis Peter får to børn (Jeanette og Carsten), så ser deres poster sådan ud:

ID  RID  Navn
13  6    Jeanette
14  6    Carsten

Og hvis Jeanette får tre børn (Rip, Rap og Rup), ser deres ud som følger:

ID  RID  Navn
15  13    Rip
16  13    Rap
17  13    Rup

Så skulle jeg mene, det vil lykkes for dig.
Avatar billede kimgr00 Nybegynder
17. december 2003 - 21:54 #7
til netpxq
Den tanke har jeg også haft men så kommer problemet med hvilke bør har de så.

til netro
Jeg skulle lige tænke den igennem og problemet bliver hvis du går ned og vælger en af børnene hvordan ved men så hvem forelterne er. (Det kan muligvis løses på den metode, jeg skal lige tænke den igemmen igen)
Avatar billede netro Nybegynder
17. december 2003 - 21:58 #8
Ja, så skal vi gå den anden vej tilbage i stamtræet. Rup (13) -> Jeanette (6) -> Peter (0)

Måske det også var en god idé at lave et felt med personens køn.

0: Ikke angivet
1: Mand
2: Kvinde
Avatar billede kimgr00 Nybegynder
17. december 2003 - 22:07 #9
ØØØØ køn, den ide fik jeg ikke lige fat i.

Det jeg mete med det jeg skrev før er at hvis men i det første eksempel skriver Threads(1) (lad os sige det er Jeanette og Carsten) så kan men ikke ikke se Peter (faderen). Det jeg prøver at sige er hvis nok, at metoden i det første eksempel er meget fra top til bund og ikke fra middet og bøde op og ned.

Med stadig kunne det godt være en god ide at opdele tabellen som i det førte eks.
Avatar billede kimgr00 Nybegynder
17. december 2003 - 22:28 #10
Jeg sover på det til i morgen
Avatar billede netpxg Nybegynder
17. december 2003 - 22:31 #11
Det er nok at vide hvem forældrene er, man kan med simple forespørgsler finde børn, søskende, forældre. Med list flere forespørgsler finder man også bedsteforældre og børnebørn osv.
Avatar billede netro Nybegynder
17. december 2003 - 22:47 #12
Korrekt...
Avatar billede netro Nybegynder
18. december 2003 - 01:00 #13
Jeg har lavet en funktion, der går den modsatte vej og stadig er rekursiv. Den giver dig de foregående familiemedlemmer.

Function GoBack(intID)
    For m = 1 To Ubound(arrID)
        If CInt(arrID(m)) = CInt(intID) Then
            GoBack = GoBack & arrSU(m) & " -> " & GoBack(arrRE(m))
        End If
    Next
End Function

Response.Write GoBack(13)

Output:

Rup -> Jeanette -> Peter
Avatar billede hnteknik Novice
18. december 2003 - 09:19 #14
Førend man kaster sig ud i at lave alverdens krumspring for at bygge en database op, ville det mæske være en ide at kigge på det måske mest udbredte program med gode danske rødder i Finderup, som desværre er død':

http://www.brotherskeeper.dk/start.htm

Jeg er sikker på at man her  eller hos DIS kan hjælpe med en rigtig struktur:
http://www.dis-danmark.dk/program/bk.asp

henrik
Avatar billede kimgr00 Nybegynder
18. december 2003 - 17:00 #15
netro du har overbevist mig, jeg skulle nok efter lidt nørklen få en stamtræ ud af dette.
smid lige et svar og de 60 point er dine
Avatar billede netro Nybegynder
18. december 2003 - 17:18 #16
Okay - håber det lykkes for dig :o)
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
Kurser inden for grundlæggende programmering

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