预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共45页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章关系数据库理论4.1规范化问题的提出数据依赖起着核心的作用,数据依赖研究数据之间的联系; 范式是关系模式的标准; 模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。外延(Extension)就是通常所说的关系、表或当前值。用户进行插入、删除、修改等操作时,随着时间不断在动态的改变; 内涵(intension)是对数据的定义以及数据完整性约束的定义,与时间无关。 对数据的定义包括对关系、属性、域的定义和说明; 对数据完整性约束的定义主要包括以下两个方面: 静态约束,涉及到数据之间联系(称为“数据依赖,datadependences)、主键和值域的设计。 动态约束,定义各种操作(插入、删除、修改)对关系值的影响。 一般把内涵成为关系模式,规范化研究的是关系模式的问题。书中使用符号的说明: ①英文字母表首部的大写字母“A,B,C,…”表示单个的属性。 ②英文字母表尾部的大写字母“…,U,V,W,X,Y,Z”表示属性集。 ③大写字母R表示关系模式,小写字母r表示其关系。为叙述方便,有时也用属性名的组合写法表示关系模式。若模式有A、B、C有三个属性,就用ABC表示关系模式。 ④属性集{A1,…,An}简写为A1…An。属性集X和Y的并集X∪Y简写为XY。X∪{A}简写为XA或AX。4.1.2不合理的关系模式存在的存储异常问题SNo数据冗余。系和系主任重复多次,学生的年龄也重复多次 操作异常。由于数据的冗余,在对数据操作时会引起各种异常: ●插入异常—无学生不能存储系及主任、未选课… ●删除异常—学生毕业导致系信息丢失… ●更新异常—改学生名、系名..等 一个好的关系模式应该具备以下四个条件: (1)尽可能少的数据冗余;(规范化的一个原则:有冗余就分解) (2)没有插入异常; (3)没有删除异常; (4)没有更新异常。 关系模式分解后还是原来的关系模式吗?满足什么条件的分解和原模式等价? 模式‘好’、‘坏’的本质是数据之间的函数依赖。4.1.3关系模式的非形式化准则:4.2函数依赖书中定义4.1:设有关系模式R(U),U是属性全集,X和Y是属性集U的子集, 如果对于R(U)上的任意一个关系r,对于X的每一个值,Y都有唯一的值与其对应,则称: X函数决定Y,或称Y函数依赖于X 记为:X→Y,X为决定因素,Y为依赖因素。 Y不函数依赖于X时,记为:X→Y 当X→Y且Y→X时,X←→Yd44例:有一个包括学生,教师,课程数据的关系模式: R(S#,SNAME,AGE,SEX,C#,CNAME,SCORE, T#,TNAME,TAGE) 如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列FD形式: S#→SNAME C#→CNAME 每个学生每学一门课程,有一个成绩 (S#,C#)→SCORE 还可以写出其他一些FD: S#→(AGE,SEX),C#→T# T#→(TNAME,TAGE) 关于函数依赖的说明(P140-141): (1).等价定义(见前定义) (2).平凡和非平凡函数依赖 在关系模式R(U)中,对于U的子集X和Y, 如果X→Y,但YX,则称X→Y是非平凡的函数依赖 若X→Y,但YX,则称X→Y是平凡的函数依赖 (3).函数依赖对R中所有r都满足。 (4)函数依赖是语义范畴的概念 (5)函数依赖与属性间联系类型(1:1,1:N)有关 (6)函数依赖关系的存在与时间无关定义4.3设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果从F中能够推导出X→Y,即对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F⊨X→Y。 定义4.4设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F+。 即F+={X→Y|记为F⊨X→Y}4.2.3函数依赖的推理规则定理4.1FD推理规则A1、A2和A3是正确的。 证明:(1)A1是显然的。因为不可能在一个关系中存在两个元组在X上是相等的,而在X的某个子集Y上不相等。 (2)假设R的某个关系r中存在两个元组t和s违反XZ→YZ, 即t[XZ]=s[XZ],但t[YZ]≠s[YZ]。 从t[YZ]≠s[YZ]可知t[Y]≠s[Y]或t[Z]≠s[Z]。 如果t[Y]≠s[Y],则与已知的X→Y矛盾; 如果t[Z]≠s[Z],则与假设的t[XZ]=s[XZ]矛盾。 因此,假设不成立,从而得出A2是正确的。 (3)假设R的某个关系r中存在两个元组t和s违反X→Z, 即t[X]=s[X],但t[Z]≠s[Z]。 如果t[Y]≠s[Y],则与已知的X→Y矛盾; 如果t[Y]=s[Y],则与已知的Y→Z矛盾。因而A3是正确的