当前位置:文档之家› 第二章 关系数据库系统--李辉

第二章 关系数据库系统--李辉


关系(Relation) 也称为表,一个关系对应一张二维表。关系表示
实体和实体之间的联系。

元组(Tuple) 也称为记录,表中的一行即为一个元组,它由一 个实体的相关属性取值构成,相对完整地描述 了一个实体。

属性(Attribute)也称为列,表中的一列即为一个属
性,给每一个属性起一个名称即属性名。 码(Key) 也称为关键字或键,表中能唯一标识元组的
选修(学号,课程号,成绩)

关系模型要求关系必须满足以下的限制条件:


1) 表中的属性必须是基本数据类型,如整型、字符型、 日期型等。如结构和数组就不能作为属性的类型。 2) 表中的每一列的所有值都必须是同类型、同语义的。 如果表中的某一列表示学生的学号,那表中所有元组 在该列上的值都必须是学生的学号。 3) 属性的取值范围必须符合域的定义。 4) 表中的每一列必须有唯一的名字,但不同的属性可 以出自同一个域。列在表中的顺序可以任意交换。 5) 表中任意两个元组的值不能完全相同,即不允许有 重复的行,行在表中的顺序可以任意交换。

关系数据库的基本操作语言是SQL,它 以简洁的语法支持上述各类操作。
2.4 关系代数

关系模型的数据操作是以关系代数和关 系演算为理论基础的。关系演算是和关 系代数等价的关系运算数理逻辑表示方 式。
2.4.1 关系定义 2.4.2 关系运算

2.4.1 关系定义

1. 域
域是一组有相同数据类型的值的集合。 例如, 自然数、整数、实数、长度小于25字 节的字符串集合、{0,1}、大于等于0且小于 10的正整数等。 下面是三个集合表示的域。

2.2.2 实体完整性




实体完整性实体完整性是指关系中的元组在组成主 关键字的属性上不能有空值,而且主关键字的值不 能相同。 例如关系“选修(学号,课程号,成绩)”中,“学号, 课程号”为主关键字,则“学号”和“课程号”两 个属性都不能取空值。 所谓空值就是“不知道”或“不存在”的值。例如 在“选修(学号,课程号,成绩)”关系中,考试之前 所有学生的成绩为空值。 应当注意,空值不等于数值零,也不等于空字符或 空字符串,没有成绩与成绩为零分显然是不同的。
关系数据结构

在用户观点下,关系模型中数据的逻辑结构是一
张二维表,它由行和列组成。
属性 元组
学生登记表
学 号
姓 名
年 龄 19
性 别 女
系 名 社会学
年 级 2005
200500 王小明 4
200500 黄大鹏 6
200500 张文斌 8
20
18


商品学
法律
2005
2005






关系数据模型的数据结构(续)
关系数据模型的数据结构(续)
术语对比
关系术语 关系名 关系模式 关系
一般表格的术语 表名 表头(表格的描述) (一张)二维表
元组
属性 属性名
记录或行
列 列名
属性值
分量 非规范关系
列值
一条记录中的一个列值 表中有表(大表中嵌有小表)
2.2 关系的完整性约束
关系模型通过关系完整性约束条件来保 证数据的正确性和一致性。 关系完整性约束包括

域完整性 实体完整性 参照完整性 用户定义的完整性

2.2.1 域完整性
对数据表中字段属性的约束,如数据类型、 格式、值域范围、是否允许空值等约束, 它是由确定关系结构时所定义的字段的属 性决定的。 域完整性把属性限制在一个有限的集合中。 例如,如果属性类型是整数,那么它就不 能是任何非整数,如101.5。
关系间的引用(续)
例2 学生、课程、学生与课程之间的多对多联系
学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩)
关系间的引用(续)
例3 学生实体及其内部的一对多联系
学生(学号,姓名,性别,专业号,年龄,班长)
学号 801 802 803 804 805 姓名 张三 李四 王五 赵六 钱七 性别 女 男 男 女 男 专业号 01 01 01 02 02 年龄 19 20 20 20 19 802 805 班长 802
关系数据模型的数据结构(续)
例1 学生、系、系与学生之间的一对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
系 (系号,系名,办公地点)
例2 系、系主任、系与系主任间的一对一联系
关系数据模型的数据结构(续)
例3 学生、课程、学生与课程之间的多对多联系:
学生(学号,姓名,年龄,性别,系号,年级) 课程(课程号,课程名,学分)
实体完整性(续)

实体完整性规则说明如下:



