答案 0 :(得分:2)
给出您的数据集的好问题。请记住,标准化的重点是减少重复。 3NF通常是最好的方式。但根据我的经验,我发现非常将重复的值拉出到另一个表中,如果它将是该表中的唯一值,则没什么好处。以您最重复的列emp_type为例。如果你将它标准化为一个单独的表,它将如下所示:
Emp_Type_Id | Emp_type
------------------------
1 | Manager
2 | Engineer
3 | Tech Support
您当前的表格如下:
Emp_ID | Emp_Name | Salary | Emp_Type_Id | Emp_Skill
----------------------------------------------------
1 | raj | 90000 | 1 | Department
2 | ravi | 50000 | 2 | Software
3 | shyam | 70000 | 2 | Hardware
.
.
.
这在技术上比以前更加规范化,因为在数据库中不再重复emp_type值。但是处理单独的表和单个值的关系会更加麻烦。如果emp_type还包括其他信息,例如Valid_Salary_Range,Department_Location等,那么最好将其标准化为单独的表。但是,如果它只是一个正常化的值,那么存储值与存储指向该值的ID之间的区别是什么?在我看来,这是一个毫无意义的额外步骤。
长话短说,我根本不会将你的桌子标准化,它已经标准化到足够的水平。