原创文章,版权归 胡添发(hutianfa@163.com)所有,转载请注明出处:
http://blog.csdn.net/aidisheng/archive/2008/09/24/2970370.aspx
一、图书信息的直观表示方法:
书名 出版社 出版年份 第一作者
第二作者
书名
|
出版社 |
出版年份 |
第一作者 |
第二作者 |
… |
白盒测试 |
科学出版社 |
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
|
魅力出版社
|
总结:
在实际工作中,往往要等到数据库里已经有了足够多的测试数据之后才会注意到种种冗余的现象,然后才会清楚地知道怎样拆分数据表最合适。
分享到:
相关推荐
Java面试资料有关数据库的问题 数据库 三范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
数据库范式1NF 2NF 3NF BCNF(实例) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系...
数据库三范式(六范式)--通俗易懂,很不错,希望大家好评
数据库三范式.pdf
学案之数据库三范式.pdf
【专讲】 数据库三范式.doc
数据库三范式最简单最易记的解释.docx
数据库 三范式最简单最易记的解释,整理一下方便大家记忆。
下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。
数据库范式理解例题数据库范式理解例题
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多...
数据库系统范式教程数据库系统范式教程
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员...
这是我积累多年的题目,跟大家一起分享,是有关自考数据库系统原理第三范式题目汇总
数据库三范式具体如下: 1、 第一范式(1st NF -列都是不可再分) 第一范式的目标是确保每列的原子性: 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF) 2、第二范式(2nd NF -...
数据库的三范式是什么? 第一范式:最基本要求,表中的每一列必须保证原子性,列不可在分割。 如有一个列,年级班级。然后存储数据为,一年级一班,一年级二班。那么这是错误的,应该年级和班级分开为单独列。 ...
尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手
数据库的设计的学习,一些基本的介绍,简单明了,还是很容易理解。