gpt4 book ai didi

mysql - 家谱关系数据库

转载 作者:行者123 更新时间:2023-11-29 22:30:59 25 4
gpt4 key购买 nike

我想建立一个MySQL数据库来存储家谱数据。然后它将使用 PHP 输出到网站。家谱将仅由直系祖先组成,并且是倒金字塔类型:我的女儿作为源,她的2个 parent 作为第二代,她的4个祖 parent 作为第三代,她的8个曾祖 parent 作为第四代等等。

我正在考虑创建四张表,一张用于男性祖先,第二个用于女性祖先,然后另外两张表用于他们之间的关系。

表“男性”和“女性”中的所有条目都将有一个唯一的 ID 作为主键和每个人的基本数据(名字、姓氏、世代、出生日期和地点、死亡日期和地点等)。我创建了这两个表,用数据填充它们并知道如何查询它们。我不确定的是如何连接表“男性”和“女性”,以便建立与婚姻、祖先和后代有关的联系。

这就是我到目前为止所做的。

CREATE DATABASE tree;

CREATE TABLE male ( sosa CHAR(20), firstname VARCHAR(128), lastname VARCHAR(128), birthplace VARCHAR(128), birthday SMALLINT, birthmonth SMALLINT, birthyear SMALLINT, deathplace VARCHAR(128), deathday SMALLINT, deathmonth SMALLINT, deathyear SMALLINT, note VARCHAR(128), generation SMALLINT, PRIMARY KEY (sosa)) ENGINE MyISAM;

CREATE TABLE female ( sosa CHAR(20), firstname VARCHAR(128), lastname VARCHAR(128), birthplace VARCHAR(128), birthday SMALLINT, birthmonth SMALLINT, birthyear SMALLINT, deathplace VARCHAR(128), deathday SMALLINT, deathmonth SMALLINT, deathyear SMALLINT, note VARCHAR(128), generation SMALLINT, PRIMARY KEY (sosa)) ENGINE MyISAM;

然后我创建了两个表来显示关系:

CREATE TABLE marriages ( father CHAR(20), mother CHAR(20), marriageplace VARCHAR(128), marriageday SMALLINT, marriagemonth SMALLINT, marriageyear SMALLINT, note VARCHAR(128)) ENGINE MyISAM;

CREATE TABLE child ( childId CHAR(20), father CHAR(20), mother CHAR(20)) ENGINE MyISAM;

我的数据库结构是否合理,或者是否过于复杂?对于列出的每个人,我需要能够显示:谁是他/她的 parent ,谁是他/她的 child ,谁是他/她在 x 代时间跨度(例如 3 代)内的祖先。

编辑:

感谢您提出将所有人放在一张 table 上的想法,我会尝试一下。

至于自动增量,我宁愿使用家谱中常用的Sosa引用。这给出了家谱来源的数字 1,在本例中是我的女儿,2 代表她的父亲,3 代表她的母亲。下一代的祖 parent 得到数字 4、5、6 和 7。要找到任何人的父亲,只需将数字加倍(2 是 1 的父亲,4 是 2 的父亲等)。要找到母亲,请将数字加倍并加一(3 是 1 的母亲,5 是 2 的母亲)。自动增量可以工作,但是当您无法追踪某些祖先时,因为某些分支已死亡,您将留下未使用的引用号。

最佳答案

GEDCOM data modelGramps data model是在不同工具之间交换基因数据的两种最流行的格式。使用这些数据模型中的任何一个都应该(1)使您的工具与其他工具更加兼容,并且(2)确保您的数据模型与许多特殊情况兼容,考虑到这两种数据模型都是专门为处理基因数据而设计的。 p>

Oxy-Gen这样的工具或Gramps PHP exporter应该可以帮助您了解如何将 GEDCOM 数据导入数据库。

有关更多详细信息,另请参阅我对 “Family Tree” Data Structure 的回答.

关于mysql - 家谱关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com