2012-06-10 68 views
-1

嗨,大家好我正在通过数据库练习,并遇到以下练习,我必须从给定的情况下创建一组数据表。但是我很难用粗体表示属性:数据表练习

数据库将被设计为一所大学在整个学习过程中监控学生的进度 。学生正在研究用于模块化系统的框架中一定程度的(如 理学,MSC,等)。该大学提供 多个模块,每个的特征在于它的代码,名称,信用值, 模块带头人,学术人员和他们来自部门。模块由一个模块领导谁共享教学任务与一个或多个 讲师协调。讲师可以教(和是一个模块的领导者)多于一个的模块更多。 学生可以自由选择他们希望的任何模块,但必须遵守以下规则: 观察到:某些模块需要先决条件模块,某些程度 程序具有必修模块。该数据库还包含一些关于学生的信息,包括他们的学生号码,姓名,地址,学习的 度,以及他们过去的表现(即考试成绩和考试成绩)。

到目前为止,我有这些表:

大学

ModuleCode,ModuleTitle,CreditValue,系

模块

ModuleCode,ModuleTitle,LecturerID

讲师

LecturerID,ModuleCode,ModuleTitle

学生

StudentID,姓名,地址,DegreeCode

DegreeCode,DegreeType,DegreeTitle

性能

ModuleCode,ModuleTitle,StudentID,结果

有什么,我错过了,也可以改善?

+1

@Downvoter - 请向OP澄清为什么你低估了。 – StuartLC

回答

1

的几点思考(排名不分先后):

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

最后一点有点挑剔,但其余的应该解决。我认为你们仍然有一些重要的工作来解决这些问题。一般来说,我认为你需要将它分解成更多的表格,以表示每个单独的实体(模块,讲师,部门,然后建立表格以定义它们之间的关系)。

1

在第一遍,我读到的描述是这样的。(黑体可能的表格,粗体一些不止一次。)

数据库是被设计为一所大学的监视学生进展整个学习课程学生正在研究 的(如BSc,MSc等)在模块化系统的框架内。这所大学提供了许多模块,每个 的特征在于它的代码,名称,信用值,模块领导学术人员部门它们从何而来。一个模块是 协调模块领导谁共享教学职责与一个或 更多讲师。讲师可以教授(并且是模块领导者)比一个模块更多的 。学生可以自由地选择他们想要的任何模块,但 以下规则必须遵守:一些模块需要 先决条件模块有的学位课程具有强制性 模块。该数据库还包含一些有关 学生包括他们的学生人数,姓名,地址,他们逐渐对学习 ,和他们过去的表现(即,采取模块和 考试成绩)。

由于这是一所大学,我可能不会创建一张大学表格,尽管我可以通过这种方式制定一个好的案例。