第四章 数据库结构设计
知识要点:
函数依赖及 公理系统
为什么要对模式进行分解,如何分解
如何判断关系模式达到几范式
如何求属性的闭包及如何求最小函数依赖集
判断分解后的关系模式是不是无损连接或保持函数依赖
判断分解后的关系模式既无损连接又保持函数依赖
. 模式设计
设计关系数据库模式时,特别是从面向对象的 设计或从 设计直接向关系数据库模式
转换时,很容易出现的问题是冗余性,即一个事实在多个元组中重复。
造成这种冗余的最常见的原因是,企图把一个对象的单值和多值特性包含在一个关系中。
当我们企图把太多的信息存放在一个关系时,就会出现数据冗余和更新异常等问题。主要表现如下:
. 数据冗余。
. 修改异常。
. 删除异常。
. 插入异常。
关系的键码函数决定该关系的所有其它属性。由于键码能唯一确定一个元组,所以,也可以说
关系的键码函数决定该关系的所有属性。一个关系中的所有属性都函数依赖于该关系的键码。不同
的属性在关系模式中所处的地位和扮演的角色是不同的。把键码所在的属性称为主属性,而把键码
属性以外的属性称为非主属性。
不同的属性对键码函数依赖的性质和程度是有差别的。有的属于直接依赖,有的属于间接依赖
(通常称为传递依赖)。
当键码由多个属性组成时,有的属性函数依赖于整个键码属性集,而有的属性只函数依赖于键
码属性集中的一部分属性。
函数依赖
.函数依赖及相关概念
定义 设 是属性集 上的关系模式,, 是 的子集。若对 的任何一个可能的关
系 , 中不可能存在两个元组在 上的属性值相等,而在 上的属性值不等,则称 函数决定
或 函数依赖于 ,记作: 。
完全函数依赖:在 中,如果 ,并且对于 的任何一个真子集 ,都有 不能
决定 ,则称 对 完全函数依赖,记作:
例 给定一个学生选课关系 ,,,我们可以得到 !", #,对
,中的任何一个真子集 或 都不能决定 ,所以, 完全依赖于
评论3