任何人都可以帮助我了解什么是mysql中的规范化,在这种情况下以及我们需要如何使用它。
提前致谢。
我试图在这里尝试用外行术语解释标准化。首先,它适用于关系数据库(Oracle,Access,MySQL),因此不仅适用于MySQL。
规范化是要确保每个表都只有最小的字段并摆脱依赖关系。假设您有一个员工记录,而每个员工都属于一个部门。如果将部门与员工的其他数据一起存储为字段,则会遇到问题- 如果删除部门,会发生什么?您必须更新所有部门字段,并且有机会出错。如果某些员工没有部门(也许是新分配的)怎么办?现在将有空值。
因此,简而言之,标准化是要避免字段为空,并确保表中的所有字段仅属于所描述数据的一个域。例如,在雇员表中,这些字段可以是ID,姓名,社会保险号,但是这三个字段与部门无关。仅员工ID描述该员工所属的部门。因此,这意味着员工所在的部门应该在另一个表中。
这是一个简单的规范化过程。
EMPLOYEE ( < employee_id >, name, social_security, department_name)
如所解释的,这没有被标准化。规范化的形式可能看起来像
EMPLOYEE ( < employee_id >, name, social_security)
在这里,Employee表仅负责一组数据。那么,我们在哪里存储员工所属的部门?在另一张桌子
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )
这不是最佳的。如果部门名称更改怎么办?(美国政府一直在发生这种情况)。因此最好这样做
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id ) DEPARTMENT ( < department_id >, department_name )
有第一范式,第二范式和第三范式。但是,除非您正在学习数据库课程,否则我通常只会采用我能理解的最规范的形式。
希望这可以帮助。