为了账号安全,请及时绑定邮箱和手机立即绑定

MYSQL中的规范化

/ 猿问

MYSQL中的规范化

米琪卡哇伊 2019-09-06 11:07:11

MYSQL中的规范化

任何人都可以帮助我知道mysql中的规范化是什么,在哪种情况下以及我们如何使用它...

提前致谢。


查看完整描述

3 回答

?
慕莱坞森

我试图在这里用外行术语来解释规范化。首先,它适用于关系数据库(Oracle,Access,MySQL),因此它不仅适用于MySQL。

规范化是为了确保每个表都有唯一的最小字段并摆脱依赖关系。想象一下,你有一份员工记录,每个员工都属于一个部门。如果将部门存储为字段以及员工的其他数据,则会出现问题 - 如果部门被删除会发生什么?您必须更新所有部门字段,并且有错误的机会。如果一些员工没有部门(可能是新任命的),该怎么办?现在将有空值。

因此,简而言之,规范化是避免使字段为空,并确保表中的所有字段仅属于所描述的数据的一个域。例如,在employee表中,字段可以是id,name,社会安全号,但这三个字段与部门无关。只有员工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 )

有第一范式,第二范式和第三范式。但除非你正在学习数学课程,否则我通常会选择我能理解的最正常化的形式。

希望这可以帮助。



查看完整回答
反对 回复 2019-09-10
?
哈士奇WWW

规范化不仅适用于MYSql。它是一般的数据库概念。

规范化是在数据库中有效组织数据的过程。规范化过程有两个目标:消除冗余数据(例如,将相同数据存储在多个表中)并确保数据依赖性有意义(仅将相关数据存储在表中)。这两个都是有价值的目标,因为它们减少了数据库消耗的空间量并确保数据以逻辑方式存储。

SQL中的普通表单如下所示。

第一范式(1NF):如果一个关系只有单值属性,则该关系称为1NF,不允许重复也不允许数组。

第二范式(2NF):如果一个关系在1NF中并且每个非关键属性完全依赖于主键,则该关系被称为2NF。

第三范式(3NF):如果关系是2NF并且没有传递依赖关系,我们说关系是3NF。

Boyce-Codd Normal Form(BCNF):当且仅当关系中的每个行列式都是候选键时,才称该关系在BCNF中。

第四范式(4NF):如果它在BCNF中并且不包含多值依赖关系,则称该关系在4NF中。

第五范式(5NF):当且仅当关系的候选键隐含关系中的每个连接依赖时,才称该关系在5NF中。

域密钥正规形式(DKNF):如果没有所有修改异常,我们说关系在DKNF中。插入,删除和更新异常都会受到修改异常的影响

塞尔也

数据库规范化基础



查看完整回答
反对 回复 2019-09-10
?
潇湘沐

这是一种通过消除重复来确保数据保持一致的技术。因此,相同信息存储在多个表中的数据库未进行规范化

请参阅维基百科有关数据库规范化的文章。

(这是关系数据库的一般技术,不是MySQL特有的。)


查看完整回答
反对 回复 2019-09-10

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信