- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前在我的 mysql 数据库中有 100k+ 条记录来定义一个人。一个人有一个 ID、一个 fatherID、一个 motherID 和一个 partnerID。
我想为每条记录添加 treeID,这样我就可以区分未连接的家庭。虽然我似乎无法找到一个好的方法,尤其是在 mysql 的限制下。
如果有什么好主意,请赐教:)
最佳答案
很多工作已经投入到系谱数据结构中。看看GEDCOM标准以及它们如何定义和连接各种数据元素。这些对象往往存储在平面文件而不是数据库中,但对象仍然具有相当相关的结构。
一般来说,它比您当前的结构所表达的要复杂一点。但是如果你提取一个稍微不同的实体结构,它就会开始很好地结合在一起。目前你有一个 Person
,它应该知道所有关于它的连接。相反,将连接本身变成一个结构。像这样:
Person
----------
ID
Name
etc.
Family
----------
FatherID
MotherID
Child
----------
FamilyID
PersonID
这应该至少在基本层面上涵盖血缘关系。可以安全地假设任何给定的人都是由一位父亲和一位母亲创造的。他们目前的家庭结构可能大不相同,但生育 child 的实际行为非常标准且有据可查。对于父亲或母亲未知的家庭,这些列可以为空。
您可以从那里扩展结构以包含其他功能。例如,也许一个人出生于一个家庭,但被收养到另一个家庭。然后您可以将类型标志添加到 Child
表:
Child
----------
FamilyID
PersonID
TypeID
类型可能包括出生、收养、教父等。要包括由同性伴侣抚养的 child ,您可以重命名 Family
字段:
Family
----------
Parent1ID
Parent2ID
如果您将Gender
添加到Person
,那么您可以在必要时推断出“父亲”和“母亲”。 (对于在任何给定时间有两个以上 parent 的家庭,我想会更有想象力。)这也可以处理死亡/离婚和再婚的家庭。 Person
可以是多个 Family
实体的 Child
,具有不同的 Type 标志。并且 Person
可以是多个 Family
实体中的 Parent
,也许还有其他区别数据。
此类区分数据可能包括事件日期。也许是这样的:
FamilyEvent
----------
ID
EventTypeID
FamilyID
DateOccurred
因此,家庭
可能有“婚姻”事件,也可能没有。可能会发生“离婚”事件。等等。 Person
可以有事件,例如“出生”和“死亡”(以及介于两者之间的任意数量的重要事件)也是合理的:
PersonEvent
----------
ID
EventTypeID
PersonID
DateOccurred
(您可以使用表子类型来概括一点,但我认为没有必要。引入的复杂性会使进一步扩展变得更加困难,相信我,当您发现文化时,这可以进一步扩展很多在一个非常大的谱系结构中,人与家庭之间存在差异。)
关于mysql - 接近sql家谱的想法(mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114313/
我做到了,但它没有显示答案 当我询问兄弟,姐妹,叔叔,阿姨时 这是我写的,有什么问题吗? /*uncle(X, Y) :– male(X), sibling(X, Z), parent(Z, Y).*
我即将参加考试,需要有关家谱的考试问题的帮助。我以前做过树,但只有这种格式: 数据树 a = 空 |叶一个 |节点a(树a)(树a) 基本上,一棵树要么是空节点,要么是叶节点,或者是一个有两棵树递归跟
有没有办法让子元素跟随其父元素? 问题是,如果只有一个子节点,而父节点有一大段文本,连接器的位置就会变得非常糟糕。我该如何解决? Fiddle demo * {margin: 0; padding:
我正在尝试存储家谱。这是我使用的平台,Zend framework, Mysql, Ajax我搜索了 stackoverflow 我遇到了这篇文章,它对处理对象方面的数据非常有帮助。 "Family
家谱中家谱的算法是怎么做的? 例如 parent A有一个 child B和C。那么,如果 child C将来也生了一个 child 怎么办。它如何使用数据库添加到树中? 我看过 Jit 的 RGra
我对这个任务一无所知。我需要像这样制作家谱 但我无法解决 Main.java 中的 child 问题。对于每个名字,我都必须给 child 写 null 。 这是我的代码:Main.java 。第二个
我使用 CSS 创建了一个家谱。 家谱可以正常工作,但问题是如果一行中的列表太多,它会在行的右端断开该行,并在新行上显示。 如何在不破坏子元素的情况下使这个家谱水平延伸?即使我在页面底部没有水平滚动条
它来 self 的家庭作业。有家谱 a + b / | | \
正如您在下面的代码片段中所看到的,家谱显示得不是很好。那是因为容器不够宽,装不下它。我想通过向容器添加滚动条来解决这个问题,但不幸的是,这不起作用。我在列表中尝试了 nowrap,但无济于事。我有什么
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,
我正在尝试用 PHP 做一个传销项目。现在我陷入了 MLM 的二叉树表示。请帮我实现这棵树。 sample tree structre .请帮我在附加图片上构建一个树状结构。 Sample tree
需要帮助!是否可以将此网络树居中 http://bvusolutions.com/tree2.html加载页面后?我还想将它放在 960px 宽度的 div 中,以避免滚动并具有缩放功能。 每次我添加
我是一名优秀的程序员,十分优秀!