gpt4 book ai didi

mysql - MYSQL 中的规范化

转载 作者:IT老高 更新时间:2023-10-28 12:59:46 25 4
gpt4 key购买 nike

什么是 MySQL 中的规范化,在什么情况下以及我们需要如何使用它?

最佳答案

我在这里尝试用外行的术语来解释规范化。首先,它适用于关系数据库(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 )

有第一范式、第二范式和第三范式。但除非你正在学习数据库类(class),否则我通常只会选择我能理解的最规范的形式。

希望这会有所帮助。

关于mysql - MYSQL 中的规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com