如何正确建模 N:N:1 三元关系?

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

我正在研究包含这种三元关系的 ER 模型。我知道对这种类型的关系建模的一种选择是将该关系转换为弱实体,然后使用二元关系将该实体与其他三个实体连接起来。

我如何连接它们,以及什么类型的二元关系?

N:N:1 ternary model

database database-design entity-relationship
2个回答
2
投票

像这样的……

CREATE TABLE STUDY (

    STUDENT_ID int REFERENCES STUDENT,
    SUBJECT_ID int REFERENCES SUBJECT,
    DEPARTMENT_ID int NOT NULL REFERENCES DEPARTMENT,

    PRIMARY KEY (STUDENT_ID, SUBJECT_ID)

);

看看我们如何有一个主键 not 跨越所有列。 DEPARTMENT_ID 从主键中省略,这意味着我们可以:

  • 具有各种 STUDENT_ID/SUBJECT_ID 组合(多行),
  • 但是对于给定的 STUDENT_ID/SUBJECT_ID 组合,我们只能有一个 DEPARTMENT_ID(因为一行只能包含一个 DEPARTMENT_ID)。

稍微换个说法:给定的学生只能学习给定的科目一次,而且这发生在特定的部门。


0
投票

你应该创建一个额外的关系 R (studnr, subjectnr, departementnr) 由于 1:N:N 约束,每个部门只能使用一次实例,因此 departmentnr 应该是唯一的主键属性。

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