access基础2
第2章 关系数据库设计理论 本章学习目标 关系数据库是目前各类数据库中最重要、最流行的数据库。20世纪 80年代以来,计 算机软件厂商新推出的数据库管理系统产品几乎都是关系数据库,非关系系统的产品也大 都增加了关系接口。本章从关系模型入手,对关系数据结构、关系代数、关系完整性以及 关系数据库的设计规范进行专门介绍。通过本章的学习,读者应该掌握以下内容: 关系模型的概念与分类 关系数据结构及定义 关系代数的基本运算 关系完整性 关系数据库设计与设计规范 关系数据库是支持关系模型的数据库系统,它应用数学的方法来处理数据库中的数据。 系统而严格地提出关系模型的是美国 IBM 公司的 E.F.Codd,他于 1970年发表的题目为 “A Relational Model of Data for Shared Data Banks”的论文,奠定了关系数据库的理论基 础。 目前,关系数据库已经成为计算机领域技术成熟、应用广泛的数据处理工具,以 SQL Server、Sybase 和 Oracle 为代表的关系数据库产品得到越来越广泛的应用。 2.1 关 系 模 型 2.1.1 关于关系的一些术语 “关系”就是关系数据模型的数据结构,刻画关系数据结构就是要定义关系。从本质 上来讲,关系是一个数学概念,具体说,是一个集合论中的概念,因此,从集合论的角度 给出关系数据结构的形式化定义就是十分自然的事情。这样就将关系数据模型置于严格的 数学基础之上。 (1) 关系 在关系模型中,一个关系就是一张二维表,每一个关系有一个关系名。在数据库中, 一个关系存储为一个数据表。 (2) 属性 表中的列称为属性,每一个列有一个属性名,对应数据表中的一个字段。 (3) 元组 表中的行称为元组。一行就是一个元组,对应数据表中的记录,元组的各分量分别对第 2 章 关系数据 库设计理论 17 应于关系的各个属性。关系模型要求每个元组的每个分量都是不可再分的数据项。 (4) 域 具有相同数据类型的值的集合称为域(Domain),域是属性的取值范围,即不同元组对 同一个属性的取值所限定的范围。 (5) 候选码 如果关系中的某个属性或属性组能唯一地标识一个元组,称该属性或属性组为候选码。 (6) 主码(主键) 若一个关系中有多个候选码,则选定其中一个为主码(主键)。主码的属性称为主属性。 (7) 外码(外键) 设 F 是基本关系 R 的一个或一组属性,但不是 R 的候选码,如果 F 与基本关系 S 的 主码 K s 相对应,则称 F 为基本关系 R 的外码。 2.1.2 关系模型 关系数据库采用关系数据模型(简称关系模型)作为数据组织方式,而关系模型是用二 维表格结构来表示实体及实体间联系的模型。二维表中的每一列代表实体或实体间关系的 某种属性,二维表中的一行叫做一个元组,是记录类型的实例,代表了某个具体的实体或 具体实体间的特定关系。关系模型不仅可以方便地表示两个实体类型间的 1∶1、1∶n关 系,而且可以直接描述它们之间的 m∶n关系。 关系模型由关系数据结构、关系操作集合和完整性规则三部分组成。 关系模型的特点: (1) 关系必须规范化,指关系模型中的每一个关系模式都必须满足一定的要求; (2) 模型概念单一; (3) 集合操作,操作对象和结果都是元组的集合,即关系。 2.2 关系数据结构及形式化表示 在关系模型中,无论是实体还是实体之间的联系都由单一的结构类型关系来表示。 2.2.1 关系数据结构 (1) 笛卡儿积(Cartesian Product) 设有一组域 , ,…, ,这些域可以部分或者全部相同。域 , ,…, 1 D 2 D n D 1 D 2 D 的笛卡儿积定义为如下集合: n D … ={( , , …, )| ,i=1,2, …,n} 1 D 2 D n D 1 d 2 d n d i d i D 其中每一个元素( , , …, )称为一个 n元组(或简称元组),元素中的每一个值 1 d 2 d n dAccess 2003 数据库教程 18 称为一个分量。 i d 若干个域的笛卡儿积具有相当多的元素,在实际应用中可能包含许多“无意义”的元 素。人们通常感兴趣的是笛卡儿积的某些子集,笛卡儿积的子集就是一个关系。 两个集合 R 和 S 的笛卡儿积是元素对的集合,该元素对是通过选择 R 的某一元素(任 何元素)作为第一个元素,S 的元素作为第二个元素构成的,该乘积用 R S 表示。笛卡尔 积的结果可表示为一个二维表,表中的每行对应一个元组,表中的每列对应一个域。 例如,我们给出三个域: =导师集合 导师=张毅,刘德成 1 D =专业集合 专业=计算机专业,通信专业 2 D =研究生集合 学生=吕景刚,王弶,李兵 3 D 则 , , 的笛卡尔积为: 1 D 2 D 3 D × × ={(张毅,计算机专业,吕景刚),(张毅,计算机专业,王弶),(张毅,计 1 D 2 D 3 D 算机专业,李兵),(张毅,通信专业,吕景刚),(张毅,通信专业,王弶),(张毅,通信专 业,李兵),(刘德成,计算机专业,吕景刚),(刘德成,计算机专业,王弶),(刘德成,计 算机专业,李兵),(刘德成,通信专业,吕景刚),(刘德成,通信专业,王弶),(刘德成, 通信专业,李兵)} 该笛卡儿积的基数为 2×2×3=12,这也就是说 × × 一共有 2×2×3=12 个元组, 1 D 2 D 3 D 这 12个元组的总体可组成一张二维表,如表 2.1所示。 表2.1 , , 的笛卡儿积 1 D 2 D 3 D 导 师 专 业 学 生 张 毅 计算机专业 吕景刚 张 毅 计算机专业 王 弶 张 毅 计算机专业 李 兵 张 毅 通信专业 吕景刚 张 毅 通信专业 王 弶 张 毅 通信专业 李 兵 刘德成 计算机专业 吕景刚 刘德成 计算机专业 王 弶 刘德成 计算机专业 李 兵 刘德成 通信专业 吕景刚 刘德成 通信专业 王 弶 刘德成 通信专业 李 兵 (2) 关系(Relation) 笛卡儿积 … 的子集 R 称为在域 … 上的一个关系 1 D 2 D n D 1 D 2 D n D (Relation),通常表示为: R( , ,…, ) 1 D 2 D n D 其中,R 表示关系的名称,n称为关系 R 的元数或度数(Degree),而关系 R 中所含有第 2 章 关系数据 库设计理论 19 的元组个数称为 R 的基数(Cardinal Number)。 关系是笛卡儿积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每 列对应一个域。由于域可以相同,为了加以区分,必须为每列起一个名字,称为属性 (attribute),N 目关系必有 n个属性。 例如,可以在表 2.1的笛卡儿积中取出一个子集来构造一个关系。由于一个研究生只 师从于一个导师,学习某一个专业,所以笛卡儿积中的许多元组是无实际意义的,从中取 出有实际意义的元组来构造关系。给关系命名为 SAP,属性名就取域名,即导师、专业和 学生,则这个关系可以表示为