求教一个关于编写数据库程序的问题,可用任何语言/数据库

2014-07-11 23:03:14 +08:00
 apaceeee
急需这样一种程序,求各位技术宅和IT高手帮下,感激不尽:

我知道任意一只羊的父本和母本,父本+母本=子一代
我希望通过一次性的录入完所有羊的数据后,检索,此时直接能够看到该羊三代以内的家谱,包括父母、所有的祖父母、曾祖父母,以系谱图的方式呈现;同时,希望能够列出它所有3代以内的后代。

提供个思路也行,谢谢各位了!
3017 次点击
所在节点    问与答
14 条回复
zhpooer
2014-07-11 23:25:24 +08:00
oracle?ok?
ChanneW
2014-07-11 23:27:34 +08:00
id | id_father | id_mother
apaceeee
2014-07-11 23:39:40 +08:00
@zhpooer 弱弱地问下,如何用它实现…
min
2014-07-11 23:44:51 +08:00
你去找个做家谱的软件呗

老外有很多这种软件,找到,装上,把羊的信息输进去,搞定

而且还有可以放羊的照片呢
zhpooer
2014-07-11 23:46:44 +08:00
建表 id | id_father | id_mother, 然后可以直接用 pl/sql 写若干个存储过程, 最后调用一个存储过程 find(id) 打印出需要的内容
187j3x1
2014-07-11 23:51:02 +08:00
有多少只羊啊 少量用json加前端 好像这样行吧
apaceeee
2014-07-11 23:51:37 +08:00
@min 呃,能推荐几个吗,我看看…谢谢
apaceeee
2014-07-11 23:52:21 +08:00
@187j3x1 非常多……得几万只吧……
apaceeee
2014-07-11 23:52:46 +08:00
@zhpooer 谢谢
min
2014-07-11 23:55:25 +08:00
你这种伸手党哪里来的,呼叫站长封他的ip段
@apaceeee
txlty
2014-07-11 23:59:31 +08:00
@min 楼主说了提供思路也行嘛。
@apaceeee 遍历+递归,如何?
jianghu52
2014-07-12 00:12:40 +08:00
我比较笨。所以只会笨方法。
首先,数据库就是想channew 那样,3个id。
然后就是笨笨的循环套循环遍历数据库
第一层循环取父id,当父id不为空时,放一个数组a,然后再第二层循环,以这个父id为子id,求他的父ID(其实是爷爷ID)再放进一个数组b,然后第三层,得到曾爷爷的id,放数组c。(记得过滤重复的)

这样就得到了a b c 三层。
同样的方式 得到 母系的三层。

不会画图,但是原理是一样的。
把曾爷爷 曾奶奶的数组拿出来。谁先都行,假设是曾爷爷的数组开始循环,那么第一项是曾爷爷,第二项就是曾奶奶数组的第一项,查数据库,有这个id,且这个id在爷爷(或者奶奶)辈数组里面,那么显示这一项,如果不在,那么这一组都不成立。继续用曾奶奶的数组的第二项匹配,。。。。曾爷爷的第一项匹配完之后,再来就是曾爷爷的第二项同曾奶奶的第一项开始匹配。。。。。

以上就是大概思路。如果所有的羊的辈分只包含上下一层的话,是没有问题的。但是如果包含两层,也就是乱伦,比如一只羊跟她的曾奶奶搞上了,然后再生出一个养的时候,这个图我就不知道会是什么样了。
apaceeee
2014-07-12 00:14:52 +08:00
@min 呵呵。

@txlty 实在不行就考虑这个吧…
akfish
2014-07-12 00:31:44 +08:00
目测很适合用Google才发布的新玩具来做:
https://github.com/google/cayley
你的数据不过就是一个graph的结构,Caley直接存的就是graph。

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

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

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

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

© 2021 V2EX