1、函数依赖范畴的规范化函数 依赖定义 设 ( ) 是一个属性集 上的关系模式, 和 是 的子 集。 若对于 ( ) 的任意一个可能的关系 , 中不可能存在两个元组在 上的属性值相等,而在 上的属性值不等,则称 “ 函数确定 ” 或 “ 函数依赖于 ” ,记作 。 称为这个函数依赖的决定属性集(Determinant) 。 = ( )函数 依赖 例: Student(Sno, Sname, Sgend, Sage, Sdept) 假设不允许重名,则有: , , , , , , 但 平凡 函数 依赖 与非 平凡 函数 依赖 在关系模式R(U)中,对于U的子集X和Y ,若 ,但 , 则称 是平凡的函数
2、依赖若 ,但 ,则称 是非平凡的函数依赖例:在关系SC(Sno, Cno, Grade) 中,非平凡函数依赖:( , ) 平凡函数依赖: ( , ) ,( , ) 对于任一关系模式都必然成立,因此若不特别声明,总是讨论非平凡的函数依赖。完 全函 数依 赖与 部分 函数 依赖定义 在关系模式R(U) 中, 如果 ,并且 对于 的任何 一个真子 集 , 都有 , 则称 完全函数依赖于 ,记作 。 若 ,但 不完全函数依赖于 ,则称 部分函数依赖于 ,记作 。 例: 在关系SC(Sno, Cno, Grade) 中,由于: , ,因此: , 在关系Std(Sno, Cno,Sdept,Grade)
3、中,有: ( , ) , ,因此 ( , ) 定义 在关系模式 ( ) 中 , 如果 , , 且 , ,则称 传递函数依赖于 。 注: 如果 ,即 ,则 直接依赖于 。例: 在关系Std(Sno, Sdept, Mname) 中,有: , 传递函数依赖于传递 函数 依赖码 若关系中的某一属性组 的值能唯一 地标识一个 元组, 则称 该属性组为 侯选码。定义 设 为关系模式R 中的属性或属性组合。 若 , 则 称为 的一个侯选码(Candidate Key )。 若一个关系模式有多个候选码,则选定其中的一个做为主码(Primary Key ) 。 主码的诸属性称为主属性 (Prime attri
4、bute ) 不 包含在 任何候 选码中 的属性 称为非 主属性 (Nonprime attribute )或 非码属性 (Non-Key attribute ) 若关系模式的所有属性组 是这个 关系模 式的候 选码, 称为全码 (ALL-KEY )第 一范式 如果一个关系模式 的所有属性都是不可分的基本数据项,则 1 。例: 关系模式SLC(Sno, Sdept, Sloc, Cno, Grade)Sloc 为学生住处,假 设每个 系的学 生住在 同一个 地方S LC1NF函数依赖包括:( , ) , ,( , ) , ,( , ) , 第 一范式 SLC 的码为(Sno, Cno) SLC
5、 存在的问题: 插入异常 、 删除异常、 数据冗余度大、修改复杂 原因:非主属性Sdept 和Sloc 部分函数依赖于码(Sno, Cno)SnoCnoGradeSdeptSlocSLC第二 范式 若关系模式 1 , 并且每一个非主属性都完全函数依赖于 的码,则 2 。例: ( , , , , ) 1 ( , , , , ) 2 可以采用投影分解法将一个1NF 的关系分解为多个2NF 的关系。第二 范式 ( , , , , ) 1 SLC 分解为两个关系模式: , , 2 ( , , ) 2 SnoCnoGradeSCSLSnoSdeptSloc第 二范式 将一个1NF 关系分解为多个2NF
6、的关系, 并不能完全消除关系模式中的各种异常情 况和数 据冗余 。例:2NF 关系模式SL(Sno, Sdept, Sloc) 中 , 有函数依赖: , , 传递 SL 的码为 SL 存在的问题插入异常 、删除异常、数据冗余度大、 修改复 杂 原因Sloc 传递函数依赖于Sno , 即SL 中存在非主属性对码的传递函数依赖。SnoSdeptSloc第三 范式 若关系模式 2 , 中若不存在这样的码 、 属性组 及非主属性 ( ), 使得 , , 成立, 即 中 任 一非 主属性 都不传递函数依赖于码,则称 3 。例: ( , , ) 2 , ( , , ) 3 可以采用投影分解法,把SL分解为
7、两个关系模式: ( , ) ,( , )第三 范式( , ) ( , ) Sno SdeptSDSdept SlocDL第三 范式 将一个2NF关系分解为 多个3NF的关系后, 并 不能完全消 除关系模式 中的各种异常情况和数据冗余。例:在关系模式STJ (S ,T ,J )中 ,S 表示学 生,T 表示 教师,J 表 示课程 。 每一教师只教一门课。 每门课由若干教师教, 某一学生选定某门课, 就确定了一个固定的教师, 某个学生选修某个教师的课就确定了所选课的名称:( , ) ,( , ) , 3 SJTSTJSTJBC 范式 BCNF 设关系模式 1 , 如果对于 的每个函数 依赖 , 若
8、 不属于 时 必含有候选码, 即每个决定因素都是码( 候选键) , 那么 (Boyce Codd Normal Form ) 。 若R BC N F 每一个决定属性集都包含(候选)码 R 中的所有属性(主/ 非主属性)都完全函数依赖于码 必有R3NFBC 范式例: C (CNO ,CNAME ,PCNO ) CNO 是唯一的码,且没有任何属性对CNO 部分 依赖或 传递依 赖,所以 C3NF。 CNO 是C 中唯一的决定因素,所以 C BC NF 。S (SNO ,SNAME ,SDEPT ,SAGE ) 假定SNAME 具有唯一性 , 则S 具有两个码SNO 和SNAME , 两个码均由单个
9、属性组成,且彼此不相交。 没有任何属性对码部分依赖或传递依 赖,所以 S3NF 。 S中除SNO 和SNAME 外,无其它决定因素 ,所以S BC NF 。BC 范式 例:在关系模式STJ (S ,T ,J)中,S 表示学生,T 表示教师,J表示课程。 每一教师只教一门课。 每门课由若干教师教, 某一学生 选定某门课, 就确定了一个固定的教师, 某个学生选修 某个教 师的课 就确定 了所选 课的名 称:( , ) ,( , ) , 3 ,T 是决定属性集,T 不是候选码SJTSTJSTJBC 范式 解决方法:将STJ 分解为二个关系模式 ( , ) (, ) S TSTT JTJBC 范式 B
10、CNF 在函数依赖范畴内已实 现了彻 底的分 离。 如果关系模式R BC NF ,必 定有 R3NF 。 如果R3NF ,且R 只有一个候选码,则R 必属于BCNF 。 如果R BC NF ,则所有非主属 性都完 全函数 依赖于 每个候 选码。 如果R BC NF , 则所有主属性都完全函数依赖于每个不包含它的候选码。 如果R BC NF ,则没有任何属 性完全 函数依 赖于非 码的任 何一组 属性。小结 规范化的基本思想 消除不合适的数据依赖,使各关系模 式达到 某种程 度的“ 分离” 。 采用“一事一地”的模式设计原则。 让一个关系描述一个概念、 一个实体或者实体间的一种联系。 若多于一个概念就把它“ 分离” 出去。 所谓规范化实质上是概念的单一化。小结消除非主属性对码的部分函数依赖消除非主属性对码的传递函数依赖消除主属性对码的部分函数依赖和传递函数依赖1NF2NF3NFBCNF