我正在尝试理解Crow的数据库设计(ER图)的脚符号。我想为一个学生(实体/表)可以注册多个课程( COURSES_ENROLLED表/实体)的场景创建一个ER图。
我已经创建了下面的ER图。

现在,对于适用于哪个“连接器符号”的场景,标记为(1)或(2)的?任何解释都会有很大帮助。
发布于 2016-04-06 12:20:32
我假设您也有一个实体COURSE (因为courseId作为COURSES_ENROLLED中的外键)。所以COURSES_ENROLLED把一个学生和那个学生注册的一门课程联系在一起,对吗?
这是由图中的备选方案(1)表示的。每个COURSES_ENROLLED实例只看到一个学生实例,而每个学生则可以看到许多相反的实例。
如果您没有中间实体并直接将STUDENT链接到COURSE,那么您的备选方案(2)将是合适的。在这两者之间,多重性是m:n,所以两端都有一只乌鸦的脚。但是courseId将是正确实体的主键,它应该被称为COURSE。
顺便说一句,检查你的约束在(1)和(2)中,学生必须至少上一门课程,是否符合你的功能要求。很可能,每个学生都会在某个时间点至少注册一门课程,但是如果你把这作为数据模型中的一个约束,它将需要一直保持下去。因此,你现在的模式不允许仅仅创造一个学生,而不把她与至少一门课程同时联系起来。
https://stackoverflow.com/questions/36418133
复制相似问题