在数据库关系模式中如何处理递归关系N:M

时间:2018-11-10 20:40:51

标签: database database-design relational-database entity-relationship

当我们具有 N:M递归关系时,创建关系模式的最佳方法是什么?

在我搜索过的各种书籍中,他们分析了1:1和1:N的递归关系,但对于N:M几乎没有。

我应该像对待传统的N:M非递归关系一样将其视为新的关系吗?

例如,在这种递归关系中,最好:

A。创建新关系

INVITE( InviterId,InviteeId ,AcceptanceDate,InvitationDate)-以粗体显示主键。在这种情况下,它们也是外键。

////

B。在个人实体中包含此关系

PERSON( Id ,密码,InviterId,InviteeId,AcceptanceDate,InvitationDate)。

///

enter image description here

1 个答案:

答案 0 :(得分:0)

定义是递归的,不是关系/关联。您似乎在谈论FK(外键)周期或FK引用其自己的表的特殊情况。 FK约束表示值在其他地方显示为PK / UNIQUE。替代地,满足一种关系的值仅以一种方式满足另一种关系。从关系设计的角度来看,这没有什么特别的。当显式/声明的FK图不是树时,大多数SQL DBMS都是不必要的。

是否可以合并表取决于您正在使用的信息建模和数据库设计方法以及相关的数据库设计原则。有许多不同的“传统”。查找并遵循有关信息建模,关系模型和数据库设计的已出版的学术教科书。 (数十个免费在线版本,还有幻灯片和课程。)PS用于管理设计的工具的信息和手册并不构成如何设计的介绍。

您提供的图是Chen原始的真实纯ER(实体关系)图。在这种方法下,您不能将实体和关系合并为关系,因为实体需要具有自己的框和表。但是您可以在关系模型中使用伪ER方法,而在产品中不使用菱形的伪ER方法中,也可以在允许从Chen图进行映射的更多选择中使用方法。