MySQL数据库规范化(范式)

原始数据表

title publisher year author1 author2 author3
《细说PHP》 电子工业出版社 2009 高洛峰    
《细说JavaScript》 清华大学出版社 2013 高洛峰 颖欣  
《高并发的web站点》 电子工业出版社 2014 李文凯 张涛 李强强
《LAMP》兄弟连 北京师范大学出版社 2015 李超 李明  

第一范式:

(1)内容相似的数据必须消除(“消除”的办法是在创建一个数据表来存放他们)

(2)必须为每一组相关数据创建一个数据表

(3)每条数据表记录必须用一个逐渐来标识

图书数据库:第一范式

id title publisher year author
1 《细说PHP》 电子工业出版社 2009 高洛峰
2 《细说JavaScript》 清华大学出版社 2013 高洛峰
3 《细说JavaScript》 清华大学出版社 2013 颖欣
4 《高并发的web站点》 电子工业出版社 2014 李文凯
5 《高并发的web站点》 电子工业出版社 2014 张涛
6 《高并发的web站点》 电子工业出版社 2014 李强强
7 《LAMP》兄弟连 北京师范大学出版社 2015 李超
8 《LAMP》兄弟连 北京师范大学出版社 2015 李明

 

第二范式:

(1)只要数据列里的内容出现重复,就意味着应该把数据表拆分为多个子表

(2)拆分形式的数据表必须用外键关联起来

titles的数据表:第二范式

titleid title publisher year
1 《细说PHP》 电子工业出版社 2009
2 《细说JavaScript》 清华大学出版社 2013
3 《高并发的web站点》 电子工业出版社 2014
4 《LAMP》兄弟连 北京师范大学出版社 2015

authors数据表:第二范式

authorid author
1 高洛峰
2 颖欣
3 李文凯
4 张涛
5 李强强
6 李超
7 李明

rel_title_author数据表:第二范式

titleid authorid
1 1
2 1
2 2
3 3
3 4
3 5
4 6
4 7

第三范式:

(1)与主键没有直接关系的数据列必须消除(“消除”的办法是再创建一个数据表来存放他们)

titles数据表:第三范式

titleid title publisherid year
1 《细说PHP》 1 2009
2 《细说JavaScript》 2 2013
3 《高并发的Web站点》 1 2014
4 《LAMP兄弟连》 3 2015

publishers数据表:第三范式

publisherid publisher
1 电子工业出版社
2 清华大学出版社
3 北京师范大学出版社
posted @ 2019-12-02 10:57  特战小鸟nmx  阅读(455)  评论(0编辑  收藏  举报