17. december 2003 - 21:12Der 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?
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.
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)
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.
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.
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
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':
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.