模拟实体关系n:m

时间:2014-08-23 21:46:38

标签: sql database entity-relationship

我有一个或多个实体“主体”可以与几个实体“主体”相关,以这种方式在大学之间形成对等:

示例1: Subject1,subject2< -----------------> SubjectA,SubjectB,SubjectC

示例2: Subject1< ---------> SubjectB,SubjectC

示例3: Subject3,Subject1< ---------> SubjectA

它是一个完整的主题组合,一个有效的等价必须有所有必需的主题。我认为它是一个n:m的关系,但我不知道如何在表中建模。

首先,我这样做:

主题:IdSubject,......另一个字段。

Subject_relation:idsubject_a,idsubject_b,idrelation

等价:Idequivalence,idrelation

但表subject_relation看起来像(例如2)

id_relation      idsubject_a        idsubject_b

1 subject1 SubjectB 1 subject1 SubjectC
好吗?

1 个答案:

答案 0 :(得分:0)

听起来我需要对subject_group的概念进行建模。 I.E.一组科目。

subject
-------
PK idsubject int

subject_group
-------------
PK idsubject_group int

subject_group_member
--------------------
PK, FK idsubject_group int
PK, FK idsubject int

(您可以为subject_group_member添加一个单独的主键,并使两列成为一个独特的约束,而不是品味和其他建模考虑因素)

使用这些表格,您可以非常轻松地模拟主题组之间的等效性:

subject_group_equivalence
-------------------------
PK idsubject_group_equivalance int
FK idsubject_group_a int
FK idsubject_group_b int
UQ (idsubject_group_a, idsubject_group_b)

这是基本型号。听起来你真正想要的东西可能更复杂。例如,我认为您可能希望主题小组仅限于一所大学提供的小组。