开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
前言
上篇我们学习了MySQL中的数据库优化之设计规范。有兴趣的小伙伴可以阅读(MySQL中的数据库设计规范(三))。
下面我们继续学习MySQL中的数据库设计规范。
第二范式(2NF)
举例三
一张订单表,存在主键订单id和产品id。但是这样违反了第二范式,因为有非主键属性仅依赖于候选键(或主键)的一部分。例如:可以仅通过订单id找到订单的订购日期,顾客id和公司名称,而没有必要再去使用产品id。
可以通过删除订单表中主键产品id,在订单详情表中增加主键,外键订单id和主键产品id。这样就可以符合第二范式。
第三范式(3NF)
非主键字段,不能存在间接依赖。
举例一
部门信息表中包含字段:部门编号,部门名称,部门简介等信息。
员工信息表中包含字段:员工编号,姓名,部门编号。列出部门编号后就不能再将部门名称,部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式也应该构建它,否则就会有大量的数据冗余。
举例二
商品表中包含字段,商品id,商品类别id,商品类别名称,商品名称,商品价格。这里商品类别名称依赖于商品类别编号,不符合第三范式。这里应该新增一张商品类别表,包含商品类别id和商品类别名称。商品表去掉字段商品类别名称。商品表通过商品类别id字段与商品类别表进行关联。
今天先学习到这里,明天继续。