Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> software >> Software Database >> .

Come struttureresti il ​​tuo database per tenere traccia di un albero genealogico?

Ecco una struttura di database per il monitoraggio di un albero genealogico, insieme a spiegazioni e considerazioni:

Tabelle:

1. People

- id (int, chiave primaria) :Identificatore univoco per ogni persona.

- first_name (varchar) :Nome del nome della persona.

- last_name (varchar) :Cognome della persona.

- Birth_date (data) :Data di nascita.

- death_date (data) :Data della morte (NULLABLE).

- genere (enum) :Genere (ad esempio, "maschio", "femmina", "altro").

- Note (testo) :Note aggiuntive o informazioni sulla persona.

2. Relazioni

- id (int, chiave primaria) :Identificatore univoco per ogni relazione.

- Person_id (int) :Foreign Key Referencing la tabella "People" (genitore).

- correlato_person_id (int) :Foreign Key Referencing la tabella "People" (bambino).

- relazione_type (enum) :Tipo di relazione (ad esempio, "genitore", "figlio", "coniuge", "fratello").

- ordine (int) :Campo opzionale per tenere traccia dell'ordine dei bambini (per più figli degli stessi genitori).

3. Places

- id (int, chiave primaria) :Identificatore univoco per ogni luogo.

- nome (varchar) :Nome del luogo (ad es. Città, città, paese).

- tipo (enum) :Tipo di luogo (ad es. "Città", "paese", "stato").

4. Eventi

- id (int, chiave primaria) :Identificatore univoco per ogni evento.

- Person_id (int) :Foreign Key Referencing la tabella "People".

- event_type (enum) :Tipo di evento (ad esempio, "nascita", "matrimonio", "morte").

- event_date (data) :Data dell'evento.

- Place_id (int) :Foreign Key Referencing la tabella "Luoghi".

- Note (testo) :Note aggiuntive sull'evento.

Spiegazione:

* Tabella delle persone: La tabella principale, con in mano informazioni di base su ogni individuo nell'albero genealogico.

* Tabella delle relazioni: Definisce come le persone sono connesse. Questa tabella consente di modellare strutture familiari complesse (ad es. Penri di step, bambini adottati, ecc.)

* Tabella posti: Fornisce informazioni sui luoghi associati a persone ed eventi (ad es. Luoghi di nascita, luoghi di morte).

* Tabella degli eventi: Registra eventi significativi nella vita di una persona, come nascita, matrimonio e morte.

Vantaggi di questa struttura:

* flessibile: Il database può ospitare varie strutture e relazioni familiari.

* Scalabile: Facile da aggiungere nuovi individui ed eventi man mano che l'albero genealogico cresce.

* Normalizzato: Riduce la ridondanza dei dati e migliora l'efficienza.

Considerazioni:

* Tipi di dati: Scegli tipi di dati appropriati per ogni colonna (ad es. `Int`,` varchar`, `data`,` enum`).

* Relazioni: Assicurarsi che le relazioni siano applicate correttamente usando le chiavi estere.

* Normalizzazione: Prendi in considerazione un'ulteriore normalizzazione (ad es. Creazione di tabelle separate per indirizzi, professioni) per database di grandi dimensioni.

* Inserimento dei dati: Sviluppare un'interfaccia intuitiva per l'immissione dei dati nel database.

* Visualizzazione: Utilizzare strumenti (ad es. Librerie graficanti) per visualizzare l'albero familiare dal database.

Esempio di query:

* Elenca tutti i bambini di una persona specifica:

`` `sql

Seleziona p.first_name, p.last_name

Dalle persone p

Unisciti alle relazioni R su p.id =r.related_person_id

Dove r.person_id =

E R.Relationship_Type ='Child';

`` `

* Trova tutte le persone nate in una città specifica:

`` `sql

Seleziona p.first_name, p.last_name

Dalle persone p

Unisciti agli eventi e su p.id =e.person_id

Unisciti a Place Pl su E.Place_id =Pl.id

Dove E.Event_Type ='Birth'

E pl.name ='New York City';

`` `

Nota: Questo è un framework di base. Potrebbe essere necessario aggiungere o modificare le tabelle in base ai requisiti specifici e alla complessità del tuo albero genealogico.

 

software © www.354353.com