【发布时间】:2010-09-14 16:01:11
【问题描述】:
如何为与自身具有一对多关系的实体构建表?具体来说,我正在开发一个跟踪动物繁殖的应用程序。每只动物都有一个ID;它还有一个父亲身份证和一个女士身份证。因此,从父系或母系到其后代,有可能是一对多的。我会倾向于这样的事情:
ID INT NOT NULL PRIMARY KEY
SIRE_ID INT
DAME_ID INT
并为那些购买并添加到种畜中的动物记录一个空值,并在表格中为其余的记录一个 ID。
所以:
- 谁能给我指一个 讨论的文章/网页 建模这种关系?
- ID 应该是 INT 还是某种类型 字符串? INT 中的 NULL 将 表示该动物没有 数据库中的父母,但一个字符串 具有特殊标志值的可能是 用于表示相同的事物。
-
这可能是最好的建模吗 通过两张桌子?我的意思是一张桌子 为动物和一个单独的 仅表明亲属关系的表格 e. g.:
动物
ID INT NOT NULL PRIMARY KEY
亲属关系
ID INT NOT NULL PRIMARY KEY FOREIGN KEY
SIRE_ID INT PRIMARY KEY FOREIGN KEY
DAME_ID INT PRIMARY KEY FOREIGN KEY
我为上述情况道歉:我的 SQL 生锈了。我希望它能表达我的想法。
【问题讨论】:
-
如果您使用的是 Oracle,请查找有关 connect_path 的信息。它是 sql 的扩展,允许进行“分层查询”,在 1 个查询中检索您想要的关系所喜欢的所有后代或祖先。
标签: database-design data-modeling table-structure