我可以使用什么属性将此数据库导入3NF?

时间:2015-10-23 00:56:05

标签: sql sql-server normalization database-normalization 3nf

我正在尝试设计一个数据库,作为我大学工作的一种投资组合。数据库需要包含我目前所在课程的详细信息,我已完成的模块的等级,并包含我在这些模块中完成的工作示例。数据库必须在3NF。

数据库只会提供有关一个人的特征信息,因此使用student_ID或某些东西对我来说似乎不合逻辑。

我原来的设计很长一段时间:

  • [课程]
  • Course_Title(PK),
  • Start_Date,
  • End_Date,

  • [模块]

  • MODULE_TITLE(PK)
  • Module_Grade
  • COURSE_TITLE(FK)

  • [分配]

  • ASSIGNMENT_TITLE(PK)
  • Assignment_Grade
  • Assignment_File
  • MODULE_TITLE(FK)

我知道使用这种设计意味着该表将包含重复数据,因此不在3NF中。关于我可以介绍哪些可能的属性或我应该如何建模的任何指针都将非常感激。

1 个答案:

答案 0 :(得分:2)

规范化需要了解基本关系的所有功能依赖性......以及知道如何规范化等其他内容。 (即定义和程序。)你没有提到任何这些。因此,您需要阅读您提供的参考资料。有很多.ppt& .pdf文件在线,例如来自utexas.edu& stanford.edu,甚至是在线教科书。

你还提到了一些无关紧要的事情,所以你似乎有一些误解。 Repeating a subtuple value in a base relation happens all the time and does not imply redundancy.冗余与多个(现在或不存在)元组断言相同。 Normalization does not involve adding new attributes.它只是将旧的分配给新的基础关系。

知道这是否在3NF中,你只会得到标记。您需要了解为什么表格或数据库不是给定的正常形式,如何将其添加到一个表格或数据库中。从你的问题开始,即从无到有,为什么&如何"等同于介绍性教科书的规范化表述。