V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
apaceeee
V2EX  ›  问与答

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

  •  
  •   apaceeee · 2014-07-11 23:03:14 +08:00 · 3143 次点击
    这是一个创建于 3781 天前的主题,其中的信息可能已经有所发展或是发生改变。
    急需这样一种程序,求各位技术宅和IT高手帮下,感激不尽:

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

    提供个思路也行,谢谢各位了!
    14 条回复    2014-07-12 00:31:44 +08:00
    zhpooer
        1
    zhpooer  
       2014-07-11 23:25:24 +08:00
    oracle?ok?
    ChanneW
        2
    ChanneW  
       2014-07-11 23:27:34 +08:00
    id | id_father | id_mother
    apaceeee
        3
    apaceeee  
    OP
       2014-07-11 23:39:40 +08:00 via iPad
    @zhpooer 弱弱地问下,如何用它实现…
    min
        4
    min  
       2014-07-11 23:44:51 +08:00
    你去找个做家谱的软件呗

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

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

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

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

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

    @txlty 实在不行就考虑这个吧…
    akfish
        14
    akfish  
       2014-07-12 00:31:44 +08:00
    目测很适合用Google才发布的新玩具来做:
    https://github.com/google/cayley
    你的数据不过就是一个graph的结构,Caley直接存的就是graph。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:28 · PVG 16:28 · LAX 00:28 · JFK 03:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.