Her er en databasestruktur til sporing af et slægtstræ sammen med forklaringer og overvejelser:
Tabeller:
1. mennesker
- id (int, primær nøgle) :Unik identifikator for hver person.
- første_navn (varchar) :Fornavnet på personen.
- last_name (varchar) :Efternavnet på personen.
- fødsel_dato (dato) :Fødselsdato.
- death_date (dato) :Dødsdato (nullable).
- køn (enum) :Køn (f.eks. 'Mandlig', 'kvindelig', 'anden').
- noter (tekst) :Yderligere noter eller oplysninger om personen.
2. forhold
- id (int, primær nøgle) :Unik identifikator for hvert forhold.
- person_id (int) :Udenlandsk nøgle, der refererer til 'People' -tabellen (forælder).
- relateret_person_id (int) :Udenlandske nøgle, der refererer til 'People' -tabellen (barn).
- relation_type (enum) :Type forhold (f.eks. 'Forælder', 'barn', 'ægtefælle', 'søskende').
- ordre (int) :Valgfrit felt for at spore rækkefølgen af børn (for flere børn af de samme forældre).
3. steder
- id (int, primær nøgle) :Unik identifikator for hvert sted.
- navn (varchar) :Navn på stedet (f.eks. By, by, land).
- type (enum) :Type sted (f.eks. 'City', 'Country', 'State').
4. begivenheder
- id (int, primær nøgle) :Unik identifikator for hver begivenhed.
- person_id (int) :Udenlandske nøgle, der refererer til 'People' -tabellen.
- event_type (enum) :Type begivenhed (f.eks. 'Fødsel', 'ægteskab', 'død').
- event_date (dato) :Dato for begivenheden.
- sted_id (int) :Udenlandsk nøgle, der refererer til 'steder' -tabellen.
- noter (tekst) :Yderligere noter om begivenheden.
Forklaring:
* People Table: Kernebordet, der har grundlæggende oplysninger om hver enkelt person i slægtstræet.
* Forholdstabel: Definerer, hvordan folk er forbundet. Denne tabel giver dig mulighed for at modellere komplekse familiestrukturer (f.eks. Step-forældre, adopterede børn osv.)
* Stederstabel: Giver oplysninger om de placeringer, der er forbundet med mennesker og begivenheder (f.eks. Fødselssteder, dødssteder).
* Begivenhedstabel: Registrerer betydelige begivenheder i en persons liv, såsom fødsel, ægteskab og død.
Fordele ved denne struktur:
* fleksibel: Databasen kan rumme forskellige familiestrukturer og forhold.
* skalerbar: Let at tilføje nye individer og begivenheder, når slægtstræet vokser.
* normaliseret: Reducerer dataredundans og forbedrer effektiviteten.
Overvejelser:
* Datatyper: Vælg passende datatyper for hver kolonne (f.eks. 'Int', 'varchar', 'dato', 'enum').
* Forhold: Sørg for, at forholdet håndhæves korrekt ved hjælp af udenlandske nøgler.
* Normalisering: Overvej yderligere normalisering (f.eks. Oprettelse af separate tabeller til adresser, erhverv) for store databaser.
* Dataindtastning: Udvikle en brugervenlig grænseflade til indtastning af data i databasen.
* visualisering: Brug værktøjer (f.eks. Graferingsbiblioteker) til at visualisere slægtstræet fra databasen.
Eksempelforespørgsler:
* Liste over alle børn af en bestemt person:
`` `sql
Vælg P.First_Name, p.last_name
Fra folk s
Deltag i forhold R på P.ID =R.Related_Person_ID
Hvor r.person_id =
Og r.relationship_type ='barn';
`` `
* Find alle mennesker født i en bestemt by:
`` `sql
Vælg P.First_Name, p.last_name
Fra folk s
Deltag i begivenheder E på P.ID =e.person_id
Deltag i steder PL på e.place_id =pl.id
Hvor E.Event_Type ='Fødsel'
Og pl.name ='New York City';
`` `
Bemærk: Dette er en grundlæggende ramme. Det kan være nødvendigt at tilføje eller ændre tabeller baseret på dine specifikke krav og kompleksiteten af dit slægtstræ.