-1

大家好,我正在做一个数据库练习,遇到了以下练习,我必须从给定的案例场景中创建一组数据表。但是我很难用粗体来计算属性:

将为大学设计一个数据库,以监控学生在整个学习过程中的进步。学生正在模块化系统的框架内攻读学位(如理学士、理学硕士等)。该大学提供了许多模块,每个模块的特点是其代码、标题、学分、模块负责人、学术人员和他们来自的部门。模块由模块负责人协调,负责人与一名或多名讲师分担教学职责。讲师可以教授多个模块(并担任模块负责人)。学生可以自由选择他们想要的任何模块,但必须遵守以下规则:一些模块需要先修模块,而一些学位课程有必修模块。该数据库还将包含有关学生的一些信息,包括他们的学号、姓名、

到目前为止,我拥有的表格是:

大学

ModuleCode、ModuleTitle、CreditValue、部门

模块

ModuleCode、ModuleTitle、LecturerID

讲师

LecturerID、ModuleCode、ModuleTitle

学生

StudentID、姓名、地址、学位代码

程度

学位代码、学位类型、学位标题

表现

ModuleCode、ModuleTitle、StudentID、结果

有什么我错过或可以改进的吗?

4

2 回答 2

1

在第一遍时,我会阅读这样的描述。(可能的表格用粗体表示,有些表用粗体表示不止一次。)

将为大学设计一个数据库,以监测学生在整个学习过程中进步学生正在模块化系统的框架内攻读学位如理学士、理学硕士等)。该大学提供了许多模块,每个模块都有其代码、职称、学分、模块负责人、 学术人员和他们来自的部门。模块由模块负责人协调,负责人与一名或多名讲师分担教学职责. 讲师可以教授多个模块(并担任模块负责人)。学生可以自由选择他们想要的任何模块,但必须遵守以下规则:一些模块需要 先修模块,而一些学位课程有必修模块。该数据库还将包含有关 学生的一些信息,包括他们的学号、姓名、地址、他们学习的学位以及他们过去的表现(即,所学的模块和 考试结果)。

由于这是针对一所大学的,我可能不会创建大学表,尽管我可以提出一个很好的案例。

于 2012-06-10T18:20:01.927 回答
1

一些想法(排名不分先后):

  • ModuleId我会假设和之间存在一对一的关系ModuleTitle。也就是说, aModuleId唯一标识 a ModuleTitle。在这种情况下,您不应该在标识模块的任何地方都使用两者ModuleIdModuleTitle而应仅使用唯一标识值。ModuleId(在定义和之间的关系的表中除外ModuleTitle。)
  • 讲师可以教授多个模块。但是,您已将ModuleId列为 Lecturers 表的一部分。看到这里的问题了吗?
  • 模块表中的是否LecturerId打算成为模块领导者?如果有,就这么说吧。外键不必总是与主键同名——一般来说这是个好主意,但你要澄清这是一个特殊的讲师。或者,您可能想添加一个表格,专门标识哪些讲师是模块负责人。
  • 我在这里看不到任何实现“某些模块需要先决条件模块,而某些学位课程具有强制性模块”要求的东西。
  • In 将“他们来自的部门”解释为指的是学术人员,而不是模块本身。尚不清楚一个模块只能由一个学术部门的人教授。
  • 在现实世界中,地址比仅仅address作为一个字段要复杂得多。

最后一点有点挑剔,但其余的应该解决。我认为你仍然需要做一些重要的工作来解决这些问题。

一般来说,我认为您需要将其分解为更多表格,以表示每个单独的实体(模块、讲师、部门,然后构建表格来定义它们之间的关系。

于 2012-06-10T17:42:34.777 回答