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

时间:2017-08-04 14:04:55

标签: database database-design entity-relationship

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

N:N:1 ternary model

1 个答案:

答案 0 :(得分: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)

);

了解我们如何拥有涵盖所有列的主键。主键中省略了DEPARTMENT_ID,这意味着我们可以:

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

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