您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MYSQL中的规范化

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 )

有第一范式,第二范式和第三范式。但是,除非您正在学习数据库课程,否则我通常只会采用我能理解的最规范的形式。

希望这可以帮助。

MySQL 2022/1/1 18:16:10 有454人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