同类型对象之间的多对多关系

问题描述 投票:0回答:1

我想在一个对象“Human”和它的相同类型的父对象之间建立多对多关系,我想知道这种关系是否存在于现实生活中的项目中,或者经验丰富的开发人员是如何做的接近这样的要求? 完成这项任务的最佳设计是什么? 谢谢!

mysql oop database-design backend relationship
1个回答
0
投票

在关系数据库中,通常多对多关系需要第二个表。

例如:

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)
);

这是存储数据的关系方式,其优点是数据冗余最少,并且以合理的效率支持各种查询。

它还支持真正的多对多关系,一个孩子可以有很多父母(可能只有两个亲生父母,但有继父母、监护人和寄养人等等,可能有无限数量的人)作为父母),以及每个父母都有很多孩子。

如果您想针对“特定”查询优化表设计,这也许是可能的。最好的设计取决于您需要优化的查询,但您尚未描述需要运行的任何特定查询。

© www.soinside.com 2019 - 2024. All rights reserved.