-
第一范式
每个字段都是原子不可分的; -
第二范式
消除非主属性对主键的部分函数依赖。定义:非主属性完全函数依赖于候选键。
完全函数依赖:x->y ;x的任何真子集不能->y -
第三范式
消除非主属性对主键的传递依赖。
比如(商店、商品、店铺、经理)这个表中的依赖关系为 商店、商品->店铺 ;店铺->经理
这张表就存在非主属性对主键的传递依赖。 -
第四范式
减少数据冗余
消除异常(插入异常、删除异常、更新异常)
关系模式R(U,F)属于第一范式的话,若对于R的每个非平凡多值依赖x->->y x为超键 则称该关系 模式符合第四范式。意思是如果有多值依赖一定是依赖候选键。第四范式排除了非主属性对候选键以外属性的多值依赖。
另一种定义:设关系R(X,Y,Z),其中xyz是不相交的、成对的属性集合,若存在非平凡多值依赖,则意味着对R中每个属性都有函数依赖X->Ai其中X包含候选键,那么R属于第四范式。
产品 | 代理商 | 工厂 |
---|---|---|
A | B | C |
A | B | D |
E | F | D |
由上表可知,产品 ->->代理商
多值依赖的定义:对于关系模式R(X ,Y,Z)的一个关系r,若对于一对确定的(x,z)记录,y有一组值与其对应,这组值仅由x决定而与z无关,那么就称X->->Y。
- 对于消除冗余、和消除插入异常、更新异常、删除异常的理解 假设有这样的关系模式:学号、系、系负责人、课程、成绩
这个关系模式就存在了上面的问题:当新建的表中无学生的时候,那么系和系负责人也无法得到保存或者当学生还未选课 ,此时你无法将系和系负责人插入数据库。或将所有学生都存入数据库时,若学生毕业删除所有学生时候,其中保存的xi及其负责人均被删除。另外更新数据的时候需要对每个元组的值都要更新,容易造成不一致的情况。数据冗余 系负责人出现的次数将会与学生每门课的成绩一样多。