【发布时间】:2015-06-10 00:25:54
【问题描述】:
请考虑以下情况。
我们有一个 0NF 表
学生教师表:
StudentName StudentDepartment StudentDepartmentAdd TeacherName TeacherDepartment TeacherDepartmentAdd
John CS London Dave Eng, CS Oxford
Mike CS London Dave Eng, CS Oxford
Chris Eng Oxford Dave Eng, CS Oxford
理想情况下,标准化后我希望有类似的表格
学生桌:
StudentName Department TeacherName
John CS Dave
Mike CS Dave
Chris Eng Dave
教师桌:
Name
Dave
教师部门表:
TeacherName DepartmentName
Dave CS
Dave ENG
部门表:
Name Address
CS London
ENG Oxford
但是,如果我遵循 3NF 的规范化。 我会得到的
学生桌:
StudentName Department TeacherName
John CS Dave
Mike CS Dave
Chris Eng Dave
DepartmentForStudent 表:
Name Address
CS London
ENG Oxford
教师桌:
Name
Dave
TeacherToDepartment 表:
TeacherName DepartmentName
Dave CS
Dave ENG
DepartmentForStudent 表:
Name Address
CS London
ENG Oxford
我的问题是,在数据库规范化的哪个步骤(1NF、2NF、3NF 等)中,我可以将 studentDepartement 与teacherDepartment 列合并/组合到一个表中以导出上述规范化形式?
换句话说,遵循规范化规则。我最终将拥有一个 StudentDepartment 表和一个 TeacherDepartment 表,而不是一个学生和教师的 Department 表
【问题讨论】:
-
规范化不会引入“TeacherID”、“DepartmentId”等新列
-
@MikeSherrill'CatRecall' 是的。好点子。我已经更新了它。但是问题仍然有效。
-
@JonathanLeffler 不确定您的意思。 “StudentTeacherTable”是被规范化为下面几个表的表。
-
Student 表看起来不会被规范化,除非所有学生只允许有一位老师。 (其他评论撤回。)
-
通过 BCNF 标准化是基于函数依赖的。函数依赖是什么?
标签: database relational-database database-schema database-normalization