【问题标题】:confusion with Relationship of objects与对象的关系混淆
【发布时间】:2012-03-04 23:54:45
【问题描述】:

我有以下一种情况:

每个学生可以注册多个班级。 每个班级可以容纳一个以上的学生。

以下哪个是可能的答案:

(1) 1 to N
(2) M to N to 1
(3) M to N
(4) Anything else

如果答案是(4),那么其他答案是可能的......

任何可感知的 cmets,

提前致谢,米兰门德帕拉

【问题讨论】:

  • 你不认为其中的“1”与“不止一个”的 2 个条件无关吗?

标签: sql database database-design orm entity-relationship


【解决方案1】:

现在是 M:N。

从两个实体的角度来看问题,以找到答案。

  • 每个class 可以有许多 student 实体。所以我们有1:M。
  • 每个student 都可以注册许多 class。这也是1:M。

在规范化数据库中,Class 和 Student 定义(最少)如下:

Class: Id, Name

Student: Id, FirstName, LastName

如果您将 Class 上的外键添加到 Student,您只允许每个 Class 有一个 Student。如果您将外键放在Student 到Class 上,那么您一次只允许每个Student 使用一个Class。答案是使用关联表作为这是一个 M:N 关系:

StudentClass: StudentId, ClassId

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    它是 3 号。

    多个学生 (M) 呼叫注册多个班级 (N)。

    【讨论】:

      【解决方案3】:

      答案是

      3 M 到 N

      您需要定义一个包含字段class_id 和student_id 的表来存储关系。

      查看这篇关于database normalization的文章

      http://en.wikipedia.org/wiki/Database_normalization

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-21
        • 2015-06-26
        • 2018-02-03
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        相关资源
        最近更新 更多