我有一个或多个实体“主体”可以与几个实体“主体”相关,以这种方式在大学之间形成对等:
示例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
好吗?
答案 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)
这是基本型号。听起来你真正想要的东西可能更复杂。例如,我认为您可能希望主题小组仅限于一所大学提供的小组。