摘要
本文讲述如何判断设计的数据库是否合理(设计的数据库表符合第一范式、第二范式、第三范式等)
前置知识
超码、候选码、主码
超码
关系的超码是一个或者多个属性的集合,这些属性上的取值保证可以唯一识别出关系中的元组。 举个例子,有属性为<学号,身份证,姓名,年龄,班级>这样的一个表,其中学号、身份证或者<学号,身份证>都能唯一识别出关系中的元组。那么学号、身份证以及<学号,身份证>都被称为超码。
候选码
候选码是一个最小的超码,它是一组构成超码的属性集,但是这组属性的任意子集都不是超码。 比如有属性为<学号,选课>这样的一张选课表,其中<学号,选课>两个属性构成一个超码,但是学号或者选课属性单独提取出来,不能作为超码,那么<学号、选课>就是一组候选码。
主码
关系中的一个候选码被选作为超码 在属性为<学号,身份证,姓名,年龄,班级>这样的一个表的例子中,学号,身份证都是超码,也是候选码,可以选择学号或者身份证作为主码。
第一范式
如果关系R中每个属性都是不可再分的(原子的),并且每个属性都是单值的,则称关系R满足第一范式
第二范式
如果关系R属于第一范式,并且每个非主码属性都函数依赖于整个候选码,而不是依赖于部分候选码,则称关系R满足第二范式。 第一范式转化成第二范式: 1、有限判断主码的规范性 2、将依赖部分候选码的非主码属性和所依赖部分码组成一个关系 3、将依赖整个候选候选码的非主属性和整个候选码组成另一个关系
第三范式
若关系R属于第二范式,并且它的非主属性只函数依赖于候选码,而不依赖于其他非主属性,则称R满足第三范式。 第二范式转换为第三范式: 1、将不止依赖于主码的非主属性和所依赖的非主属性组成一个关系 2、原有关系中去掉那些不止依赖于主码的非主属性,剩余部分组成一个关系
|