混淆对象的关系

时间:2012-02-13 15:17:18

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

我有以下一种情况:

每个学生都可以报名参加多个班级。 每节课可以容纳一个以上的学生。

以下哪一项是可能的答案:

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

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

任何评论都很明显,

提前知道,米兰门德帕拉

3 个答案:

答案 0 :(得分:1)

M:N

从实体的角度看问题,找到答案。

  • 每个class都可以有多个 student个实体。我们有1:M
  • 每个student都可以在很多 class中注册。那也是1:M

在规范化的数据库中,您有ClassStudent定义(最低限度),如下所示:

Class: Id, Name

Student: Id, FirstName, LastName

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

StudentClass: StudentId, ClassId

希望有所帮助。

答案 1 :(得分:0)

这是3号。

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

答案 2 :(得分:0)

答案是

  

3 M到N

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

查看有关database normalization

的文章

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