前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库MySQL-数据规范化

数据库MySQL-数据规范化

作者头像
cwl_java
发布2020-03-27 12:33:52
8640
发布2020-03-27 12:33:52
举报
文章被收录于专栏:cwl_Java

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、小时工资率

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.4 数据规范化
    • 1.4.1 第一范式:确保每列原则性
      • 1.4.2 第二范式:非键字段必须依赖于键字段
        • 1.4.3 第三范式:消除传递依赖
          • 1.4.4 反3NF
            • 1.4.5 例题
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档