数据库设计理论

关系数据库设计理论

数据库规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

在讨论关系数据库设计之前我们需要了解一些基本的术语和概念

关系模式

由五部分组成,即它是一个五元组:
R(U, D, DOM, F)
R: 关系名
U: 组成该关系的属性名集合
D: 属性组U中属性所来自的域
DOM: 属性向域的映象集合
F: 属性间数据的依赖关系集合

数据依赖

数据依赖是完整性约束的表现形式之一。完整性约束之一是限定属性取值范围:例如学生成绩必须在0-100之间。其二就是定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的。数据依赖通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。数据依赖有两种类型:函数依赖和多值依赖,此处我们主要讨论函数依赖。

函数依赖

设有关系模式R(U),X和Y是属性集U的子集,r是R上的任一具体关系,u和v是r中的任意两个元组。如果由u[X]=v[X]能推导出u[Y]=v[Y],则称X函数决定Y,或Y函数依赖于X,记为FD:X——>Y。换个更简单的说法:函数依赖就是在两个集合之间存在一种映射关系使两个集合的元素以某种形式对应起来,这种映射关系就是像函数一样的依赖。

  • 逻辑蕴含

    设F是在关系模式R上成立的函数依赖集,X——>Y是一个FD。如果对于R的每个满足F的关系也满足X——>Y,则称F逻辑蕴涵X——>Y,记为F|=X——>Y

  • 闭包

    被F逻辑蕴涵的函数依赖的全体构成的集合,称为函数依赖集的闭包,记为F+

  • 推理规则:可以像算术运算律一样使用的规则

    A1(自反性):如果X包含于Y,则有X——>Y在R上成立。
    A2(增广性):如果X——>Y在R上成立,那么有XZ——>YZ。
    A3(传递性):如果X——>Y,Y——>Z在R上成立,则有X——>Z。
    推论
    合并规则:由X——>Y,X——>Z可以得到X——>YZ
    分解规则:由X——>YZ可以得到X——>Y,X——>Z
    伪传递规则:由X——>Y,YW——可以得到XW——>Z

  • 属性集的闭包

    设F是属性集U上的FD集,X是U的子集,那么属性集X的闭包X+,它是一个从F集使用FD推导规则推出的所有满足X->A的属性集A的集合。

  • 如何求出给定函数依赖集F的最小集:

    1、逐一检查F中的函数依赖,如果函数依赖的右部不是单个属性,利用分解规则将其分解为多个函数依赖,得到新的函数依赖集F’
    2、对于F’中的每个FD:X->A,令G=F’-{X->A},若A在由G得到的属性集闭包中,则从F’中去掉此函数依赖,得到F”。
    3、对于F”中的每个FD:X->A,设X=B1B2…Bm,对于Bi,如果A在X-Bi得到的属性集闭包,用X-Bi代替X。

了解函数依赖后和属性集的闭包后,我们需要了解键的定义

超键

能唯一标识元组的属性集称为关系模式的超键。

候选键

  • 如果一个属性集能唯一标识元组,且不含有多余的属性,那么这个属性集成为候选键。也就是说,候选键是更严格的超键,是不包含多余属性的超键。
  • 更严格的定义:如果关系模式R的属性集为A1,A2,…An,F是R上成立的一个FD集,X是A1,A2,…An的一个子集,如果X->A1,A2,…An在F+中,那么称X是R的一个超键。如果X->A1,A2,…An在F+中,且对于X的任何一个真子集X1, X1->A1,A2,…An在都不在F+中,则称X是R的一个候选键。
  • 从属性集闭包角度出发,如果关系模式R的属性集为U,F是R上成立的一个FD集,X是U的一个子集,如果X的属性集的闭包X+ =U,则称X为R的一个超键,如果对于X的任何一个真子集Y,有Y+≠U。则X为R的一个候选键。
  • 如何求解候选键呢?有两种算法:从属性闭包出发的常规算法和快捷算法

    • 求属性集X关于FD集F的闭包X+
      输入:属性集U,U上的FD集F,X是U的子集
      输出:X关于F的闭包X+
      方法: Result:=X;
      repeat
      for F 中的每个FD Y->Z do
      if then Result:=Result U Z;
      until (result 没有改变);
      Result 即为所求的X+
    • 对于给定的关系模式R=(A1,A2,…,An)和函数依赖集F,可将其属性分为四类:1、仅仅出现在F的函数依赖左部的属性L类;2、仅仅出现在F的函数依赖右部的属性R类;3、在F的函数依赖的左右两边都没有出现的属性N类;4、在F的函数依赖的左右两边都出现的属性LR类。对于给定关系模式R及其函数依赖集F(不包含平凡FD)
      1) X是L类属性,则X必为R的任何一个候选键的成员。
      2) X是R类属性,则X不包含在任何候选键中。
      3) X是R的N类属性,则X也必为R的任何一个候选键的成员。
      4) X是R的LR类属性,则X可能是也可能不是候选键的成员。

了解了基本术语和概念,我们可以开始进入规范化理论的学习

关系必须是规范化的。通常按属性间依赖情况,来区分关系规范化的程度为第一范式,第二范式,第三范式等。现在范式发展到了第五方式,但BC范式已满足大部分规范情况,因此在范式的介绍中只到BCNF。规范化也要一些基本的术语需要了解。

Y对X完全函数依赖

在关系R(U)中,如果X——>Y,并且对于X的任何一个真子集X’都有X—\—>Y。

Y对X部分函数依赖

如果X——>Y,但Y不完全函数依赖于X。

Z对X传递函数依赖

在R(U)中,如果X——>Y(Y不包含于X且Y—\—>X),Y———>Z则称Z对X传递函数依赖。

主属性

包含在任何一个候选键中的属性

非主属性

包含在任何候选键中的属性

各级范式

  • 1NF:如果一个关系模式R的每个具体关系r的每个属性值都是不可再分的最小数据单位,称R满足1NF,r为1NF关系。1NF是最基本的范式,也是数据库关系的最低要求,每个属性值只能代表一种属性。

  • 2NF:若R(U)属于1NF,且R的每一个非主属性完全函数依赖于任一候选键,称R是满足第二范式的关系模式。相对应于1NF来说,2NF要求没有部份依赖。

  • 3NF:关系模式R(U)满足2NF,且它的任何一个非主属性都不传递依赖于任何候选键,则称R为满足3NF的关系模式。相对应于2NF来说,3NF要求没有传递依赖。

  • BCNF:关系模式R(U)属于1NF,F是关系模式R的函数依赖集,如果F中所有函数依赖的左部都包含了R的任何一个候选键,称R是满足Boyce-Codd范式,记为BCNF。即每一个决定因素都包含候选键。

虽然理论上数据库满足的范式越高级越合理,但实际开发中,有些业务并不需要特别高级的范式,如为了方便获取用户的详细地址,地址这个属性可以直接与用户基本信息放在同一张表。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值