数据库MySQL-数据规范化

1.4 数据规范化

1.4.1 第一范式:确保每列原则性

第一范式:的目标是确保每列的原子性,一个字段表示一个含义

在这里插入图片描述

思考如下表是否满足第一范式

在这里插入图片描述

思考:地址包含省、市、县、地区是否需要拆分?

答:如果仅仅起地址的作用,不需要统计,可以不拆分;如果有按地区统计的功能需要拆分。

在实际项目中,建议拆分。

1.4.2 第二范式:非键字段必须依赖于键字段

第二范式:在满足第一范式的前提下,要求每个表只描述一件事情

在这里插入图片描述

思考:如下表设计是否合理

在这里插入图片描述

1.4.3 第三范式:消除传递依赖

第三范式:在满足第二范式的前提下,除了主键以外的其他列消除传递依赖。

在这里插入图片描述

思考:如下表设计是否合理?

在这里插入图片描述

结论:不满足第三范式,因为语文和数学确定了,总分就确定了

1.4.4 反3NF

范式越高,数据冗余越少,但是效率有时就越地下,为了提高运行效率,可以适当让数据冗余。

学号 姓名 语文 数学 总分
1 李白 77 88 165

上面的设计不满足第三范式,但是高考分数表就是这样设计的,为什么?

答:高考分数峰值访问量非常大,这时候就是性能更重要。当性能和规范化冲突的时候,我们首选性能。这就是“反三范式”。

小结

1、第一范式约束的所有字段

2、第二范式约束的主键和非主键的关系

3、第三范式约束的非主键之间的关系

4、范式越高,冗余越少,但表业越多。

5、规范化和性能的关系 :性能比规范化更重要

1.4.5 例题

需求

假设某建筑公司要设计一个数据库。公司的业务规
则概括说明如下:
公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等
公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等
公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)

标识实体

1、工程
2、职工
3、工时
4、小时工资率

在这里插入图片描述

发布了1877 篇原创文章 · 获赞 1997 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/105135459