来源:中国自学编程网 发布日期:2008-09-24 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、 图书信息的直观表示方法:
二、范式的学术定义 1. 第一范式: 消除重复的组,从而所有表中的所有记录可以被每个表中的主键唯一标识。也就是:非主键的所有字段必须依赖于主键。 2. 第二范式 所有的非键值必须完全依赖于主键,不允许部分依赖 3. 第三范式 消除传递依赖。
三、图书信息要满足第一范式: 1. 内容相识的数据列必须消除 2. 必须为每一组相关数据分别创建一个数据表 3. 每条数据记录必须用一个主键来标识
不管是第一作者还是第二作者,都是作者,是相同的数据列,所以必须要消除:
四、图书信息要满足第二范式: 1. 只要数据列里的内容出现重复,就应该把数据表拆分为多个表 2. 拆分形成的数据表必须用外键关联起来 在本例中, Title 表中的书名是重复的,原因是因为要表现与作者的关系才重复的,所以要消除它,就需要把作者的信息拆分出来:
在作者表中,名字还是存在重复,所以可以进一步改进为三个表:
五、图书信息要满足第三范式: 与主键没有直接关系的数据列必须消除(创建一个表来存放他们)。 如:本例中出版社与书的名字没有必然的联系
总结: 在实际工作中,往往要等到数据库里已经有了足够多的测试数据之后才会注意到种种冗余的现象,然后才会清楚地知道怎样拆分数据表最合适。 |
数据库三个范式实例讲解
最新推荐文章于 2023-08-14 10:06:53 发布