【问题标题】:model a entity relationship n:m为实体关系建模 n:m
【发布时间】:2014-08-23 21:46:37
【问题描述】:

我有一个或多个实体“主题”,它可以与多个实体“主题”相关,以这种方式在大学之间进行等价:

示例 1: 主题1,主题2 主题A,主题B,主题C

示例 2: 主题1 主题B,主题C

示例 3: Subject3,Subject1 SubjectA

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

我这样做的第一个方法:

Subject:IdSubject,... 另一个字段。

Subject_relation:idsubject_a,idsubject_b,idrelation

等价:等价,idrelation

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

id_relation idsubject_a idsubject_b

      1           subject1          SubjectB

      1           subject1          SubjectC

还好吗?

【问题讨论】:

    标签: sql database entity-relationship


    【解决方案1】:

    在我看来,您需要对 subject_group 的概念进行建模。 IE。一组主题。

    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)
    

    这是基本模型。听起来你真正想要的东西可能更复杂。例如,我认为您可能希望学科组仅限于单一学院提供的学科组。

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 2020-12-07
      • 2023-04-03
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多