我想在一个对象“Human”和它的相同类型的父对象之间建立多对多关系,我想知道这种关系是否存在于现实生活中的项目中,或者经验丰富的开发人员是如何做的接近这样的要求? 完成这项任务的最佳设计是什么? 谢谢!
在关系数据库中,通常多对多关系需要第二个表。
例如:
CREATE TABLE Parentage (
child_id INT NOT NULL,
parent_id INT NOT NULL,
PRIMARY KEY (child_id, parent_id),
FOREIGN KEY (child_id) REFERENCES Human (id),
FOREIGN KEY (parent_id) REFERENCES Human (id)
);
这是存储数据的关系方式,其优点是数据冗余最少,并且以合理的效率支持各种查询。
它还支持真正的多对多关系,一个孩子可以有很多父母(可能只有两个亲生父母,但有继父母、监护人和寄养人等等,可能有无限数量的人)作为父母),以及每个父母都有很多孩子。
如果您想针对“特定”查询优化表设计,这也许是可能的。最好的设计取决于您需要优化的查询,但您尚未描述需要运行的任何特定查询。