Her er en databasestruktur for å spore et slektstre, sammen med forklaringer og hensyn:
tabeller:
1. personer
- id (int, primærnøkkel) :Unik identifikator for hver person.
- First_name (varchar) :Fornavn på personen.
- last_name (varchar) :Etternavn til personen.
- Birth_date (dato) :Fødselsdato.
- Death_date (dato) :Dato for død (nullable).
- kjønn (enum) :Kjønn (f.eks. 'Mann', 'kvinne', 'annet').
- notater (tekst) :Tilleggsnotater eller informasjon om personen.
2. forhold
- id (int, primærnøkkel) :Unik identifikator for hvert forhold.
- person_id (int) :Utenlandsk nøkkel som refererer til 'People' -tabellen (overordnet).
- relatert_person_id (int) :Utenlandsk nøkkel som refererer til 'People' -bordet (barnet).
- Relationship_type (enum) :Type forhold (f.eks. 'Foreldre', 'barn', 'ektefelle', 'søsken').
- ordre (int) :Valgfritt felt for å spore rekkefølgen på barn (for flere barn av de samme foreldrene).
3. steder
- id (int, primærnøkkel) :Unik identifikator for hvert sted.
- navn (varchar) :Navn på stedet (f.eks. By, by, land).
- type (enum) :Type sted (f.eks. 'By', 'land', 'stat').
4. hendelser
- id (int, primærnøkkel) :Unik identifikator for hver hendelse.
- person_id (int) :Utenlandsk nøkkel som refererer til 'People' -tabellen.
- event_type (enum) :Type hendelse (f.eks. 'Fødsel', 'ekteskap', 'død').
- event_date (dato) :Dato for arrangementet.
- place_id (int) :Utenlandsk nøkkel som refererer til "stedene" -bordet.
- notater (tekst) :Ytterligere merknader om arrangementet.
Forklaring:
* People Table: Kjernebordet, som holder grunnleggende informasjon om hver enkelt i slektstreet.
* Relasjoner Tabell: Definerer hvordan folk er koblet sammen. Denne tabellen lar deg modellere komplekse familiestrukturer (f.eks. Trinnforeldre, adopterte barn osv.)
* Plasserbord: Gir informasjon om stedene knyttet til mennesker og hendelser (f.eks. Fødselsplasser, dødssteder).
* Hendelser Tabell: Registrerer betydelige hendelser i en persons liv, som fødsel, ekteskap og død.
Fordeler med denne strukturen:
* Fleksibel: Databasen har plass til forskjellige familiestrukturer og forhold.
* skalerbar: Lett å legge til nye individer og arrangementer når slektstreet vokser.
* Normalisert: Reduserer dataredundans og forbedrer effektiviteten.
Hensyn:
* Datatyper: Velg passende datatyper for hver kolonne (f.eks. `Int`,` varchar`, `date`,` enum`).
* Relasjoner: Forsikre deg om at forhold blir håndhevet riktig ved hjelp av utenlandske nøkler.
* Normalisering: Vurder ytterligere normalisering (f.eks. Lag separate tabeller for adresser, yrker) for store databaser.
* Dataoppføring: Utvikle et brukervennlig grensesnitt for å legge inn data i databasen.
* Visualisering: Bruk verktøy (f.eks. Graferingsbiblioteker) for å visualisere slektstreet fra databasen.
Eksempel spørsmål:
* Liste opp alle barn til en bestemt person:
`` SQL
Velg p.first_name, p.last_name
Fra folk p
Bli med i forhold R på P.ID =R.Related_Person_id
Hvor r.person_id =
Og r.relationship_type ='barn';
`` `
* Finn alle mennesker født i en spesifikk by:
`` SQL
Velg p.first_name, p.last_name
Fra folk p
Bli med hendelser E på P.ID =E.Person_ID
Bli med steder PL på e.place_id =pl.id
Hvor e.event_type ='fødsel'
Og pl.name ='New York City';
`` `
Merk: Dette er et grunnleggende rammeverk. Det kan hende du må legge til eller endre tabeller basert på dine spesifikke krav og kompleksiteten til slektstreet ditt.