Chapte r3
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一,在关系数据库中,我们只考虑有限关系(笛卡儿积的有限子 集)
因为无限关系既不能显式存储,也不能有效地显示
第二,关系的每个属性都必须是原子的,即每个属性只能取原子值
一个值是原子的(atomic),如果它被看作是不可再分的
在关系数据库中,原子值是数据访问的最小单位 属性的原子性要求是规范化关系的基本要求 例如
数据库系统原理 3
2013年7月27日星期六
第3章 关系数据模型
3.1 关系数据库结构 3.2 从E-R模型到关系模型
3.3 关系的完整性约束
3.4 关系代数 3.5 关系演算 3.6 关系数据库的更新 3.7 小结
2013年7月27日星期六
数据库系统原理
4
3.1 关系数据库结构
3.1 关系数据库结构
程序设计语言的变量只在程序中存在 “关系变量”是持久对象,它独立于具体的程序,并且其值持久地 存放在数据库中
2013年7月27日星期六
数据库系统原理
16
关系模式(续)
在数据库的文献中,人们常常把关系模式和关系都笼统地称为关系
有时,术语“关系”还被看作关系值的同义词
本书,在需要强调“型”时,使用术语“关系模式”,在其他情况下, 使用术语“关系”,并把它看作是具有“型”和“值”的变量
普通高等教育十一五规划教材
数据库原理教程
范明、叶阳东、邱保志、职为梅 编著 科学出版社,2008
第3章 关系数据模型
关系数据模型
关系数据模型是E.F. Codd 1970年提出的 关系数据模型已经成为20世纪80年代中期以来DBMS广泛支持的数据模 型 关于关系数据库理论的争论 关系数据库理论最初提出时, 当时的数据库界的主流是持反对态度 的 反对的主要理由是实现效率问题 关系数据库理论具有坚实的数学基础, 简洁的表现形式展示出了巨 大的优势 长达十余年的研究、开发, 关系数据库赢得了彻底的胜利 争论带给我们的启示 关系数据模型 具有坚实的数学基础 简洁的数据表示形式 支持说明性语言 具有很强的数据建模能力,能够满足事务处理建模需要。
码(key)
设X是R的属性集,t是R的元组
使用这种记号,上述码的定义可以表述为:
2013年7月27日星期六
数据库系统原理
19
关系的码(续)
例3.2 考虑职工关系,其模式如下: EMPS (Eno, Ename, Esex, Eage, Eaddress, Dname, Esalary) 其中属性Eno, Ename, Esex, Eage, Eaddress, Dname, Esalary分别表 示职工的编号、姓名、性别、年龄、家庭住址、所属部门和工资 由于每位职工都有唯一的编号,因此Eno是EMPS关系的候选码 显然,{Eno, Ename}也能唯一地确定每位职工,但是它包含多余的 属性,不是极小的,因此它是EMPS的超码,而不是码 码的选择依赖于语义,而不是关系的当前值 注意:对于单属性集,我们简单地使用属性名,而不用集合记号。这是 数据库文献中的习惯用法
字符串通常可以看作是原子的 集合值不是原子的 由多个分量组成的复合值也不是原子的
数据库系统原理
2013年7月27日星期六
14ቤተ መጻሕፍቲ ባይዱ
关系模式
在数据库中,必须区分“型”和“值” 关系模式概念对应于程序设计语言中的类型概念,它是型,定义关系的 结构 严格地说,关系模式(relational schema)用关系模式名、关系模式的诸 属性和属性对应的域,以及属性间的数据依赖集定义
元组
图3.1 Students关系的二维表表示
2013年7月27日星期六
数据库系统原理
10
关系(续)
注意:
由于关系是笛卡儿积的子集,因此在采用二维表表示关系时,行的
次序是不重要的 关系(表)中不能包含两个相同的元组(行)
此外,用二维表表示关系使得我们可以以任意列次序显示关系
因为二维表的列用属性名命名,交换一个表的两个列,得到的新表 与原来的表包含相同的信息 例如,交换图3.1中Students关系的第3列和第4列,结果表仍然记录 了相同的学生信息(参见图3.2) 这种性质通常被表述为“关系的列次序是不重要的”
关系模式和关系数据库模式是相对稳定的,一般不随时间变化
关系和关系数据库的值是现实世界某一时刻状态的反映,随时间推移而 变化
常把关系模式看作关系数据库的结构、框架或内涵,而把关系看作关系 模式的实例或外延
2013年7月27日星期六
数据库系统原理
18
关系的码
超码(super key):
关系R的属性集X是它的超码,如果R的所有可能实例都不包含两个 不同的元组,它们在X的所有属性上都具有相同的值 关系R的属性集K是它的码,如果K是R的超码,并且K的任何真子集 都不是R的超码(即K是极小超码) 记号t[X]表示元组t在属性集X上的那些分量 设X是R的属性集。如果t1和t2是R的任意实例中的元组,并且t1[X] = t2[X],则t1 = t2 ,那么我们称X是关系R的超码;如果X的任何真子 集都不具有上述性质,则称X为R的码。
其中, R是关系模式名, A1, A2, …, An是属性名
2013年7月27日星期六
数据库系统原理
15
关系模式(续)
把关系模式看作“类型”,关系就是具有特定类型的“变量”
作为变量,关系有“型”和“值”,并且其值可以改变
关系的型用关系模式刻画,关系的值即关系在某一时刻的快照,又称关 系实例 关系变量不同于程序设计语言中的变量
例如,定义一个关系模式 Students (Sno, Sname, Sex, Birthday) 图3.1给出的Students关系就是该关系模式的一个关系值
2013年7月27日星期六
数据库系统原理
17
关系模式(续)
关系数据库也有型和值之分
关系数据库模式由若干域的定义和一组定义在这些域上的关系模式 组成 关系数据库的值就是这些关系模式对应的关系在某一时刻的值
2013年7月27日星期六
数据库系统原理
11
关系(续)
Sno 200705001 200705002 200705003 200705004 200705005 Sname 张华 李玉 欧阳山 林艳 高山 Sex 男 女 男 女 男 Birthday 1988.12 1989.10 1989.05 1988.09 1989.06 Sno 200705001 200705002 200705003 200705004 200705005 Sname 张华 李玉 欧阳山 林艳 高山 Birthday 1988.12 1989.10 1989.05 1988.09 1989.06 Sex 男 女 男 女 男
3.1.1 关系 3.1.2 关系模式
3.1.3 关系的码
2013年7月27日星期六
数据库系统原理
6
关系
关系的概念源于数学中的集合论关系 数据库引入关系作为数据模型的基本结构时需要做一些调整。 域(domain)是具有相同类型的值的集合 域可以是有限集,也可以是无穷集。如果域D为有限集时,则称D中 元素的个数为D的基数,记作| D |。 例如,整数的集合、实数的集合、字符串的集合、长度不超过20的 字符串的集合和集合{0,1}等都是域。
2013年7月27日星期六
数据库系统原理
21
关系的码(续)
通常,当一个关系具有多个码时,应当选择其中的一个作为唯一识别关 系元组的码 主码(primary key): 用于表示由多个码中选出的作为唯一识别关系元组 的码,而所有的码又称候选码(candidate key) 码中的属性称为主属性(primary attribute): ,而不在任何码中出现的属 性称为非主属性 外码(foreign key)
形式地,如果FK是关系R的属性集,并且不是R的码,但是FK与关 系R’的主码K’对应,则称FK是关系R的外码。其中R是参照关系,R’ 是被参照关系(R与R’不一定是不同的关系),并称FK参照R’的主 码K’
属性对应的域定义了属性的取值范围,当我们用DBMS提供数据定 义语言定义关系时我们才关心每个属性域的精确定义
属性间的数据依赖集定义了关系模式的合法关系必须满足的约束条 件,它对关系模式的设计具有重要影响 R (A1, A2, …, An)
在不需要详细考虑属性的域和属性之间的数据依赖时,关系模式简记为
数据库系统原理 8
2013年7月27日星期六
关系(续)
需要对关系附加一些语义和限制 在关系数据库中,关系表示现实世界的实体集和联系集 这些实体集和联系集将以关系的形式存储在数据库中,并且关系的 每个元组都代表一个实体或联系 在关系数据库中,关系通常用关系名命名,并被看作一个二维表 表有一个唯一的名字,对应于关系名 表的每一列对应于一个分量 列通常是命名的,称为属性(attribute) 表的第一行是表头,给出各列的属性名,其余每行对应于一个元组 在数据库文献中,术语“表”常常被用作“关系”的同义词。本书, 我们也这样做,但是在大部分时候,我们更愿意使用术语“关系”
2013年7月27日星期六
数据库系统原理
7
关系(续)
给定n个域D1, D2, …, Dn(它们不必互不相同)上的笛卡儿积(Cartesian product) 定义为 D1 D2… Dn={(d1, d2, …, dn)| d1D1 d2 D2 … dn Dn} 其中,每个元素(d1, d2, …, dn)称为一个n-元组(简称元组),而di为元组的 第i个分量(component) 若D1, D2, …, Dn均为有限集,则D1 D2… Dn也是有限集,其基数为| D1 | | D2 | … | Dn |。 例如,如果D1={0, 1},D2={a, b, c}, 则 D1 D2={(0, a), (0, b), (0, c), (1, a), (1, b), (1, c)}, 基数为| D1 | | D2 | = 6 域D1, D2, …, Dn上的关系(relation)r是笛卡儿积D1 D2… Dn的任意子集 n个域上的关系称为n-元关系。“元”又称目或度。 例如,{(0, a), (1, b), (1, c)}是上面提到的笛卡儿积D1 D2的一个子集,它可 以看作域D1和D2上的一个二元关系
2013年7月27日星期六
数据库系统原理
20
关系的码(续)
一个关系可能有多个码 例如,考虑 EMPS (Eno, Ename, Esex, Eage, Eaddress, Dname, Esalary)
Eno是码 如果我们认为家庭住址相同的两位职工不可能同名同姓,则{Ename, Eaddress}也是EMPS的码 是否把Eno和{Ename, Eaddress}都看作EMPS的码取决于设计者 如果决定把它们都看作EMPS的码,则必须确保EMPS的关系实例 中的任何两个不同的元组既不能在Eno上具有相同的值,也不能在 {Ename, Eaddress}上具有相同的值
图3.2 Students关系的两种二维表表示
2013年7月27日星期六
数据库系统原理
12
关系(续)
在关系数据库中,任何有意义的关系都需要满足一定的约束条件
这些约束都是语义约束,包括
关系的完整性约束 数据依赖
2013年7月27日星期六
数据库系统原理
13
关系(续)
除了语义约束外,对关系的限制主要有两点
2013年7月27日星期六
数据库系统原理
9
关系(续)
关系的这种直观表示允许我们对关系附加一些语义 我们可以通过属性名解释关系元组的语义 可以通过属性的语义定义关系的码,定义关系的完整性约束 例3.1 图3.1用二维表形式给出了一个关系Students
属性 表头,列出属性名 Sno 200705001 200705002 200705003 200705004 200705005 Sname 张华 李玉 欧阳山 林艳 高山 Sex 男 女 男 女 男 Birthday 1988.12 1989.10 1989.05 1988.09 1989.06