学生应该是 DBMS 中的弱实体吗?

Should student be a weak entity in DBMS?

我正在构建一个学生门户项目的以下数据库。我是数据库的新手,但我非常了解这些概念。我不想问在我的图表中学生应该是一个弱实体,因为它取决于部门。如果没有部门,那么该部门将没有任何学生。

除了我的主要问题,我对出勤率和成绩 Table 有点困惑。我是否正确地关联了它们?它们的属性是否充分且正确?我知道我的要求很高,但您能否查看我的图表并向我提供改进它的建议,即使它需要从头开始制作。 谢谢

学生不需要是弱实体集。虽然弱实体集暗示存在依赖性,但存在依赖性并不意味着弱实体集。常规实体集也可以完全参与。

与其查看存在依赖性,不如查看标识。弱实体集不能单独通过自身属性来识别,它们依赖于外键(通常与弱键结合)来标识。当实体集具有像 Roll ID 这样的独立标识(代理 ID 始终是独立的)时,它们就是常规实体。

您似乎将实体集与 table 混淆了,这可能是由于您使用的混合符号。如果我没看错你的模型,GradesStudentCourses 之间的关系,因为它有一个由两个外键组成的主键。但是,您的图表仅通过不必要的 has 关系将其 link 发送到 Student

您的 table 中也有嵌入的关系,例如CoursesDepartment FK,但你没有 link 图中的两个。 Enrolls 需要它自己的 table,但您没有显示与图中其他多对多关系不同的关系。

AttendanceGrades一样,表示StudentCourses之间的关系。您显示与 Department 的关联,但不表示 FK。虽然在原始 ER 表示法中我们从不将外键表示为属性,但在您的图表中这与您的 tables 的其余部分不一致。

编辑:

下面是一个示例,说明如何将 Grades 表示为 StudentCourses 之间的关系。我使用原始的 ER 表示法,因为我没有实现您的表示法的工具。

出勤率 table 应链接到课程和学生而不是部门,如图所示。