《SQLServer第2章关系数据库 基本 原理》由会员分享,可在线阅读,更多相关《SQLServer第2章关系数据库 基本 原理(44页珍藏版)》请在金锄头文库上搜索。
1、1,第2章 关系数据库基本原理,2,本章内容,2.1 关系数据库基本概述 2.2 关系代数的基本原理 2.3 关系模式的分解 2.4 关系模型的完整性约束 2.5 数据库的设计方法,3,2.1 关系数据库概述,关系数据库 所谓关系数据库,其数据组织的逻辑结构一定是采用关系数据模型,即使用二维表格方式描述实体及其相互间的关系,然后把这种逻辑关系采用一定方式向物理结构映射,并存储在某种设备上。作为数据库应用的开发人员,一般只把焦点集中在数据的逻辑结构上,数据的逻辑结构向物理结构的映射,是数据库管理系统自动完成的。,表2-1 关系模型示例,关系数据模型 数据模型的任务是描述现实世界中的实体及其联系。
2、关系数据模型就是采用一个有序数组描述实体及其属性,用这种有序数组的集合描述一个实体集合,而采用定义在两个集合上的关系反映不同实体间的联系。,4,2.1 关系数据库概述,关系数据库基本概念 定义:关系数据库就是一些相关的二维表和其他数据库对象的集合。 在这个定义中明确,关系数据库中的所有信息都存储在二维表格中;一个关系数据库可能包含多个表;除了这种二维表外,关系数据库还包含一些其他对象,如视图等。 关系模型的基本概念: 1关系 一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。,5,2.1 关系数据库概述,2元组 二维表的每一行在关系中称为元组(T
3、uple)。一行描述了现实世界中的一个实体,或者描述了不同实体间的一种联系。 3属性 二维表的每一列在关系中称为属性(Attribute),每个属性都有一个属性名,各个属性的取值称为属性值。每个属性有一定的取值范围,称为值域。 4关键字 关系中能惟一区分、确定不同元组的属性或属性组合,称为该关系的一个关键字。关键字又称为键或码(Key)。,6,2.1 关系数据库概述,5外部关键字 如果关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,则称此属性或属性组合为本关系的外部关键字或外键(Foreign Key)。在关系数据库中,用外部关键字表示两个表间的联系。,7,2.1 关系数据库概
4、述,关系数据库基本特征 有坚实的理论基础 数据结构简单、易于理解 对用户提供了较全面的操作支持 得到了众多开发商的支持,8,2.2 关系代数的基本原理,关系数据库的理论基础是集合论中的关系,本节使用数学语言对关系进行形式描述。本节的内容很抽象,但它是理解关系数据模型的基础。 关系的数学定义 1集合 集合没有严格的形式定义,一般说来,集合是与某一研究过程相关的一类对象的整体,这些对象称为集合的元素。 2元组 几个元素组成的一个有序组称为一个元组,通常元组用圆括号括起来的一些元素表示,元素间使用逗号分隔。 例如(3,5,6)和(E001,钱达理,男,东风路78号)是元组的例子。 在关系数据库中,可
5、以把一个表的每一行看作一个元组。,9,2.2 关系代数的基本原理,3集合的笛卡尔乘积 设A1、A2、An为任意集合,A1、A2、An的笛卡尔乘积记做:A1A2An,并且定义D= A1A2An =(a1,a2,an)|aiAi,i=1,2,n,其中(a1,a2,an)是一个元组,它的每个元素ai取自对应的集合Ai。 例如,设A=1,2,B=a,b,则AB=(1,a),(1,b),(2,a),(2,b)。 4关系 关系是一个集合,其组成元素是元组而不是组成元组的元素。,10,2.2 关系代数的基本原理,关系运算 一种数据模型既要提供描述现实世界的数据结构,也要提供提供对数据的操作运算手段。在关系数
6、据库中就是要提供对二维表格进行运算的机制。 1并 设A、B同为n元关系,则A、B的并也是一个n元关系,记作AB。 2交 设A、B同为n元关系,则A、B的交也是一个n元关系,记作AB。AB包含了所有同属于A、B的元组。 3差 设A、B同为n元关系,则A、B的差也是一个n元关系,记作A-B。A-B包含了所有属于A但不属于B的元组。,11,2.2 关系代数的基本原理,例2-1 设A=(湖南,长沙),(河北,石家庄),(陕西,西安),B=(湖北,武汉),(广东,广州),(广东,深圳),(陕西,西安),求 AB、AB、A-B。 显然,A、B是表示城市和所在省的关系。 AB=(湖南,长沙),(河北,石家庄
7、),(陕西,西安),(湖北,武汉),(广东,广州),(广东,深圳) AB=(陕西,西安) A-B=(湖南,长沙),(河北,石家庄),12,2.2 关系代数的基本原理,4连接 设A是一个包含m个元组的k1元关系,B是一个包含n个元组的k2元关系,则A、B的连接是一个包含mn个元组的k1+k2元关系,记作AB。 5投影 设 R=R(A1,A2,An)是一个n元关系,i1,i2,im是1,2,n的一个子集,并且 i1i2im,定义: 称(R)是R在上的一个投影。 6选择 设 R=(a1,a2,an)是一个n元关系,S是关于(a1,a2,an)的一个条件,R中所有满足S条件的元组组成的子关系S(R),
8、称为R的一个选择。,13,2.2 关系代数的基本原理,例2-2 设 R1=R1(姓名,性别)=(钱达理,男),(东方牧,男),R2=R2(所在单位,住址)=(总经理办,东风路78号),(销售部,五一北路25号),求 (1)R=R1R2。 (2)R在(姓名,所在单位,住址)的投影。 (3)根据表2-1,求R关系的一个选择。,解: (1)R=(钱达理,男,总经理办,东风路78号),(钱达理,男,销售部,五一北路25号),(东方牧,男,总经理办,东风路78号),(东方牧,男,销售部,五一北路25号)。 R是一个包含4个元组的4元关系。 (2)根据投影的定义,只需对上面得到的R关系的每个元组删掉性别属
9、性即可,所以 (R)=(钱达理,总经理办,东风路78号),(钱达理,销售部,五一北路25号),(东方牧,总经理办,东风路78号),(东方牧,销售部,五一北路25号) (3)根据表2-1,钱达理是总经理办的,住在东风路78号,东方牧也是总经理办的,住在五一北路25号,R关系中只有一个元组反映的情况正确,其余元组数据错误,应删掉,根据该条件(即符合表2-1的描述)所得到的一个选择是: R(S)=(钱达理,总经理办,东风路78号),14,设计数据库重要的环节是设计一个二维表的表头及其约束条件,也就是其关系模式,设计过程中既要考虑所提供的信息能否全面支持应用系统所要求的功能,也要考虑处理数据的方便,更
10、能快速的进行信息的删除、插入、更新等操作。,2.3 关系模式的分解,引例:表2-2关系模型存在如下3方面的问题。 插入异常 删除异常 数据冗余与更新异常,表 2-2 一个不好的关系模式,15,2.3 关系模式的分解,要解决上述3个问题,需要把表2-2进行分解,表中前3列独立建立一个表,指定供应商代码作为关键字,并删除相同的行;后3列独立,引入供应商代码列作为外键,并增加一个订货日期列,供应商代码和订货日期的组合作为第2个表的关键字。经过这样处理后,上述异常问题就完全解决了。,16,2.3 关系模式的分解,函数依赖的基本概念 定义1:设一个关系为R(U),X和Y为属性集U上的子集,若对于X上的每
11、个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X函数决定Y,或称Y函数依赖于X,记作XY,称X为决定因素。 例如:设一个职工关系为(职工号,姓名,性别,年龄,职务),职工号用来标识每个职工,选作为该关系的主码。对于该关系中每个职工的职工号,都对应着姓名属性中的唯一值,即该职工的姓名,或者说一个职工的姓名由其职工号唯一确定,所以称职工号函数决定姓名,或称姓名函数依赖于职工号,记作“职工号姓名”,职工号为该函数依赖的决定因素。同理,当一名职工的职工号被确定之后,它所对应的性别、年龄、职务等属性值就被唯一确定下来了,所以职工号函数决定性别、年龄、职务等描述职工特征的每个属性,可以
12、分别记作为“职工号性别”、“职工号年龄”、“职工号职务”。,17,2.3 关系模式的分解,定义2:设一个关系为R(U),X和Y为属性集U上的子集,若存在XY,同时X的一个真子集X也能够函数决定Y,即存在XY,则称XY的函数依赖为部分函数依赖,或者说,X部分函数决定Y,Y部分函数依赖于X;否则若在X中不存在一个真子集X,使得X也能够函数决定Y,则称X完全函数决定Y,或Y完全函数依赖于X。XY的部分函数依赖也称为局部函数依赖。,18,2.3 关系模式的分解,例如:在上面介绍的职工关系中,职工号同其他每个属性之间的函数依赖都是完全函数依赖,因为职工号是一个单属性决定因素,它不可能再包含其他任何属性,
13、也就不可能存在真子集函数决定其他每个属性的情况存在。另外,如“(职工号,性别)”的值虽然能够函数决定相应职工的年龄,但其中的真子集职工号就能够函数决定其年龄,所以(职工号,性别)到年龄之间的函数依赖为部分函数依赖。即在“(职工号,性别)年龄”的函数依赖中存在着“职工号年龄”的函数依赖。 定义3 设X,Y,Z是关系模式R的不同属性集,若XY(并且YX不成立),YZ,称X传递决定Z,或称Z传递函数依赖于X。,19,2.3 关系模式的分解,关系的规范化 1. 主属性与非主属性 候选关键属性和关键属性 定义4 设关系模式R(A1,A2,An),A1,A2,An是R的属性,X是R的一个属性集,如果 X(
14、A1,A2,An), 对于X的任意真子集X1,X1(A1,A2,An)都不成立, 则称属性集X是关系模式R的一个候选关键属性。 如果关系模式R只有一个候选关键属性,称这惟一的候选关键属性为关键属性,否则,应从多个候选关键属性中指定一个作为关键属性。 习惯上把候选关键属性称为候选关键字,关键属性称为关键字。 主属性和非主属性 定义5 设Ai是关系模式R的一个属性,若Ai属于R的某个候选关键属性,称Ai是R的主属性,否则,称Ai为非主属性。,20,2.3 关系模式的分解,2. 第1范式 对关系模式的规范化要求分成从低到高不同的层次,分别称为第1范式、第2范式、第3范式、Boyce-Codd范式、第
15、4范式和第5范式。 定义6 当关系模式R的所有属性都不能分解为更基本的数据单位时,称R是满足第1范式的,简记为1NF。 例如,如果关于员工的关系中有一个工资属性,而工资又由更基本的两个数据项基本工资和岗位工资组成,则这个员工的关系模式就不满足1NF。 满足第1范式的关系模式还会存在插入、删除、修改异常的现象,要消除这些异常,还要满足更高层次的规范化要求。,21,2.3 关系模式的分解,3. 第2范式 定义7 如果关系模式R满足第1范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第2范式,简记为2NF。 R=R(读者编号,工作单位,图书编号,借阅日期,归还日期) 满足1范式
16、 如果进一步假设,每个读者只能借阅同一种书号的图书一次,(读者编号,图书编号)就是一个一个候选关键属性,则“工作单位”部分函数依赖于该候选关键属性。 不满足2范式,更新异常。 4. 第3范式 定义8 设R是一个满足第1范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第3范式,简记为3NF。 定理 若关系模式R符合3NF条件,则R一定符合2NF条件。,22,2.3 关系模式的分解,5. Boyce-Codd范式 定义9 设R是一个关系模式,若R的每一个函数依赖关系的左部都是R的一个候选关键字,称R满足Boyce-Codd范式,简记为BCNF。 可以证明,BCNF是比3NF更强的规范(证明略),即符合BCNF条件的关系模式一定符合3NF条件,但反过来却不成立。,23,2.3 关系模式的分解,关系的分