mysql 保存族谱应该怎么设计?

2020-05-12 18:05:52 +08:00
 mebtte
7143 次点击
所在节点    MySQL
58 条回复
l1nyanm1ng
2020-05-12 18:07:59 +08:00
百度 ❌
谷歌 ❌
打开 V2EX 来和问问题(实则借机开始划水 ✔️
wangkun025
2020-05-12 18:11:16 +08:00
people
relationships
person_relationships
mebtte
2020-05-12 18:11:35 +08:00
@l1nyanm1ng 猜对了
mebtte
2020-05-12 18:12:31 +08:00
@wangkun025 要支持正反向查询, 比如爷爷的孙子们 /孙子的爷爷
xupefei
2020-05-12 18:14:36 +08:00
你需要的应该是 RDF 。
annielong
2020-05-12 18:14:54 +08:00
基本的都是递归,id,name,upid
2exploring
2020-05-12 18:16:27 +08:00
一张人表,一张父子关系表,不就结了
wangkun025
2020-05-12 18:17:22 +08:00
@mebtte 加需求要加钱的
superrichman
2020-05-12 18:21:33 +08:00
可以参考《 sql antipatterns 》这本书第三章来设计存储和读取树形结构。
mebtte
2020-05-12 18:29:21 +08:00
@2exploring 隔了好几代不好查询
yangliulnn
2020-05-12 18:47:04 +08:00
左右值了解一下
egfegdfr
2020-05-12 19:01:22 +08:00
在 id,name,upid 的基础上在加一个 path 的字段、用来记录这个当前节点的所有父节点。
hantsy
2020-05-12 19:03:11 +08:00
这样 100%用 Neo4j 方便啦。
hteen
2020-05-12 19:03:15 +08:00
闭包表
FFFire
2020-05-12 20:20:31 +08:00
建议使用 Excel
k9990009
2020-05-13 00:07:44 +08:00
不就是树嘛,除了父 ID,再加上父路径 1,3,5,…… 想怎么查都阔以
Keyes
2020-05-13 00:11:35 +08:00
爸爸辈太多的话,查孙子会比较吃性能,我只想到了买个更好硬件的 server

然后:图数据库就干这个事的
izoabr
2020-05-13 00:16:57 +08:00
我觉得 JSON 也挺合适的,有结构且明文
Solarest
2020-05-13 00:51:40 +08:00
参考图数据库的设计方式,分表存:实体 a 、实体 a 和 b 的关系、实体 b 。
tulongtou
2020-05-13 01:55:38 +08:00
感觉不用设计想怎么存怎嘛存,族谱能有多少人?几百几千?哪怕上万了,也不需要设计啊,这个数量级怎么存都没毛病

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671013

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX