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

How to model properly N:N:1 ternary relationship?

我正在研究包含这种三元关系的 ER 模型。我知道对这种类型的关系建模的选项之一是将该关系转换为弱实体,然后使用二元关系将该实体与其他三个实体连接起来。我不知道该怎么做的是如何将它们与什么类型的二元关系联系起来。至少有人可以向我解释一下我该怎么做吗?

N:N:1 ternary model

像这样...

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

换句话说,给定的学生只能学习一次给定的科目,并且这种情况发生在特定的部门。