【发布时间】:2011-06-06 06:29:20
【问题描述】:
现在,我有一张桌子:
Id - CollegeName - CourseName
此表未标准化,因此我每 1 所大学都有很多课程
我需要将其规范化为两个表:
Colleges: CollegeID - CollegeName
Courses: CourseID - CollegeID - CourseName
有没有简单的方法可以做到这一点?
谢谢
【问题讨论】:
-
我想规范化你的意思是第三范式,但你的示例代码并没有违反这一点。没有仅依赖于 CollegeName 的字段。如果还有一个 CollegeMailingAddres 列,那将违反 3NF。
-
@Andomar 是的,但有很多原因表明这种重构仍然有益。
-
@Martin:规范化因增加复杂性而臭名昭著。进入新课程的表格现在必须接触两张桌子而不是一张。听起来还不错,但确实加起来了。
-
@Andomar - 为了获得页面上的最大行数,我宁愿重复
int多次而不是nvarchar(50)或其他任何东西。此外,如果一所大学更名或需要防止其名称中出现多个细微差别,那么复杂性又如何呢? -
感谢大家的帮助。在这里,甚至不是更正确的问题,我真的需要这种形式:)
标签: sql sql-server-2008 normalization