我正在尝试理解Crow的数据库设计符号(ER图)。我想为一个场景创建一个ER图,其中一个STUDENT(实体/表)可以注册多个课程(COURSES_ENROLLED表/实体)。
我创建了以下ER图。
现在,对于这种情况,"连接符号"是适用的,标有(1)或(2)的那个?任何解释都会有很大的帮助。
答案 0 :(得分:1)
我假设您还有一个实体COURSE
(因为courseId
中有COURSES_ENROLLED
作为外键。所以COURSES_ENROLLED
恰好将一名学生与该学生注册的一门课程联系起来,对吗?
这由图中的替代(1)表示。每个COURSES_ENROLLED
实例只能看到一个STUDENT实例,而每个学生可以反过来看到许多实例。
如果您没有中间实体并直接将STUDENT
链接到COURSE
,那么您的替代方案(2)将是合适的。在这些之间,多重性将是m:n,所以你的两端都会有一只乌鸦脚。但是courseId
将是正确实体的主键,它应该被称为COURSE
。
顺便说一下,检查在(1)和(2)中表达的约束,即学生必须注册至少一门课程,是否符合您的功能要求。可能每个学生将在某个时间点注册至少一门课程,但如果您将其作为数据模型中的约束包含在内,则需要始终保持 。所以你现在的模型不允许创建一个学生,而不是一次将她与至少一门课程联系起来。