大家好我正在进行数据库练习,并且遇到了以下练习,我必须从给定的案例场景中创建一组数据表。但是我很难用粗体计算出属性:
为大学设计一个数据库来监控学生的进步 整个学习过程。学生正在攻读学位(如 BSc,MSc等)在模块化系统的框架内。大学提供 一些模块,每个模块的代码,标题,信用价值, 模块负责人,学术人员和他们来自的部门。模块由模块负责人协调,模块负责人与一个或多个人共享教学职责 讲师。讲师可以教授(并成为模块领导者)多个模块。 学生可以自由选择他们想要的任何模块,但必须遵守以下规则 观察:一些模块需要一些必要的模块 程序有必修模块。数据库也包含一些 有关学生的信息,包括学生人数,姓名,地址, 他们学习的学位,以及他们过去的表现(即所采用的模块和 考试结果)。
到目前为止,我所拥有的表格是:
大学
ModuleCode,ModuleTitle,CreditValue,Department
模块
ModuleCode,ModuleTitle,LecturerID
讲师
LecturerID,ModuleCode,ModuleTitle
学生
StudentID,姓名,地址,DegreeCode
度
DegreeCode,DegreeType,DegreeTitle
性能
ModuleCode,ModuleTitle,StudentID,Result
我有什么遗漏或可以改进吗?
答案 0 :(得分:1)
一些想法(没有特别的顺序):
ModuleId
和ModuleTitle
之间存在一对一的关系。也就是说,ModuleId
唯一标识ModuleTitle
。在这种情况下,您不应该在识别模块的任何地方同时使用ModuleId
和ModuleTitle
,而只使用唯一标识值。 (除了在ModuleId
和ModuleTitle
之间的关系定义的表中。)ModuleId
作为讲师表的一部分。看到这里的问题?LecturerId
是否为moduleLeader?如果是这样,那就说。外键并不总是与主键同名 - 一般来说这是一个好主意,但是你要澄清这是一个特殊的讲师。或者,您可能希望添加一个表格,明确指出哪些讲师是模块领导者。address
称为字段要复杂得多。最后一点有些挑剔,但应该解决其余问题。我认为你还有一些重要的工作要解决这些问题。
一般来说,我认为你需要将其分解为更多的表,代表每个单独的实体(模块,讲师,部门,然后构建表来定义它们之间的关系。
答案 1 :(得分:1)
第一遍,我会读到这样的描述。 (可能的表格用粗体显示,有些用粗体表示不止一次。)
为大学设计一个数据库来监控学生 进展贯穿课程。 学生正在学习 在一个框架内的度(如BSc,MSc等) 模块化系统。该大学提供了许多模块 以其代码,头衔,信用价值,模块负责人为特征, 学术人员和部门他们来自。一个模块是 由一个模块负责人协调,他与一个或多个人分享教学职责 更多讲师。讲师可以教授(并成为模块领导者)更多 比一个模块。学生可以自由选择他们想要的任何模块 必须遵守以下规则:某些模块需要 必备模块和一些学位课程必修 模块即可。该数据库还包含一些有关的信息 学生,包括他们的学号,姓名,地址,学位 他们研究,以及他们过去的表现(即采取的模块和 考试成绩)。
由于这是针对一所大学的,我可能不会创建一个大学的表格,尽管我可以做出任何一个好的案例。