当前位置:  开发笔记 > 编程语言 > 正文

一对多对自己

如何解决《一对多对自己》经验,为你挑选了1个好方法。

如何为一个可以与自身建立一对多关系的实体构建一个表?具体来说,我正在开发一个跟踪动物繁殖的应用程序.每只动物都有一个ID; 它还有一个父亲ID和一个女性ID.因此,从父系或贵妇到后代可以有一对多.我会倾向于这样的事情:

ID INT NOT NULL PRIMARY KEY
SIRE_ID INT 
DAME_ID INT

并且为购买并添加到种畜中的那些动物记录空值,并在表格中记录其余的动物ID.

所以:

    有人能指出我讨论建模这种关系的文章/网页吗?

    ID应该是INT还是某种字符串?INT中的NULL表示动物在数据库中没有父项,但可以使用具有特殊标志值的String来表示相同的事物.

    这可能最好通过两个表格建模吗?我指的是动物的一张桌子和一张单独表格,表示亲属关系,例如:

    动物

    ID INT NOT NOT PRIMARY KEY

    亲属

    ID INT NOT NOT PRIMARY KEY FOREIGN KEY

    SIRE_ID INT PRIMARY KEY FOREIGN KEY

    DAME_ID INT PRIMARY KEY FOREIGN KEY

我为上述事件道歉:我的SQL生锈了.我希望它能传达我正在思考的东西.



1> millenomi..:

嗯,这是一个"正常"的一对多关系,你建议的方法是解决它的经典方法.

请注意,两个表是非规范化的(我不能确切地指出超级密钥不是应该是其他密钥fsck-I-forgot部分的子集,但我很确定它在某处); 直观的原因是第一个元组中的元组最多匹配第二个元组中的元组,所以除非你有很多具有无效父亲和贵宾ID的动物,否则它在任何前景中都不是一个好的解决方案(它会恶化性能 - 需要连接 - 并且不会降低存储要求).

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有