数据模型三要素:数据结构、数据操作以及约束条件
关系数据库基础:
- 数据库的结构域模式:
关系数据模型三要素:关系数据结构、关系数据操作以及关系约束条件
- E-R模型:主要概念:实体、联系、属性。
- 数据规范化:关系数据模型中个属性之间的关系及其对关系模式性能的影响。关系数据库设计理论的核心是函数依赖,衡量的标准是关系规范化的程度及其分解的无损连接和保持函数依赖性。
- 数据依赖:数据间的相互关系,是数据的内在性质
- 函数依赖:一种最重要的数据依赖。包括:函数依赖、非平凡函数依赖、平凡函数依赖、部分函数依赖、传递依赖、码、主属性、非主属性、外码、值依赖定义、函数依赖的公理系统。(范式约束条件)
- 事务管理:事务是一个操作序列。这些操作是"要么都做,要么都不做"。事务是数据库环境中不可分割的逻辑工作单位。
事务的四个特性:原子性、一致性、隔离性、持久性。
在SQL语句中事务定义的语句有三条:BEGIN TRANSACTION,COMMIT,ROLLBACK
- 并发控制:多用户操作的系统中,用户可能同一时刻对统一数据进行操作。DBMS的的并发控制子系统负责协调并发事务的执行,保证数据库的完整。
- 数据库的备份与恢复:
关系数据库的设计:
- 数据库设计的特点:
- 从数据结构开始,并以此为核心
- 静态结构设计与动态行为设计相分离
- 试探性
- 反复性
- 多步性
- 数据库设计的方法:
- 直观设计法
- 规范设计法
- 计算机辅助设计法
- 自动化设计法
- 常用的为基于3NF的设计方法、基于E-R的设计方法、基于视图概念、面向对象的关系数据库设计、计算机辅助数据库设计、敏捷数据库设计
- 数据库设计的基本步骤:需求分析、逻辑结构设计、物理结构设计、应用程序设计、运行维护
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库应用程序设计
- 数据库运行和维护
数据库设计的范式:
关系模式分解:将一个关系模式分解为多个子关系模式(可以解决数据上的冗余与操作上的异常)。方便插入、更新、删除以及查询。要求:保持无损链接以及函数依赖
关系模式分解的问题:
- 无损链接:
- 有损链接:
模式分解的衡量标准:
- 无损性:
- 定义:关系模式R,分解成p={R1, R2, … , Rk }。F是R上的一个函数依赖集。如果对R中满足F的每一个关系r都有:。则称次分解P是相对于F是无损链接分解。
- 附注:表示关系r在模式Rk属性上的投影。
- 优点:在分解后的模式关系中可以存在一些悬浮元素,解决了插入修改等问题。
- 缺点是查询的时候需要做链接运算,工作量大。
- 如果一个模式分解不是无损链接,那么不可以通过自然连接运算恢复。因此要求分解时利用属性间的函数依赖性质。
- 算法:(判别一个分解的无损连接性)
- 输入:关系模式R上成立的函数依赖集:F。R的分解
- 输出:判断P相对于F的无损链接。
- 建立一个k行n列的表格。每列对应一个属性Ai,每行对应一个模式Ri。如果Aj在Rj中,那么在表格的ij处,那么在ij处题上aj,否则填bij。
- 反复检查F的每一个依赖集,并修改表格中的数据。方法如下:
对F中每一个函数依赖x->y,如果表格中有两行t1,t2。在x上相等,在y上不等。那么修改y,使得在y上两行也相等。- 若t1[Ai],t2[Ai]中有一个等于aj,则另一个也修改为aj。
- 若没有aj,则取t2[Ai]= t1[Ai]=bij。
(t2的行号小于t1的行号。)上述操作一直到表格不能修改为止。
- 检查表格,如果存在a1,a2,a3……an的一行,则为无损分解。否则为有损分解。
举例说明:
概念补充:
最小函数依赖集:
- 定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。
① F中的任何一个函数依赖的右部仅含有一个属性;
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
- 求最小函数依赖集分三步:
- 将F中的所有依赖右边化为单一元素 此题fd={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足
- 去掉F中的所有依赖左边的冗余属性.作法是属性中去掉其中的一个,看看是否依然可以推此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性ab->g,也没有cj->i,因为c+={c,j,i}其中包含i所以j是冗余的.cj->i将成为c->iF={abd->e,ab->g,b->f,c->j,c->i,g->h};
- 去掉F中所有冗余依赖关系.做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如Y在X+中,则表明x->是多余的.需要去掉.此题如果F去掉abd->e,F将等于{ab->g,b->f,c->j,c->i,g->h},而(abd)+={a,d,b,f,g,h},其中不包含e.所有不是多余的.同理(ab)+={a,b,f}也不包含g,故不是多余的.b+={b}不多余,c+={c,i}不多余c->i,g->h多不能去掉.所以所求最小函数依赖集为 F={abd->e,ab->g,b->f,c->j,c->i,g->h};
函数依赖闭包:在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。U, XF+ ={ A|X→A能由FÍ 定义5.13 设F为属性集U上的一组函数依赖,X 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。
Armstrong 公理:从已知的一些函数依赖,可以推导出另外一些函数依赖的推理规则。设U 是关系模式R 的属性集,F 是R 上成立的只涉及U 中属性的函数依赖集。
函数依赖的推理规则有以下三条:
- 自反律:若属性集Y 包含于属性集X,属性集X 包含于U,则X→Y 在R 上成立。(此处X→Y是平凡函数依赖)
- 增广律:若X→Y 在R 上成立,且属性集Z 包含于属性集U,则XZ→YZ 在R 上成立。
- 传递律:若X→Y 和 Y→Z在R 上成立,则X →Z 在R 上成立。
② A2增广律:若X→Y为F所蕴含,且Z U,则XZ→YZ为F所蕴含;
③ A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含。
引理:X→A1A2…Ak成立的充分必要条件是X→Ai成立(i=1,2...k)。
若t[X]=s[X],由于Y X,则有t[Y]=s[Y],所以X→Y成立,自反律得证。
② A2增广律:若X→Y为F所蕴含,且Z U,则XZ→YZ为F所蕴含
若t[XZ]=s[XZ],由于X XZ,Z XZ,根据自反律,则有t[X]=s[X]和t[Z]=s[Z];
由于X→Y,于是t[Y]=s[Y],所以t[YZ]=s[YZ];所以XZ→YZ成立,增广律得证。
③ A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含
再由于Y→Z,有t[Z]=s[Z],所以X→Z为F所蕴含,传递律得证。
- 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
- 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如"姓名→年龄"这个函数依赖只有在不允许有同名人的条件下成立
- 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖"姓名→年龄"成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。
若 X → Y,并且 Y → X, 则记为 X ←→ Y。若 Y 不函数依赖于 X, 则记为 X -\→ Y。在关系模式R(U)中,对于U的子集X和Y:
- 如果 X → Y,但 Y 不为 X 的子集,则称 X → Y 是非平凡的函数依赖。
- 若 X → Y,但 Y 为 X 的子集, 则称 X → Y 是平凡的函数依赖。
- 若 x → y 并且,存在 x 的真子集 x1,使得 x1 → y, 则 y 部分函数依赖于 x。
- 若 x → y 并且,对于 x 的任何一个真子集 x1,都不存在 x1 → y 则称y完全函数依赖于x。
- 若x → y并且y → z,而y -\→ x,则有x → z,称这种函数依赖为传递函数依赖。
例:整数,实数,介于某个取值范围的整数,长度指定长度的字符串集合,{'男','女'},介于某个取值范围的日期等
给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|di Di,i=1,2,…,n}
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。
若Di(i=1,2,…,n)为有限集,其基数为Mi(i=1,2,…,n)
笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为 : R(D1,D2,…,Dn) (R:关系名;n:关系的目或度(Degree))
关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。
由于笛卡尔积不满足交换律,即 (d1,d2,…,dn )≠(d2,d1,…,dn )
但关系满足交换律,即 (d1,d2 ,…,di ,dj ,…,dn)=(d1,d2 ,…,dj,di ,…,dn)
解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性
当n=1时,称该关系为单元关系(Unary relation)。
当n=2时,称该关系为二元关系(Binary relation)。
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
在最简单的情况下,候选码只包含一个属性。称为全码(All-key)(肯定有问题)。
在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。
若一个关系有多个候选码,则选定其中一个为主码(Primary key),
关系中,候选码的属性称为主属性(Prime attribute),不包含在任何候选码中的属性称为非码属性(Non-key attribute)。
基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
关系数据库的型称为关系数据库模式,是对关系数据库的描述,若干域的定义,在这些域上定义的若干关系模式。