Ik wil een stamboomsysteem gaan maken. Hoe moet ik de personeninformatie in de db gaan stoppen?
Ik dacht aan zoiets:
table personen
stamboom id, naam, van-tot (bijv 1822 - 1900), thumb, generatie, linkend-to (ouders)

De informatie moet later grafisch worden verwerkt (hier komt uiteraard een stukje rekenwerk bij kijken) dus wil ik de db zo overzichtelijk en simpel mogelijk houden. Is mijn structuur een goed idee of heeft iemand een beter idee?

BTW: ik werk met mysql myisam.

Bvd, RT.
Wat is 'van-tot'? Dat klinkt mij in de oren als een geboortedatum en een overlijdensdatum. Dat zijn dus 2 verschillende gegevens en die sla je nooit op in 1 veld.

'Generatie' kan ik me niks bij voorstellen, wat sla je daar in op?

'linkend-to' lijkt mij gewoon een parent_id en daar kun je er meerdere van hebben. Je hebt in elk geval vader en moeder, maar ook stiefouders zijn mogelijk. Dat vraagt dus om een koppeltabel.

MyISAM is een slecht plan, daarmee kun je onmogelijk een relationele database aanmaken. Gebruik minimaal innoDB, maar nog liever een echte relationele database.

Ps. Let even op geldige kolomnamen, een - (min) gebruik je om te rekenen...
[edit]Blont. Zie bovenstaand[/edit]
Om te gaan linken moet je innoDB engine gebruiken.
Families
- familie_id AUTO_INCREMENT PRIMARY KEY int
- familie_naam FOREIGN KEY varchar
Gezinnen
- gezin_id AUTO_INCREMENT PRIMARY KEY int
- gezin_naam FOREIGN KEY varchar
Leden
- lid_id AUTO_INCREMENT PRIMARY KEY int
- gezin_naam FOREIGN KEY varchar
OudersVan
- ouder_id PRIMARY KEY int (van lid_id)
- kind_id FOREIGN KEY int (van lid_id)
leden_gezin
- gezin_id PRIMARY KEY int
- lid_id FOREIGN KEY int
gezinnen_familie
- familie_id PRIMARY KEY int
- gezin_id FOREIGN KEY int

zoiets misschien?
Hier kan je nog 2 extra tabellen aan toevoegen extrainfo met een table lid_extrainfo ofzo
Idd ik zal op de namen letten. Ik denk dat ik vrijwel zeker geen beschikking zal hebben over innoDB (het zal niet worden geplaatst op mijn eigen host), en dit moet toch worden geinstalleerd door de hoster?
Het woord generatie zegt eigenlijk al wat het inhoudt. Stel je hebt dus in ieder geval de stichters van de hele stamboom, die hebben kinderen, en die weer kinderen. Dan zijn de laatsten de derde generatie lijkt me?

van-tot is idd geboortedatum en overlijdensdatum. Deze zullen uiteraard worden gescheiden.

Hoeveel tabellen heb ik nodig?
Ik neem aan stambomen, personen, stiefouders?

Ik zie hier net een tutorial over Siblings en ancestors, is het een goed idee om zo'n xml structuur op te slaan in de db?
Of moet ik juist alleen werken met id's om personen aan elkaar te koppelen?

Bedankt voor het commentaar!

[edit]
Ik zag je reactie te laat jason!
Bedankt voor de info, alleen snap ik je structuur niet helemaal!
[/edit]
Als je nog niet zo goed weet hoe je databases moet koppelen etc. Zou ik je daar eerst maar even op gaan richten. Lezen lezen lezen lezen dus ;)
InnoDB is een engine van MySQL, bijna overal ondersteunt...
http://en.wikipedia.org/wiki/PowerDesigner

Kost alleen wat tijd om het onder de knie te krijgen, maar echt fucking handig.

1 x maak je een model en PD maakt de db structuur voor jou (zie wikipedia voor ondesteuning van db).

Voordelen:
*heel simpel overstappen andere db.
*scheelt veel tijd
*correcte db structuur
....

Leuk programmaatje, maar wel redelijk lastig met alles erop en eraan. Je moet wel de dingen kennen van sql. Tis vooral heel overzichtelijk.

Mazzel.
[edit]
Heb het al!
Ik zou het iets makkelijker doen:

1 table:

Id, Name, Date of Birth, Date of Death, Fathers ID, Mothers ID, Partner ID

Nu begin ik ook weer te twijfelen, ik heb er namelijk niet zo veel verstand van. Iemand anders nog suggesties?
Peter Somhorst schreef op 16.04.2007 20:50
Ik zou het iets makkelijker doen:

1 table:

Id, Name, Date of Birth, Date of Death, Fathers ID, Mothers ID, Partner ID


En wat nu als iemand meerdere partners heeft, dus bijvoorbeeld gescheiden en hertrouwd is? En hoe ga je nu stiefvaders/stiefmoeders opnemen in je tabel?

Kortom, je krijgt dubbele informatie en dit model zal dus niet voldoen.

ps. Je zult dus in ieder geval 1 tabel moeten hebben met daarin alle persoons informatie. Maar daarnaast moet je nog een aparte tabel hebben waarin je de relaties tussen verschillende personen opslaat.

Reageren