黑马程序员技术交流社区
标题:
关于数据库范式(教授从事数据分析和软件开发20多年的经验
[打印本页]
作者:
9881008杜鹏
时间:
2011-11-19 16:10
标题:
关于数据库范式(教授从事数据分析和软件开发20多年的经验
首先,所有的数据库表都是有冗余的,但我们操作的时候要尽量减少冗余量。如果有人跟你说他的数据库没有冗余,你方可不必去信。
对数据库表结构的分解的最终目的是:是表的功能单一化。也就是不要将多个功能的项放在一张表里。
第一范式:要求对于表中的所有信息,如果减少一项那么表的信息就不完整
第二范式:要求每个属性值必须要完全函数依赖于码,如果不满足的话,就需要分解。
第三范式:要求不存在传递关系:比如说学号跟系,系的地址放在一张表中的话就会出现传递关系:学号到系,系到系的地址。
B C范式:抽象地讲就是所有的因素都含一个键。即是说:由键可以确定所有的元素,而如果存在部分超键(在表中有可以通过它来确定其他属性)如:一张订单表中订单号可以决定订单中如客户号,物品流水号。但是这张表中还含有客户的一些其他信息,订单中物品的一些信息,由于物品流水号就能确定物品 的信息,客户号就能确定客户的信息,那么,就称物品流水号、客户号,订单号是超键。怎样解决这个问题,需要用迭代的方法去解决。即先是把物品信息和物品流水号整合起来一张表,放到原表中,再去按上面的分析将客户..整合。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2