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.
Informazioni correlate
software © www.354353.com