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



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

我如何连接它们,以及使用哪种类型的二进制关系?

N:N:1 三元模型

像这样的东西...

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

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

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

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

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

最新更新