Aqui está uma estrutura de banco de dados para rastrear uma árvore genealógica, juntamente com explicações e considerações:
Tabelas: 1.
pessoas -
id (int, chave primária) :Identificador único para cada pessoa.
-
primeiro_name (varchar) :Primeiro nome da pessoa.
-
last_name (varchar) :Sobrenome da pessoa.
-
birth_date (data) :Data de nascimento.
-
Death_date (data) :Data da morte (anulável).
-
gênero (enum) :Gênero (por exemplo, 'masculino', 'feminino', 'outro').
-
Notas (texto) :Notas ou informações adicionais sobre a pessoa.
2.
relacionamentos -
id (int, chave primária) :Identificador exclusivo para cada relacionamento.
-
Person_id (int) :Chave estrangeira Referenciando a tabela 'People' (pai).
-
relacionado_person_id (int) :Chave estrangeira referenciando a tabela 'pessoas' (criança).
-
relacionamento_type (enum) :Tipo de relacionamento (por exemplo, 'pai', 'filho', 'cônjuge', 'irmão').
-
order (int) :Campo opcional para rastrear a ordem das crianças (para vários filhos dos mesmos pais).
3.
lugares -
id (int, chave primária) :Identificador exclusivo para cada lugar.
-
nome (varchar) :Nome do local (por exemplo, cidade, cidade, país).
-
tipo (enum) :Tipo de lugar (por exemplo, 'cidade', 'país', 'estado').
4.
eventos -
id (int, chave primária) :Identificador exclusivo para cada evento.
-
Person_id (int) :Chave estrangeira Referenciando a tabela de 'pessoas'.
-
event_type (enum) :Tipo de evento (por exemplo, 'nascimento', 'casamento', 'morte').
-
event_date (data) :Data do evento.
-
place_id (int) :Chave estrangeira Referenciando a tabela de 'lugares'.
-
Notas (texto) :Notas adicionais sobre o evento.
Explicação: *
Tabela de pessoas: A tabela principal, mantendo informações básicas sobre cada indivíduo na árvore genealógica.
*
Tabela de relacionamentos: Define como as pessoas estão conectadas. Esta tabela permite que você modele estruturas familiares complexas (por exemplo, pais de etapas, crianças adotadas, etc.)
*
Locais tabela: Fornece informações sobre os locais associados a pessoas e eventos (por exemplo, locais de nascimento, locais de morte).
*
Tabela de eventos: Registra eventos significativos na vida de uma pessoa, como nascimento, casamento e morte.
Vantagens desta estrutura: *
flexível: O banco de dados pode acomodar várias estruturas e relacionamentos familiares.
*
escalável: Fácil de adicionar novos indivíduos e eventos à medida que a árvore genealógica cresce.
*
Normalizado: Reduz a redundância de dados e melhora a eficiência.
Considerações: *
Tipos de dados: Escolha tipos de dados apropriados para cada coluna (por exemplo, `int`,` varchar`, `date`,` enum`).
* Relacionamentos
: Certifique -se de que os relacionamentos sejam aplicados corretamente usando chaves estrangeiras.
*
Normalização: Considere uma normalização adicional (por exemplo, criando tabelas separadas para endereços, ocupações) para grandes bancos de dados.
*
Entrada de dados: Desenvolva uma interface amigável para inserir dados no banco de dados.
*
Visualização: Use ferramentas (por exemplo, bibliotecas gráficas) para visualizar a árvore genealógica no banco de dados.
Consultas de exemplo: *
Liste todas as crianças de uma pessoa específica: `` `SQL
Selecione P.First_Name, P.Last_Name
De pessoas p
Junte -se relacionamentos r em p.id =r.related_person_id
Onde r.person_id =
E R.RelationShip_Type ='Child';
`` `
* Encontre todas as pessoas nascidas em uma cidade específica:
`` `SQL
Selecione P.First_Name, P.Last_Name
De pessoas p
Junte -se a eventos e em p.id =e.person_id
Junte -se a lugares PL em E.Place_Id =PL.ID
Onde e.event_type ='nascimento'
E pl.name ='Nova York';
`` `
Nota: Esta é uma estrutura básica. Pode ser necessário adicionar ou modificar tabelas com base em seus requisitos específicos e na complexidade da sua árvore genealógica.