数据库三个范式实例讲解
来源:互联网 发布:怎样在淘宝注册开店 编辑:程序博客网 时间:2024/05/21 06:28
一、图书信息的直观表示方法:
书名
出版社
出版年份
第一作者
第二作者
…
白盒测试
科学出版社
2007
胡老师
杨老师
…
数据库管理
魅力出版社
2000
胡老师
李四
王五
二、范式的学术定义
1. 第一范式:
消除重复的组,从而所有表中的所有记录可以被每个表中的主键唯一标识。也就是:非主键的所有字段必须依赖于主键。
2. 第二范式
所有的非键值必须完全依赖于主键,不允许部分依赖
3. 第三范式
消除传递依赖。
三、图书信息要满足第一范式:
1. 内容相识的数据列必须消除
2. 必须为每一组相关数据分别创建一个数据表
3. 每条数据记录必须用一个主键来标识
Title表
书名
出版社
出版年份
第一作者
第二作者
…
白盒测试
科学出版社
2007
胡老师
杨老师
…
数据库管理
魅力出版社
2000
胡老师
李四
王五
不管是第一作者还是第二作者,都是作者,是相同的数据列,所以必须要消除:
Title表
ID
书名
出版社
出版年份
作者
1
白盒测试
科学出版社
2007
胡老师
2
白盒测试
科学出版社
2007
杨老师
3
数据库管理
魅力出版社
2000
胡老师
4
数据库管理
魅力出版社
2000
李四
5
数据库管理
魅力出版社
2000
王五
四、图书信息要满足第二范式:
1. 只要数据列里的内容出现重复,就应该把数据表拆分为多个表
2. 拆分形成的数据表必须用外键关联起来
在本例中,Title表中的书名是重复的,原因是因为要表现与作者的关系才重复的,所以要消除它,就需要把作者的信息拆分出来:
Title表
ID
书名
出版社
出版年份
1
白盒测试
科学出版社
2007
2
数据库管理
魅力出版社
2000
Authors表
ID
TitleID(外键)
作者
1
1
胡老师
2
1
杨老师
3
2
胡老师
4
2
李四
5
2
王五
在作者表中,名字还是存在重复,所以可以进一步改进为三个表:
Title表
ID
书名
出版社
出版年份
1
白盒测试
科学出版社
2007
2
数据库管理
魅力出版社
2000
Authors表
ID
姓名
1
胡老师
2
杨老师
3
李四
4
王五
Rel_title_author表
TitleID (外键)
AuthorID (外键)
1
1
1
2
2
1
2
3
2
4
五、图书信息要满足第三范式:
与主键没有直接关系的数据列必须消除(创建一个表来存放他们)。 如:本例中出版社与书的名字没有必然的联系
Title表
ID
书名
PublisherID (外键)
出版年份
1
白盒测试
1
2007
2
数据库管理
2
2000
Authors表
ID
姓名
1
胡老师
2
杨老师
3
李四
4
王五
Rel_title_author表
TitleID (外键)
AuthorID (外键)
1
1
1
2
2
1
2
3
2
4
Publishers表
ID
名称
1
科学出版社
2
魅力出版社
总结:
在实际工作中,往往要等到数据库里已经有了足够多的测试数据之后才会注意到种种冗余的现象,然后才会清楚地知道怎样拆分数据表最合适。
- 数据库三个范式实例讲解
- 数据库三个范式实例讲解
- 数据库三个范式实例讲解
- 数据库规范化三个范式应用实例
- 数据库规范化三个范式应用实例
- 数据库三个范式
- 数据库的三个范式
- 数据库的三个范式
- 数据库设计 三个范式
- 数据库的三个范式
- 数据库的三个范式
- 数据库表三个范式
- 数据库的三个范式
- 数据库:三个范式
- 数据库设计三个范式
- 数据库范式的讲解
- 数据库三范式讲解
- 数据库三范式讲解
- 即将改变世界的云计算Cloud Computing
- TUXEDO运行监控命令概述
- 同方安全云终端--开启云计算之门
- PHP&AJAX无刷新de注册 好像不好用
- .net 事件模式 访问者模式
- 数据库三个范式实例讲解
- Junit Test Doc Project构建
- 站点卫士
- 【转】使用JBoss ESB 和 LegStar实现大型机整合
- vc6设置
- C++单体模式的几个总结
- php,smarty 缓存操作
- Word、Excel组合 批量打印信封
- 范了一个很郁闷的错误