数据库系统讲义03关系模型及关系运算秋解读.docx
《数据库系统讲义03关系模型及关系运算秋解读.docx》由会员分享,可在线阅读,更多相关《数据库系统讲义03关系模型及关系运算秋解读.docx(33页珍藏版)》请在冰豆网上搜索。
数据库系统讲义03关系模型及关系运算秋解读
数据库系统概念与技术
第三章关系模型及关系运算
真即是美,知识是最高的善
无限
风光
在险
峰
1
France数据库系统概述
3
Hungary
你我它Belgium
实体-联系模型Germany
2
SQLIreland
4
SQL编程
Italy
5
数据完整性Latvia
6
关系数据库设计Lithuania
7
查询处理及优化Luxemburg
8
数据库管理系统DBMSNetherlands
9
3.1关系
3.2关系模型3.3关系代数
3.4元组关系演算3.5域关系演算
数据库
数据的集合
processprocessprocessprocessprocess
request
response
访问语言
语言处理
数据结构交互式语言嵌入式语言
完整性控制
DBMS其它查询优化处理数据的概念模型
数据库系统设计
现实世界
逻辑结构数据操作
物理结构
第三章关系模型及关系运算
3.1关系
3.2关系模型
3.3关系代数
3.4元组关系演算
3.5域关系演算
关系模型(relationmodel
z关系理论是建立在集合代数理论基础上的,有着坚实的数学基础。
zE.F.Codd于70年代初提出关系数据理论,他因此获
得1981年的ACM图灵奖。
z早期代表系统
¾SystemR:
由IBM研制。
¾INGRES:
由加州Berkeley分校研制。
z目前主流的商业数据库系统
¾Oracle,Informix,Sybase,SQLServer,DB2。
¾Access,Foxpro,Foxbase。
域(Domain
z一组值的集合,这组值具有相同的数据类型.Null是任
何域的成员.
笛卡尔积(CartesianProduct
z一组域D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn|di∈Di,i=1,…,n}z笛卡尔积的每个元素(d1,d2,…,dn称作一个n-元组(n-tuple。
z元组的每一个值di叫做一个分量(component.z若Di为有限集,其基数为mi,则笛卡尔积的基数为
in
im
∏=1
例:
设
D1为教师集合(T={t1,t2}
D2为学生集合(S={s1,s2,s3}
D3为课程集合(C={c1,c2}
则笛卡尔积D1×D2×D3是个三元组集合,元组个数为2×3×2,是所有可能的(教师,学生,课程元组集合:
{{t1,s1,c1},{t1,s1,c2},{t1,s2,c1},{t1,s2,c2},{t1,s3,c1},{t1,s3,c2},{t2,s1,c1},{t2,s1,c2},{t2,s2,c1},{t2,s2,c2},{t2,s3,c1},{t2,s3,c2}}t1
t2s1s2s3c1c2
t1,s1,c1
t1,s1,c2
…
关系(relation
z笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn表示。
zR是关系的名字,n是关系的度或目(Degree。
¾n=1,一元关系
¾n=2,二元关系
z关系是笛卡尔积中有意义的子集。
¾A=所有的男人×所有的女人×所有的小孩¾有家庭关系的{男人,女人,小孩}⊆A
¾A=所有的学生×所有的课程
¾有选修关系的{学生,课程}⊆A
z关系和表的一一对应
¾一个关系对应一张表,表用表名标识.表和关系同名.
¾一个元组对应一行数据,行用行号标识.由于行数会发生变化(增加,删除,修改,因此,行一般不命名.表的所有行的集合是笛卡尔积的子集.¾某个分量的所有取值对应表的某一列的所有取值.列用列号标识.由于列数一般不发生变化,因此
列要命名,称为列名或属性名
.表的某一列的所有取值的集合是某个域的子集(域名不一定是列名,因为域和列不等价.
关系表元组行
分量列{t1,s3,c1}
元
组行
{t1,s2,c2}
{t1,s2,c1}
{t1,s1,c2}
{t1,s1,c1}分量列关系表
z用表表示关系.例:
设
D1为教师集合(T={t1,t2}
D2为学生集合(S={s1,s2,s3}
D3为课程集合(C={c1,c2}
则D1×D2×D3上的一个关系:
R(D1,D2,D3=
{{t1,s1,c1},{t1,s1,c2},{t1,s2,c1},{t1,s2,c2},{t2,s3,c2}}对应的表如
下
元组/行
号分量/列号属性名
teach表/关系名
关系的性质
z列是同质的.即每一列中的分量来自同一域,是同一类型的数据.di∈Di
××××
Ssex∈{男,女}
z表的不同列可以来自同一个域,为了区别不同的列,每列必须有不同的属性名.
例:
设
D1=Person={王兵,李平,张英,丁梅,吴芳}
D2=Child={王一,李一,李二}
则D1×D1×D2上的一个家庭关系:
R(D1,D2,D3=Family=
{{王兵,张英,王一},{李平,丁梅,李一},{李平,丁梅,李二}}对应的
表如下
李一丁梅李平
李二
丁梅李平王一张英王兵
ChildMother(角色Father(角色
Family
z行列的顺序无关紧要.
同一个关系
z任意两个元组不能完全相同(集合内不能有相同的两个元素.
×
z每一分量必须是不可再分的数据项(1NF,复合属性不允许,多值属性值分为多个行.
符合第一范式(Table
不符合第一范式
(NotTable
关系的码
z候选码(CandidateKey
¾关系中的一个属性组,其值能唯一标识一个元组.若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码.----E-R模型中候选码.
¾任何一个候选码中的属性称作主属性,其它的为非主属性.z主码(PrimaryKey
¾进行数据库设计时,从一个关系的多个候选码中选定一个作为主码.----E-R模型中主码.
全码PK(Student=‘S#’
PK(Family=‘Father,Mother,Child’
z外码(ForeignKey
¾关系r中的一个属性组,它不是r的码,但它与另一个关系s的主码相对应,则称这个属性组为r的参照s的外码,r称为参照关系,s称为被参照关系.
主码
主码
外码FK(Student=‘D#’
3.1关系
第三章关系模型及关系运算
3.1关系
3.2关系模型
3.3关系代数
3.4元组关系演算3.5域关系演算●域
●笛卡尔积
●关系
●关系的性质
●关系的候选码和主属性●关系的主码和外码
数据结构.
z单一的数据结构——关系
z关系模式:
关系的结构描述
¾关系名.
¾关系中的属性名.
¾属性向域的映象.属性向域的映象,一般直接说明为属性的类型、长度等.¾属性间的依赖关系.3.2关系模型
R(A1:
D1,A2:
D2,…,An:
Dn关系模式关系模式的简单表示R(A1,A2,…,AnStudent(S#char(8,Snamechar(10,Ssexchar(2,Sageinteger,
D#char(2,Sclasschar(6
Student(S#,Sname,Ssex,Sage,D#,class
z关系实例:
即关系,是符合某个关系模式在某个时刻的元组的集合.关系模式和关系实例是型与值的关系.
z关系模式与关系(实例
¾同一关系模式下,可有很多的关系.
¾关系模式是关系的结构描述,关系是关系模式在某一时刻的数据.
¾关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的.
Student(S#char(8,Snamechar(10,Ssexchar(2,Sageinteger,D#char(2,Sclasschar(6
z(关系数据库模式.关系数据库的描述.即一组域的定义以及在这组域上定义的若干关系模式的集合.z(关系数据库实例.符合某个数据库模式在某个时刻关系的集合.数据库模式和数据库实例是型与值的关系.z关系数据库形式化描述.
¾域.D={Dk,k=1,2,…}.
¾关系模式.R(A1,A2,…Aj…,An,j=1,2,…,n.¾主码.PK(R.
¾外码.FK(R.
¾元组.t(i=(ri1,ri2,…rij…,rin,rij∈Di∈D,i=1,2,…,m.t为元组变量.
z关系数据库模式的模式图.表示属性以及主码和外码.主码
主码
外码
FK(Student=‘D#’
S#
Sname
SnameSsexSageD#Sclass
D#Dept
student
DnameDean
父
子
zE-R模型向关系模式的转换
¾实体集的关系模式:
A(A1,A2,A3,…;B(B1,B2,B3,…¾联系集的关系模式:
Q(PK(A,PK(B,Q1,Q2,…¾递归联系集的关系模式:
Q(role1,role2,Q1,Q2,…
A3A2A1实体集A联系集QA1Q1Q2
B1E-R模型关系模型
关系模式
A(A1,A2,A3
Q(A1,B1,Q1,Q2
B3
B2B1B(B1,B2,B3
A1A2A3Q1Q2
实体集BB1B2B3PK(A
PK(B
E-R模型
学生课程选修教师
教授
S#
SNSEX
AGE
SDSCORE
C#CN
PC#CREDIT
P#PN
D#SALS(S#,SN,SEX,AGE,SDC(C#,CN,PC#,CREDITPROF(P#,PN,D#,SAL
SC(S#,C#,SCORETEACH(P#,C#PK(S
PK(C
PK(PROF
PK(C
关系模式
E-R模型
学生课程选修教师
教授
S#
SNSEX
AGE
SDSCORE
C#CN
PC#CREDIT
P#PN
D#SALS#SNSEXAGESD
SC#CNPC#CREDIT
CP#PND#SAL
PROFS#C#SCORE
SCP#C#
TEACH关系模式图
E-R模型
EMPNO#NAME
SEXAGE
DEPT
关系模式Work-for
employee
worker
manager
employee(EMPNO#,NAME,SEX,AGE,DEPTWork-for(worker,manager
role1role2
¾弱实体集的关系模式:
B(PK(A,B1,B2,B3,…¾标识性联系集的关系模式:
Q(PK(A,D(B,标识性
联系集无需单独建表,因为其关系模式被弱实体集的关系模式所包含.A3A2A1强实体集A
标识性
联系集Q
A1B1
E-R模型
关系模型
关系模式
A(A1,A2,A3
Q(A1,B1
A1B3
B2B1B(A1,B1,B2,B3
A1A2A3B1B2B3
PK(A
D(BD(BPK(A
D(B
弱实体集B
¾特殊属性
O复合属性:
每个子属性单独创建一列.”关系的
基本特征是每一分量必须是不可再分的数据项”.
O派生属性:
作为表的计算列,itdepends
O多值属性:
关系理论
addrcitystrpost-codestatestr-no
str-name
apart-no
customercust-idcust-namecustomer(cust-id,cust-name,addr(state,city,post-code,str(str-no,str-name,apart-no
customer
customer(cust-id,cust-name,state,
city,post-code,str-no,str-name,apart-no
¾码.E-R模型中的码(超码,候选码,主码自动转换为关系的码(超码,候选码,主码.
O实体集的码
O联系集的码
91:
1
91:
m
9m:
n
O递归联系集的码
O弱实体集的码
O标识性联系集的码
z模型、模式和实例的比较E-R模型
关系模型
E-R模式
关系模式
表
R(A1,A2,…,Ap
E-R实例
关系实例
实体集联系集
属性属性
属性A(A1,A2,…,AnQ(Q1,Q2,…,QmE-R的码
关系的码
PK(R
PK(A
PK(Q
¥课堂练习
将银行企业的E-R模型转换为关系模式(模式图
branch
customerloan
loan-number
account
account-number
employee
cust-bankertype
depositor
payment-number
borrowerWork-for
worker
manager
loan-branchloan-payment
payment
branch-nameassetsbranch-city
customer-id,customer-city
customer-streetcustomer-nameemployee-idstart-date
employee-nameemployee-length
telephone-number
dependent-name
balance
amount
payment-amount
payment-date
access-date
关系操作.关系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time的方式.查询和修改.
z过程化.用户指导系统对数据库执行一系列操作以计
算所需结果.
¾关系代数.用对关系的运算来表达查询,需要指明所
用操作.基本运算包括:
选择、投影、连接、除、并、
交、差.
z非过程化.用户只需描述所需信息,而不用给出获取该
信息的具体过程.关系演算,用谓词来表达查询.
¾元组关系演算:
谓词变元的基本对象是元组变量.
¾域关系演算:
谓词变元的基本对象是域变量.
z具体数据库系统中的实际语言
¾ISBL:
关系代数语言,由IBM公司研制。
¾QUEL,ALPHA:
Codd提出的基于元组关系演算语言,在INGRES上实现。
¾QBE:
基于域关系演算语言,由IBM公司研制。
¾SQL:
介于关系代数和关系演算之间,由IBM公司在研制SystemR时提出的,成为关系数据库标准
语言。
关系模型的完整性
z实体完整性(主码
¾实体是可区分的,即具有唯一性标识。
¾每个关系必须有一个主码。
¾主码不能取Null值。
主码
×
×
ENO
ENameDNO
EMP
DEPTDNO
DName
03小陈
0003
小刘000302
小李000201小王0001DNOENameENO网络教研室
02
软件教研室01DNameDNOz参照完整性(外码。
关系r的参照关系s的外码FK(r的取值有两种:
¾Null值。
¾关系s的某个主码的取值。
EMP
DEPT
z用户自定义完整性。
用户针对具体的应用环境定义的完整性约束条件。
¾年龄的约束条件,如,0-100
¾性别的约束条件,{0,1}
年龄在[12,35]之
间
要求名字在5个汉
字字符之内性别只能是
“男”或“女”
颠覆完整性
的示例
第三章关系模型及关系运算
3.1关系
3.2关系模型
3.3关系代数
3.4元组关系演算3.5域关系演算●关系模式,关系数据库模式
●关系实例,关系数据库实例
●关系数据库的模式图
●E-R模型向关系模式的转换
●关系操作
□过程化:
关系代数
□非过程化:
元组和域关系演算●关系模型的完整性
□实体完整性
□参照完整性
□用户自定义完整性
查询
z基本运算
¾一元运算
O选择、投影、更名。
¾多元运算
O笛卡儿积、集合并、集合差。
z附加运算,可由基本运算导出的运算¾集合交、自然连接、除、赋值。
z扩展的关系代数运算
¾广义投影、聚集、外连接。
数据库修改
z删除、插入、更新。
A1
Ai
An
A2
一些记号。
给定关系模式R(A1,A2,…,An,设R是它的一个具
体的关系,t∈R是关系的一个元组.
z分量
设t∈R,则t[Ai]表示元组t中相应于属性Ai的一个分量.
z属性列
A={Ai1,Ai2,…,Aik}⊆{A1,A2,…,An},称A为属性列.A表示{A1,A2,…,An}中去掉A后剩余的属性组.
t[A]=(t[Ai1],t[Ai2],…,t[Aik].
R
t∈R
AA
t[A]=(t[Ai1],t[Ai2],…,t[Aik]
t[Ai]
示例关系
S(S#,SNAME,SEX,AGE,D#---学生C(C#,CN,PC#,CREDIT(学分---课程SC(S#,C#,SCORE---选修关系
PROF(P#,PNAME,AGE,D#,SAL(工资---教师PC(P#,C#---教课
DEPT(D#,DNAME,DEAN(系主任作为教师的编号P#---系
学生S
课程C教师PROF
选课SC
教课PC
S#SEX
SCORESNAMEAGED#院系DEPT
D#DEANDNAMEC#PC#CNCREDIT
P#
AGE
PNAMED#
SAL
E-R模型
关系模式
S#SNAMESEXAGED#S
C#CNPC#CREDIT
CP#PNAMEAGED#SAL
PROFS#C#SCORE
SCP#C#
PCD#DNAMEDEAN
DEPTPC
PROF
DEPT
S
C
SC
模式图
关系
202119192022学生年龄AGECSCSMACIMACS
所属系名SD男女女男女男
性别SEXABCDEF
S1S2S3S4S5S6
学生姓名SN学号S#C1C1C2C4
先行课号码
PC#
23424
学分CREDIT
GHIJK
C1C2C3C4C5
课程名字CN课程号C#S(S#,SN,SEX,AGE,SD
C(C#,CN,PC#,CREDIT
SC(S#,C#,SCORE
AAA
BB
CCBCBB
DCBB
C1C2C3C5C1C2C4C2C3C4C3C5C2C3C5
S1S1S1S1S2S2S2S3S3S3S4S4S5S5S5
学习成绩SCORE
课程号C#学号
S#
D1D1D2D3D3D4
系别*025*********
工资SAL302925412633
年龄AGEABCDEF
P1P2P3P4P5P6
姓名PNAME工号P#PROF(P#,PNAME,AGE,D#,SAL
C1C2C1C1C2C3
P1P1P2P3P4P4
课程名C#工号P#PC(P#,C#
计算机系数学系管理系
系名DNAMEP1P2P4
D1D2D3
系主任DEAN系号D#DEPT(D#,DNAME,DEAN
选择运算(σ-select
z定义:
在关系R中选择满足给定条件的元组(从行的角度.
z公式:
σ
(R={t|t∈R,F(t=‘真’},
F(t
F(t是选择的条件,∀t∈R,F(t要么为真,要么为假.
F(t=(算术表达式1逻辑运算符(算术表达式2…
¾逻辑运算符:
∧,∨,¬
¾算术表达式:
XθY
OX,Y是属性名、常量、或简单函数.
Oθ是比较算符,θ∈{>,≥,<,≤,=,≠}
202119192022学生年龄AGECSCSMACIMACS
所属系名SD男女女男女男
性别SEXABCDEF
S1S2S3S4S5S6
学生姓名SN学号S#20212022学生年龄AGECSCSMACS
所属系名SD男女女男
性别SEXABEF
S1S2S5S6
学生姓名SN学号
S#202122学生年龄AGECSCSCS
所属系名SD男女男
性别SEXABF
S1S2S6
学生姓名SN学号
S#202119192022学生年龄AGECSCSMACIMACS
所属系名SD男女女男女男
性别SEXABCDEF
S1S2S3S4S5S6
学生姓名SN学号
S#S
S
σ
σ
例1,求计算机系CS的学生.
σSD=‘CS’(S
例2,求年龄大于或等于20的学生.
σAGE≥20(S
202119192022学生年龄AGECSCSMACIMACS
所属系名SD男女女男女男
性别SEXABCDEF
S1S2S3S4S5S6
学生姓名SN学号S#2022学生年龄AGECSCS
所属系名SD男男
性别SEXAF
S1S6
学生姓名SN学号
S#S
¥课堂练习
找计算机系年龄不小于30或者不大于20的男学生.
答案
σSD=‘CS’∧(AGE≥30∨AGE≤20∧SEX=‘男’(S
σ
例3,找年龄不小于20的男学生.
σAGE≥20∧SEX=‘男’(S
202119192022学生年龄AGECSCSMACIMACS
所属系名SD男女女男女男