第2章 关系数据库系统
第2章 关系数据库系统 2.1 关系模型的基本概念 2.2 关系代数 2.3 关系规范化 2
2.1 关系模型的基本概念 关系模型的基本术语 表2.1 职工信息表 表2.2 部门信息表 职工号 职工名 性别 年龄 部门号 101001 2.1 关系模型的基本概念 关系模型的基本术语 表2.1 职工信息表 职工号 职工名 性别 年龄 部门号 101001 王军 男 24 101 101003 黄明业 34 103018 张华 女 35 103 104024 吴林华 27 104 表2.2 部门信息表 部门号 部门名 部门经理 电话号码 101 技术部 林克 26540214 102 财务部 徐莹华 26540652 103 公关部 张文韬 26544852 104 策划部 谢海 26543298
2.1 关系模型的基本概念 1.关系 一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。 2.1 关系模型的基本概念 1.关系 一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。 2. 属性及值域 二维表的每一列在关系中称为属性(Attribute),每个属性都有一个属性名,各个属性的取值称为属性值。每个属性有一定的取值范围,称为值域。 3. 关系模式 对关系的描述称为关系模式,关系模式的一般形式为: 关系名(属性1,属性2,…,属性n) 例如,职工信息关系(职工号,职工名,性别,年龄,部门号)
2.1 关系模型的基本概念 4.元组 二维表的每一行在关系中称为元组(Tuple)。一行描述了现实世界中的一个实体,或者描述了不同实体间的一种联系。 5. 键 (1) 超键:在关系中能唯一标识元组的属性或属性的组合称为该关系的超键。 (2)候选键:不含有多余属性的超键称为候选键。 (3)主键:用户选作元组标识的一个候选键称为主键。 例如,表2.1的职工信息关系中,属性组合(职工号,职工名)是超键,但不是候选键 。
2.1 关系模型的基本概念 6. 主属性与非主属性 关系中包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性称为非主属性。 例如,表2.1职工关系中,职工号和职工名是主属性,其他属性是非主属性。 7. 外键、参照关系与依赖关系 如果关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,则称此属性或属性组合为本关系的外部关键字或外键(Foreign Key)。 在关系数据库中,用外部关键字表示两个表间的联系。以外键作为主键的关系称为参照关系或主关系,外键所在的关系称为依赖关系或从关系。
2.1 关系模型的基本概念 关系的定义和性质 在关系模型中,对关系作了下列规范性限制。 (1)关系中的每一个属性值是不可分解的。 2.1 关系模型的基本概念 关系的定义和性质 在关系模型中,对关系作了下列规范性限制。 (1)关系中的每一个属性值是不可分解的。 (2)每一个关系模式中属性的数据类型以及属性的个数是固定的,并且每个属性必须命名,在同一个关系模式中,属性名必须是不同的。 (2)每一个关系仅有一种关系模式。 (4)在关系中没有行序。 (5)在关系中没有列序。 (6)在同一个关系中不允许出现完全相同的元组。
2.1 关系模型的基本概念 关系模型的三要素 1. 数据结构 2. 关系操作 2.1 关系模型的基本概念 关系模型的三要素 1. 数据结构 2. 关系操作 (1)代数方法,也称为关系代数,是以集合(关系是元组的集合)操作为基础,应用对关系的专门运算来表达查询的要求。 (2)逻辑方法,也称为关系演算,是以谓词演算为基础,通过元组必须满足的谓词公式来表达查询要求。 3. 关系模型的三类完整性规则
2.1 关系模型的基本概念 (1)实体完整性 所谓实体完整性,就是一个关系模型中的所有元组都是惟一的,没有两个完全相同的元组,也就是一个二维表中没有两个完全相同行,也称为行完整性。 例如,表2.1的职工信息关系,根据实体完整性,“职工号”不能取空值 。 (2)参照完整性 当一个数据表中有外部关键字(即该列是另外一个表的关键字)时,外部关键字列的所有值,都必须出现在其所对应的表中,这就是参照完整性的含义 。 例如,表2.1的职工信息表和表2.2的部门信息表。 (3)用户定义完整性
2.2 关系代数 传统的集合运算 对二维表格进行运算的机制。 1.并 设A、B同为n元关系,则A、B的并也是一个n元关系,记作A∪B。 2.2 关系代数 传统的集合运算 对二维表格进行运算的机制。 1.并 设A、B同为n元关系,则A、B的并也是一个n元关系,记作A∪B。 2.差 设A、B同为n元关系,则A、B的差也是一个n元关系,记作A-B。A-B包含了所有属于A但不属于B的元组。 3.交 设A、B同为n元关系,则A、B的交也是一个n元关系,记作A∩B。A∩B包含了所有同属于A、B的元组。
2.2 关系代数 4.广义笛卡尔积 设A1、A2、…、An为任意集合,A1、A2、…、An的笛卡尔乘积记做:A1×A2×…×An,并且定义D= A1×A2×…×An ={(a1,a2,…,an)|ai∈Ai,i=1,2,…,n},其中(a1,a2,…,an)是一个元组,它的每个元素ai取自对应的集合Ai。 例如,设A={1,2},B={a,b},则A×B={(1,a),(1,b),(2,a),(2,b)}。
2.2 关系代数 【例2.1】
2.2 关系代数 专门的关系运算 1. 选择 对关系作水平分割 定义如下: t是元组变量,F是元组需满足的公式。 2. 投影 2.2 关系代数 专门的关系运算 1. 选择 对关系作水平分割 定义如下: t是元组变量,F是元组需满足的公式。 2. 投影 对关系作垂直分割 设关系R是k元关系,R在其分量,…,(m≤k,…,i1,…,im为1到k间的整数)上的投影用 表示,它是一个m元元组的集合,定义如下:(t是元组变量 )
2.2 关系代数 【例2.2】 (a)是关系R,(b)表示 C>3(R),(c)表示πC,A(R)。
2.2 关系代数 3. 连接 连接运算的结果是笛卡尔积的子集 (1) 连接 从关系R和S的笛卡尔积中选取属性值满足某一 操作的元组。 2.2 关系代数 3. 连接 连接运算的结果是笛卡尔积的子集 (1) 连接 从关系R和S的笛卡尔积中选取属性值满足某一 操作的元组。 形式定义如下: 分别表示元组tr的第i个分量、元组ts的第j个分量 表示这两个分量的 操作
2.2 关系代数 (2)F连接 F连接操作是从关系R和S的笛卡尔积中选取属性值满足某一公式F的元组,记为 R S。 (3)自然连接 2.2 关系代数 (2)F连接 F连接操作是从关系R和S的笛卡尔积中选取属性值满足某一公式F的元组,记为 R S。 (3)自然连接 两个关系R和S的自然连接操作用R∞S表示,计算过程如下: ①计算R×S; ②设R和S的公共属性是A1,…,Ak,挑选R×S中满足R.A1=S.A1,…,R.Ak=S.Ak的那些元组; ③去掉S.A1,…,S.Ak这些列。 因而R∞S定义如下: R∞S≡
2.2 关系代数 【例2.3】 (a)和(b)是两个关系R和S,(c)表示连接,(d)表示F连接,(e)表示自然连接。
2.2 关系代数 4. 除法 设关系R和S的元数分别为r和s(设r>s>0),那么R S是一个(r-s)元的元组集合。 (R S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组<t,u>必在关系R中。
2.2 关系代数 【例2.4】 (a)和(b)是两个关系R和S,(c)表示除法运算。
2.2 关系代数 关系代数表达式及其应用实例 【例2.5】设教学数据库中有三个关系: 学生关系(学号,姓名,性别,年龄,所在系,专业) 2.2 关系代数 关系代数表达式及其应用实例 【例2.5】设教学数据库中有三个关系: 学生关系(学号,姓名,性别,年龄,所在系,专业) 课程关系(课程号,课程名,学时数) 选课关系(学号,课程号,成绩) 下面用关系代数表达式表达每个查询语句。 (1)检索课程号为C201的学生的学号与成绩。 (2)检索选修课程名为应用数学的学生的学号与姓名。 π1,3(
2.2 关系代数 (3)检索选修全部课程的学生姓名。 过程如下: 学生选课情况表示如下: 全部课程表示如下: 2.2 关系代数 (3)检索选修全部课程的学生姓名。 过程如下: 学生选课情况表示如下: 全部课程表示如下: 选修了全部课程的学生学号可用除法操作表示,操作结果是学号集 ,表示如下: 从学号求学生姓名,可用自然连接和投影操作组合而成:
2.3 关系规范化 关系模式的设计问题 引例:表2.3关系模型存在如下几方面的问题。 数据冗余;修改异常;插入异常;删除异常 2.3 关系规范化 关系模式的设计问题 引例:表2.3关系模型存在如下几方面的问题。 数据冗余;修改异常;插入异常;删除异常 表2.3 商品供应关系模式SUPPLY的实例 SNO SNAME SCITY CODE PNO PNAME WEIGHT QTY S1 迅飞公司 上海 021 P102 六角螺栓 2.58 280 S2 网达公司 天津 022 P432 转管 45.14 360 P761 水暖三通 34.96 200 S3 新嘉公司 北京 010 480 S4 中联公司 100
2.3 关系规范化 要解决上述3个问题,可将商品供应关系模式SUPPLY分解以下为四个模式: 2.3 关系规范化 要解决上述3个问题,可将商品供应关系模式SUPPLY分解以下为四个模式: SUPPLIER(SNO,SNAME,SCITY) CITY(SCITY,CODE) PART(PNO,PNAME,WEIGHT) S_P(SNO,PNO,QTY)
SNO SNAME SCITY S1 迅飞公司 上海 S2 网达公司 天津 S3 新嘉公司 北京 S4 中联公司 SCITY SNAME 表2.4 关系模式SUPPLY的分解实例 关系模式SUPPLIER的实例 关系模式CITY的实例 SNO SNAME SCITY S1 迅飞公司 上海 S2 网达公司 天津 S3 新嘉公司 北京 S4 中联公司 SCITY SNAME 上海 021 天津 022 北京 010 关系模式S_P的实例 关系模式PART的实例 SNO PNO QTY S1 P102 280 S2 P432 360 P761 200 S3 480 S4 100 PNO PNAME WEIGHT P102 六角螺栓 2.58 P432 转管 45.14 p761 水暖三通 34.96
2.3 关系规范化 函数依赖 定义1 设R=R(A1,A2,…,An)是一个关系模式(A1,A2,…,An是R的属性),X∈{ A1,A2,…,An },Y∈{ A1,A2,…,An },即X和Y是R的属性子集,T1、T2是R的两个任意元组,即T1=T1(A1,A2,…,An),T2=T2(A1,A2,…,An),如果当T1(X)=T2(X)成立时,总有T1(Y)=T2(Y),则称X决定Y,或称Y函数依赖于X。记为:X→Y。
2.3 关系规范化 定义2 R,X,Y如定义1所设,如果X→Y成立,但对X的任意真子集X1,都有X1→Y不成立,称Y完全函数依赖于X,否则,称Y部分函数依赖于X。 定义3 设X,Y,Z是关系模式R的不同属性集,若X→Y(并且Y→X不成立),Y→Z,称X传递决定Z,或称Z传递函数依赖于X。
2.3 关系规范化 关系模式的范式与规范化 对关系模式的规范化要求分成从低到高不同的层次,分别称为第1范式、第2范式、第3范式、Boyce-Codd范式、第4范式。 图2.1 各种范式之间的关系
2.3 关系规范化 1. 第1范式 当关系模式R的所有属性都不能分解为更基本的数据单位时,称R是满足第1范式的,简记为1NF。 2. 第二范式 如果关系模式R满足第1范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第2范式,简记为2NF。 3. 第三范式 设R是一个满足第1范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第3范式,简记为3NF。 模式分解见课本例2.8 ,例2.9。
2.3 关系规范化 从第一范式规范化到第三范式的过程如图2.2所示。 图2.2 从1NF规范化到3NF的过程