关系数据库设计基础理论

2025-03-18  本文已影响0人  娇娇_5038

关系数据库逻辑设计

  1. 过多数据冗余
  2. 更新异常
  3. 插入异常
  4. 删除异常

函数依赖和Armstrong公理

  1. 关系模式的形式化定义(五元组)
  • R(U,D,DOM,F)
  • R: 关系名
  • U: 组成该关系的属性名集合
  • D: 属性组U中属性所来自的域
  • DOM: 属性向域的映像集合
  • F:属性间数据依赖的集合

注:

数据依赖:定义关系内部属性值间的相互关连(主要体现于值的相等与否), 它是数据库模式设计的关键

  1. 数据依赖类型(函数依赖、多值依赖)
  • 函数依赖 (Functional Dependency,简记为FD)
    关系R上的FD指:如果R的两个记录在属性A1,A2....,An上一致(这些属性上对应的分量相同),则它们在其他分量B上的值也必定相同
    记做 A1A2....An-----B 即A1,A2,....,An函数决定B
    合并规则(combinling rule)
    如果A1,A2...An --- Bi(i=1,2,...m),则A1A2...An-----B1B2Bm
    分解规则(Splitting rule)
    如果A1A2...An ---- B1B2Bm ,则A1A2...An---Bi(i=1,2,...m)

例: 建立一个描述学校教务的数据库:
学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grande)
用单一关系模式描述:Student<U、F>
U={Sno,Sdept,Mname,Cname,Grande}

规则

  • 一个系有若干个学生,而一个学生只属于一个系。
  • 一个系只有一名(正职)负责人--系主任
  • 一个学生可选多门课程,每门课程有若干个学生选修
  • 每个学生选每门课有一个成绩
    F= {Sno--- Sdept,Sdept--Mname,(Sno,Cname)---Grade}



    问题:
    数据冗余: 系主任的名字重复出现
    更新异常:系主任更换,则需要更换所有学生相应的信息
    插入异常:如某系刚成立,没有学生,则不能插入系的相关信息
    删除异常:删除所有学生信息,则删除了一个系的信息

解决方法:可以通过分解关系模式来消除其中不合适的数据依赖。把这个单一模式分成3个关系模式
S{Sno,Sdept,Sno---Sdept}
SC{Sno,Cno,Grade,(Sno,Cno)---Grade}
DEPT{Sdept,Mname,Sdept---Mname}

函数依赖形式定义:
设R(U)是一个属性集U上的关系模式,X和Y是U的子集
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X---Y


函数依赖的类型

  • 平凡的:
  • 非平凡的:Y中至少有一个属性不属于X
  • 完全非平凡: Y中所有属性均不属于X

完成函数依赖
在R(U)中,如果X---Y,并且对于X的任何一个真子集X,都有X 不能推导出Y,则称Y对X完全函数依赖


(Sno,Cno)---Grade
部分函数依赖
若X---Y,但Y不完全依赖于X,则称Y对X部门函数依赖,记作

(Sno,Cno)---Sdept (只要有学号就能推导出来系别)

传递函数依赖

在R(U)中,如果X--Y,
Y---Z

,则Z对X传递函数依赖
X---- Z

eg:
在关系Std(Sno,Sdept,Mname)中,有
Sno---Sdept,Sdept---Mname
Mname传递函数依赖于Sno
若想知道一个FD是否从指定的FD集合中导出,经常使用闭包算法。但可以使用Armstrong公理的一组规则得到一个给定集合能推断出的FD
关系模式R(U,F)来说有以下的基本规则



根据三条基本规则可以得到以下推理规则
合并规则:


闭包计算及其应用

关系模式的规范化理论

模式分解及其特性

上一篇 下一篇

猜你喜欢

热点阅读