(1) 实体完整性规则是针对基本关系而言的。一个 基本表通常对应现实世界的一个实体集。例如学生 关系对应于学生的集合。 (2) 现实世界中的实体是可标识和可区分的,即它 们具有某种唯一性标识。例如每个学生都是一个独 立的个体,他们各不相同。 (3) 关系模型中以主关键字作为唯一性标识。 (4) 主关键字中的属性即主属性不能取空值,也不 能取重复值。如果主属性取空值,就说明存在某个 不可标识的实体;如果两个元组的主属性值相同, 则说明存在两个不可区分的实体,这与第2点相矛盾, 因此这个规则称为实体完整性规则。

• D1=学生集合={李明,刘涛},表示学生姓名的集 合。 • D2=性别集合={男,女},表示性别的集合。 • D3=专业集合={计算机专业,数学专业,法律专 业},表示专业的集合。

最小属性集合。在最简单情况下,码只包含一个属性。 在有些情况下,关系模式的码由所有属性构成,这时 称为全码。若关系模式有不止一个码,这些码都称为 候选码,用户从中选中一个作为主码。

域(Domain) 属性的取值范围。
关系数据模型的数据结构(续)

分量
元组中的一个属性值。

关系模式
对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n) 学生(学号,姓名,性别,出生日期,年级) 关系模式中实体和实体之间的联系都用关系来 表示。
数据库技术与应用
第2章 关系数据库系统(1)
关系模型

关系数据库系统采用关系模型作为数据的组织方式 在关系模型中,现实世界的实体以及实体间的各种联系均
用关系来表示。

在用户看来,关系模型中数据的逻辑结构是一张二维表。 关系模型由关系数据结构、关系操作和数据完整性约束三
部分组成。

计算机厂商新推出的数据库管理系统几乎都支持关系模型
2.2.3 参照完整性
1. 关系间的引用 2. 外码 3. 参照完整性规则
1. 关系间的引用

在关系模型中实体及实体间的联系都是用关系来描述 的,因此可能存在着关系与关系间的引用。
例1 学生实体、专业实体
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
主码 外码
主码
学生关系引用了专业关系的主码“专业号”。 学生关系中的“专业号”值必须是确实存在的专业 的专业号 ,即专业 关系中有该专业的记录。
2.3 关系操作




关系模型的数据操作是以关系代数和关系演算为理 论基础的。 关系表可以看作是记录的集合。关系操作的特点是 集合操作方式,即操作的对象和结果都是集合。 传统的集合操作包括:并、交、差、广义笛卡儿积 等,这些操作对应了数据库对行的操作。 关系模型同时定义了针对列的操作包括选择、投影、 连接等。所有这些操作的结果,仍然是一个集合。
“学号”是主码,“班长”是外码,它引用了本关系的 “学号” “班长” 必须是确实存在的学生的学号
2.外码(Foreign Key)

设F是基本关系R的一个或一组属性,但不是关系R的码。
如果F与基本关系S的主码Ks相对应,则称F是基本关系
R的外码

基本关系R称为参照关系(Referencing Relation)
一功能
用户定义的完整性(续)
例:
课程(课程号,课程名,学分)


“课程号”属性必须取唯一值
非主属性“课程名”也不能取空值

“学分”属性只能取值{1,2,3,4}
关系数据的完整性(续)

目前,多数关系数据库都提供了比较完善 的约束机制。只要用户在定义表的结构时 注意域完整性、实体完整性和用户定义的 完整性,建立表与表之间的关系时进行参 照完整性约束方式的设置,数据库管理系 统会自动维护这些完整性约束来保证数据 的完整性和一致性。
或者取空值(F的每个属性规则(续)
[例1]: 学生关系中每个元组的“专业号”属性只取两类值: (1)空值,表示尚未给该学生分配专业 (2)非空值,这时该值必须是专业关系中某个元组的 “专业号”值,表示该学生不可能分配一个不存在的专 业
参照完整性规则(续)
基本关系S称为被参照关系(Referenced Relation)
或目标关系(Target Relation)
外码(续)

[例1]:学生关系的“专业号与专业关系
的主码“专业号”相对应

“专业号”属性是学生关系的外码 专业关系是被参照关系,学生关系为参 照关系
外码(续)

[例2]: 选修关系的“学号” 与学生关系的主码“学号”相对应 选修关系的“课程号”与课程关系的主码“课程号”相 对应
关系操作(续)

在关系模型的操作理论支持下,关系数据库 主要支持以下基本操作:
(1) 插入。在一个表中插入一条或多条记录。 (2) 删除。从一个表中删除一条或多条满足 条件的记录。 (3) 修改。在一个表中修改满足条件的记录 中的某些字段的值。
相关主题