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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
〔例2〕 : 选修(学号,课程号,成绩) “学号”和“课程号”可能的取值 : (1)选修关系中的主属性,不能取空值 (2)只能取相应被参照关系中已经存在的主码值
参照完整性规则(续)
例3〕: 学生(学号,姓名,性别,专业号,年龄,班长) “班长”属性值可以取两类值: (1)空值,表示该学生所在班级尚未选出班长 (2)非空值,该值必须是本关系中某个元组的学号 值
数据库技术与应用
第2章 关系数据库系统(1)
关系模型

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

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

计算机厂商新推出的数据库管理系统几乎都支持关系模型
基本关系S称为被参照关系(Referenced Relation)
或目标关系(Target Relation)
外码(续)

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

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

[例2]: 选修关系的“学号” 与学生关系的主码“学号”相对应 选修关系的“课程号”与课程关系的主码“课程号”相 对应
关系数据模型的数据结构(续)
例1 学生、系、系与学生之间的一对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
系 (系号,系名,办公地点)
例2 系、系主任、系与系主任间的一对一联系
关系数据模型的数据结构(续)
例3 学生、课程、学生与课程之间的多对多联系:
学生(学号,姓名,年龄,性别,系号,年级) 课程(课程号,课程名,学分)

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

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

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

2.2.2 实体完整性




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

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

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

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

关系模式
对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n) 学生(学号,姓名,性别,出生日期,年级) 关系模式中实体和实体之间的联系都用关系来 表示。
“学号”是主码,“班长”是外码,它引用了本关系的 “学号” “班长” 必须是确实存在的学生的学号
2.外码(Foreign Key)

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

基本关系R称为参照关系(Referencing Relation)
2.2.3 参照完整性
1. 关系间的引用 2. 外码 3. 参照完整性规则
1. 关系间的引用

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

根据参照完整性规则,应该对数据库的 修改加以限制,这些限制包括
插入约束 删除约束 更新约束。

2.2.4 用户定义的完整性

针对某一具体关系数据库的约束条件,反映某一具体应 用所涉及的数据必须满足的语义要求

关系模型应提供定义和检验这类完整性的机制,以便用
统一的系统的方法处理它们,而不要由应用程序承担这
2.3 关系操作




关系模型的数据操作是以关系代数和关系演算为理 论基础的。 关系表可以看作是记录的集合。关系操作的特点是 集合操作方式,即操作的对象和结果都是集合。 传统的集合操作包括:并、交、差、广义笛卡儿积 等,这些操作对应了数据库对行的操作。 关系模型同时定义了针对列的操作包括选择、投影、 连接等。所有这些操作的结果,仍然是一个集合。
实体完整性(续)

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



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

• D1=学生集合={李明,刘涛},表示学生姓名的集 合。 • D2=性别集合={男,女},表示性别的集合。 • D3=专业集合={计算机专业,数学专业,法律专 业},表示专业的集合。
关系数据模型的数据结构(续)
术语对比
关系术语 关系名 关系模式 关系
一般表格的术语 表名 表头(表格的描述) (一张)二维表
元组
属性 属性名
记录或行
列 列名
属性值
分量 非规范关系
列值
一条记录中的一个列值 表中有表(大表中嵌有小表)
2.2 关系的完整性约束
关系模型通过关系完整性约束条件来保 证数据的正确性和一致性。 关系完整性约束包括
选修(学号,课程号,成绩)

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


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

“学号”和“课程号”是选修关系的外码
学生关系和课程关系均为被参照关系 选修关系为参照关系
外码(续)

[例3]:“班长”与本身的主码“学号”相对 应

“班长”是外码 学生关系既是参照关系也是被参照关系
外码(续)

关系R和S不一定是不同的关系

目标关系S的主码Ks 和参照关系的外码F必须定义在同

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

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

2.4.1 关系定义

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

6) 表中的每一个分量必须是一个不可分的数据项, 也就是说,不允许表中还有表。下图中工资和扣除是 可分的数据项,工资又分为基本工资、津贴和职务工 资,扣除又分为房租和水电。 因此,该表就不符合 关系模型要求。这种表也称为非规范关系。
关系数据模型的数据结构(续)

关系模型的型和值




型是指对某一类数据的结构和属性的说明,值是型的 一个具体赋值。例如:学生记录定义为(学号,姓名, 性别,出生日期和年级)这样的记录型,而(2007005, 王一明,男,19890921,2007)则是该记录型的一个 记录值。 关系模式是对关系数据库中全体数据的逻辑结构和 特征的描述,它仅仅涉及型的描述,不涉及具体的值。 关系模式的一个具体值称为模式的一个实例 (Instance)。同一个模式可以有很多实例。 模式是相对稳定的,而实例是相对变动的,因为数据 库中的数据是在不断更新的。模式反映的是数据的结 构及其联系,而实例反映的是数据库某一时刻的状态。
一个(或一组)域上

外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的 名字,以便于识别
3. 参照完整性规则
参照完整性规则 若属性(或属性组)F是基本关系R的外码它与基本 关系S的主码Ks相对应(基本关系R和S不一定是不 同的关系),则对于R中每个元组在F上的值必须为:

关Байду номын сангаас操作(续)

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

续上

(4) 查找。包括以下查找操作:
• 从一个表或几个表中查找符合条件的记录; • 产生汇总记录; • 从表中选择某些列或生成新的计算列来形成 新的关系模式,并选择满足条件的记录; • 从多个表中选择某些属性列或生成计算列来 形成新的关系模式,并选择满足条件的记录。
关系数据结构

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


商品学
法律
2005
2005






关系数据模型的数据结构(续)
一功能
用户定义的完整性(续)
例:
课程(课程号,课程名,学分)


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

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

目前,多数关系数据库都提供了比较完善 的约束机制。只要用户在定义表的结构时 注意域完整性、实体完整性和用户定义的 完整性,建立表与表之间的关系时进行参 照完整性约束方式的设置,数据库管理系 统会自动维护这些完整性约束来保证数据 的完整性和一致性。
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值
参照完整性规则(续)
[例1]: 学生关系中每个元组的“专业号”属性只取两类值: (1)空值,表示尚未给该学生分配专业 (2)非空值,这时该值必须是专业关系中某个元组的 “专业号”值,表示该学生不可能分配一个不存在的专 业
参照完整性规则(续)
关系间的引用(续)
例2 学生、课程、学生与课程之间的多对多联系
学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩)
关系间的引用(续)
例3 学生实体及其内部的一对多联系
学生(学号,姓名,性别,专业号,年龄,班长)
学号 801 802 803 804 805 姓名 张三 李四 王五 赵六 钱七 性别 女 男 男 女 男 专业号 01 01 01 02 02 年龄 19 20 20 20 19 802 805 班长 802

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

2.2.1 域完整性
对数据表中字段属性的约束,如数据类型、 格式、值域范围、是否允许空值等约束, 它是由确定关系结构时所定义的字段的属 性决定的。 域完整性把属性限制在一个有限的集合中。 例如,如果属性类型是整数,那么它就不 能是任何非整数,如101.5。
相关文档
最新文档