我正在构建一个学生门户项目的以下数据库。我是数据库的新手,但我非常了解这些概念。我不想问,在我的图表中,学生应该是一个弱小的实体,因为它取决于部门。如果没有部门,则不会成为该部门的任何学生。
除了我的主要问题,我对ATTENDANCE和GRADES表感到有点困惑。我是否正确地将它们关联起来并且它们的属性是否足够正确我知道我要求的很多,但是你可以查看我的图表并提供改进的建议,即使它是从头开始制作的。 感谢。
答案 0 :(得分:2)
学生不需要是弱实体集。虽然弱实体集暗示存在依赖性,但存在依赖性并不意味着弱实体集。常规实体集也可以完全参与。
不要查看存在依赖关系,而是查看标识。弱实体集不能仅通过它们自己的属性来识别,它们依赖于外键(通常与弱键组合)来识别身份。当实体集具有独立的身份,如Roll ID
(代理ID始终是独立的)时,它们就是常规实体。
您似乎将实体集与表格混淆,可能是由于您使用的混合符号。如果我正确地阅读了您的模型,Grades
是Student
和Courses
之间的关系,因为它有一个由两个外键组成的主键。但是,您的图表仅通过不必要的Student
关系将其链接到has
。
您的表格中也存在嵌入关系,例如Courses
有一个Department
FK,但您没有在图表中链接这两个。 Enrolls
需要自己的表,但与图中其他多对多关系不同,您不会显示一个表。
Attendance
与Grades
一样,代表Student
和Courses
之间的关系。您显示与Department
的关联,但不表示FK。在原始的ER表示法中,我们从不将外键指示为属性,在图表中,这与表的其他大部分表示不一致。
编辑:
以下是如何将Grades
表示为Student
和Courses
之间关系的示例。我使用了原始的ER符号,因为我没有实现你的符号的工具。