数据表运用

时间:2012-06-10 15:59:15

标签: sql database

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

为大学设计一个数据库来监控学生的进步 整个学习过程。学生正在攻读学位(如 BSc,MSc等)在模块化系统的框架内。大学提供 一些模块,每个模块的代码,标题,信用价值, 模块负责人,学术人员和他们来自的部门。模块由模块负责人协调,模块负责人与一个或多个人共享教学职责 讲师。讲师可以教授(并成为模块领导者)多个模块。 学生可以自由选择他们想要的任何模块,但必须遵守以下规则 观察:一些模块需要一些必要的模块 程序有必修模块。数据库也包含一些 有关学生的信息,包括学生人数,姓名,地址, 他们学习的学位,以及他们过去的表现(即所采用的模块和 考试结果)。

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

大学

ModuleCode,ModuleTitle,CreditValue,Department

模块

ModuleCode,ModuleTitle,LecturerID

讲师

LecturerID,ModuleCode,ModuleTitle

学生

StudentID,姓名,地址,DegreeCode

DegreeCode,DegreeType,DegreeTitle

性能

ModuleCode,ModuleTitle,StudentID,Result

我有什么遗漏或可以改进吗?

2 个答案:

答案 0 :(得分:1)

一些想法(没有特别的顺序):

  • 我原以为ModuleIdModuleTitle之间存在一对一的关系。也就是说,ModuleId唯一标识ModuleTitle。在这种情况下,您不应该在识别模块的任何地方同时使用ModuleIdModuleTitle,而只使用唯一标识值。 (除了在ModuleIdModuleTitle之间的关系定义的表中。)
  • 讲师可以教授多个模块。但是,您已将ModuleId作为讲师表的一部分。看到这里的问题?
  • 模块表中的LecturerId是否为moduleLeader?如果是这样,那就说。外键并不总是与主键同名 - 一般来说这是一个好主意,但是你要澄清这是一个特殊的讲师。或者,您可能希望添加一个表格,明确指出哪些讲师是模块领导者。
  • 我在这里看不到任何实现'某些模块需要必备模块和某些学位课程有必修模块要求的内容。
  • In会将“他们来自的部门”解释为指的是学术人员,而不是模块本身。目前尚不清楚模块只能由一个学术部门的人员教授。
  • 在现实世界中,地址要比将address称为字段要复杂得多。

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

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

答案 1 :(得分:1)

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

  

为大学设计一个数据库来监控学生   进展贯穿课程学生正在学习   在一个框架内的(如BSc,MSc等)   模块化系统。该大学提供了许多模块   以其代码,头衔,信用价值,模块负责人为特征,   学术人员部门他们来自。一个模块是   由一个模块负责人协调,他与一个或多个人分享教学职责   更多讲师。讲师可以教授(并成为模块领导者)更多   比一个模块。学生可以自由选择他们想要的任何模块   必须遵守以下规则:某些模块需要   必备模块和一些学位课程必修   模块即可。该数据库还包含一些有关的信息   学生,包括他们的学号,姓名,地址,学位   他们研究,以及他们过去的表现(即采取的模块和   考试成绩)。

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