酷升汽车网
您的当前位置:首页数据库的范式理论

数据库的范式理论

来源:酷升汽车网


先扫盲: 超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键 候选键(candidate key) :不含有多余属性的超键称为候选键 主键(primary key) :用户选作元组标识的一个候选键程序主键 比如一个小范围的所有人,没有重名的,考虑以下属性 身份

先扫盲:

超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键称为候选键
主键(primary key):用户选作元组标识的一个候选键程序主键

比如一个小范围的所有人,没有重名的,考虑以下属性

身份证 姓名 性别 年龄

身份证唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的

身份证唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
--这里可以看出,候选键是没有多余属性的超键

考虑输入查询方便性,可以选择 身份证 为主键
也可以 考虑习惯 选择 姓名 为主键
--主键是选中的一个候选键

-----------------------------------------------------------------------

第一范式:

所有的属性都是不可分割的原子单位。

第二范式:

如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式。

第三范式:

如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的

BC范式:(BCNF)

如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。

举例说明:

第一范式(1NF):

如果关系模式R的每个关系都是r的属性值不可分割的原子值,则称关系R是第一范式的模式.

  不满足第一范式的情况:
  关系R(name,address,phone)
  ----------------------------------------------------------------------
  name address phone

AA 山西太原 2204446
   AA 山西太原 8350524
  ----------------------------------------------------------------------
说明:phone可以再分(可以分为phone1和phone2).

*************************************************************************************

第二范式(2NF):

1):局部依赖:
  对于依赖关系 W->A (A依赖于W),如果存在X归属于W,且X->A(A依赖于X),那么称W->A是局部依赖;否则称W->A是完全依赖.
  比如:
  关系模式R(sno,cno,grade,tname,taddr)
  sno:学生学号;cno:课程编号;grade:成绩;tname:老师姓名;taddr:老师住址
  (sno,cno)->(tname,taddr)(sno,cno决定于tname以及cno)是局部依赖,因为cno->(tname,taddr).

2):二范式定义:
  如果关系模式R满足第一范式,且每个非主属性完全依赖于侯选键,则称R满足第二范式.

不满足第二范式的情况:
  关系模式R(sno,cno,grade,tname,taddr)
  sno:学生学号;cno:课程编号;grade:成绩;tname:老师姓名;taddr:老师住址
  ----------------------------------------------------------------------
  sno cno grade tname taddr

  101 001 100 张老师 山西太原....
  102 001 95 张老师 山西太原....
  103 001 98 张老师 山西太原....
  104 002 95 中国北京....
  105 003 90 刘老师 中国上海....
  ----------------------------------------------------------------------
  说明:出现相同的tname,taddr三次
  消除方法:分解关系模式R
  ----------------------------------------------------------------------
  R1(sno,cno,grade)

  sno cno grade

  101 001 100
  102 001 95
  103 001 98
  104 002 95
  105 003 90


  R2(cno,tname,taddr)

  cno tname taddr

  001 张老师 山西太原....
  002 中国北京....
  003 刘老师 中国上海....
  ----------------------------------------------------------------------

*************************************************************************************

第三范式(3NF):

1):传递依赖:如果X->Y,Y->A,且Y不依赖X和A不是Y的子集,那么称X->A是传递依赖.(A传递依赖于X)

2):三范式定义:
  如果关系模式R是1NF,且每个非主属性都不依赖于R的侯选键,那么称R满足第三范式.

不满足第三范式的情况:
  关系模式R2(cno,tname,taddr)是2NF模式,如果在R2中存在cno->tname,tname->taddr,那么cno->taddr就是个传递依赖,及不满足第三范式.
  ----------------------------------------------------------------------
  cno tname taddr

  001 张老师 山西太原....
  002 中国北京....
  003 刘老师 中国上海....
  004 张老师 山西太原....
  005 张老师 山西太原....
  ----------------------------------------------------------------------
  说明:张老师开设了3门课程,上面就出现了3个元组,教师地址重复了3次.
  消除方法:分解关系模式R2
  ----------------------------------------------------------------------
  R3(cno,tname)

  cno tname

  001 张老师
  002
  003 刘老师
  004 张老师
  005 张老师

  R4(tname,taddr)

  tname taddr

  张老师 山西太原....
   中国北京....
  刘老师 中国上海....
  ----------------------------------------------------------------------

再补充一下:

第四范式(4NF)

第四范式禁止主键列和非主键列一对多关系不受约束

第五范式(5NF)

第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.

显示全文