数据库中的规范化

时间:2015-08-24 19:50:20

标签: database-design database-normalization

我有一张桌子。我怎样才能使其正常化。

enter image description here

1 个答案:

答案 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之间的区别是什么?在我看来,这是一个毫无意义的额外步骤。

长话短说,我根本不会将你的桌子标准化,它已经标准化到足够的水平。