关系模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试分别用关系代数式表示下列查询语言: 1) 检索LIU老师所授课程的课程号及课程名 2) 检索年龄大于23岁的男学生学号和姓名 3) 检索学号为S3的学生所学课程的课程名和任课老师名 4) 检索至少选修LIU老师所授课程中一门课的女学生姓名 5) 检索学生WANG不学的课程的课程号 6) 检索至少选修两门课程的学生学号 7) 检索全部学生都选修的课程号与课程名 8) 检索选修LIU老师所授的课程的学生学号
orders C003 UT
Tianjin 9
orderno month cid
aid
pid
qty
dollars
O001 July C001 A001 P001 100 120.00
O002 May C004 A002 P002 890 340.00
c. 用户定义完整性:
➢ 关系操作:集合操作方式
•笛卡尔积:R × S 结果为n+m元关系,由k1 × k2个元组组成
例1:求关系R和S的并、交、差、笛卡尔积的值
R ABC abc daf cad
S DEF daf b ga
例2:求笛卡尔积的值
D1=男人集合={王军,李平,张迎} D2=女人集合={丁小,吴方} D3=孩子集合={王一,李一,李二}
关系运算:
关系代数语言:以集合运算为基础 关系演算语言:以谓词演算为基础
➢关系代数:它的运算对象和结果都为关系
运算名称
运算符 举例(R、S为两个关系)
并
∪
基差
-
本 操 笛卡尔积 ×
作 选择
σ
投影
∏
复交
∩
合 连接
操
作除
÷
R∪S R-S R×S ơF(R) ПA(R) R∩ S
RS R÷ S
•并:R ∪ S 结果由属于R和S的元组组成,仍为n元关系 •差:R-S 结果由属于R但不属于S的元组组成,仍为n元关系 •交: R∩ S 结果由既属于R又属于S的元组组成,仍为n元关系 相当于R-(R-S)
度至少为133的厂商
作业:
在S-SC-C关系中: 1) 检索学习课程号为C4的学生学号与成绩 2) 检索学习课程号为C1的学生学号与姓名 3) 检索选修课程名为MATHS的学生学号与姓名 4) 检索选修课程号为C2或C3的学生学号 5) 检索至少选修课程号为C2或C3的学生学号 6) 检索不学C2课程的学生姓名与年龄 7) 检索学习全部课程学生的姓名 8) 检索所学课程包含学生S8所学课程的学生学号
注:关系规范化限制:
➢关系中每个属性值必不可分 ➢关系中不能出现重复元组 ➢关系中不考虑元组和属性间的顺序 ➢每列中的属性值的数据类型相同 ➢不同列属性值的数据类型可同
•候选键:一个属性组的值唯一标识一个元组,该属性组称为候选键 •主键(主码): •外键:
Customers(id,cname,city,discnt) Orders(orderno,month,cid,aid,pid,qty,dollars) sc(sno,cno,cgrade) sc(id,sno,cno,cgrade)
7) 选择与并的交换: 8) 选择与差运算的交换: 9) 投影与笛卡尔积的交换: 10)投影与并的交换:
关系代数表达式的优化
➢优化算法:
输入:一个关系表达式的语法树 输出:计算该表达式的程序 方法:a) 利用规则4
b) 对于每个选择,据规则4-8尽可能把它移到 树的叶端
c) 对于每个投影,据规则3,9,10,5尽可能把它移 向树的叶端
1) 检索选修课程号为C2或C3的学生学号 2) 检索至少选修课程号为C2或C3的学生学号 3) 检索至少选修课程号为C2和C3的学生学号 4) 检索选修课程号为C2或C3的学生学号(两
课程不同时选)
5) 检索选修课程号只为C2或C3的学生学号
例:在关系S-SC-C中,求选修了课程C2的学生姓名
Ccredit(学分) 4 3 4 3
SC(选课表)
Sno(学号) Cno(课程号)
03001
C001
03001
C002
03003
C003
03004
C004
Cgrade(成绩) 93 80 85 92
关系代数运算的应用
例1 设教学数据库有三个关系 S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER)
即求出TS中不在R的元组
例4 R ABC D ab cd ab ef bc ef ed cd ed ef a bde
计算:R ÷ S
R÷S AB ab ed
S CD cd ef
例5 R ABC A1 B1 C2 A2 B2 C4 A1 B2 C3 A3 B1 C1 A1 B2 C1
计算:R ÷ S
关系模型
关系模型三要素:数据结构、数据操作、完整性规则 数据结构:关系
➢ 数据结构:关系
学号
2001001 2001002 2001003
姓名年龄ຫໍສະໝຸດ 张三20王五
19
李英
19
学生登记表
性别
男 男 女
•关系:规范化的二维表
•属性、属性名、元组
•关系的目(度、关系的元数) 、单元关系、 二元关系、关系的基数
d) 利用规则3、4、5把选择和投影的串接变成单 个选择、单个投影或一个选择后跟一个投影
e) (× ∪-)和它所有的直接祖先一组
➢优化步骤:
1) 关系代数表达式转为二叉树
a) 结点代表操作符,叶子代表关系 b) 离根结点越远的操作符,越先运算
[实例]
2) 根据算法对二叉树进行优化
转换成二叉树实例
Sno 03001 03001 03003 03004
Sname 刘黎 刘黎 王丽 周一
Ssex Sage Cno Cgrade
男
19 C001 93
男
19 C002 80
女
18 C003 85
男
20 C004 92
例3:
RABC abc def ghI
SDE ca fb
计算:R S、R2<1 S、 R2<1∧1≥2S
[实例]
1.求R S A<B
ABCDEF abcdaf abcbga
❖等值连接:R S A=B
❖自然连接:R S(特殊的等值连接)
特殊性在于: a) 在两个关系中比较的分量必须是两个相同
的属性或属性组 b) 在自然连接结果中如有相同属性,则把重
复列去掉,在等值连接中则不去掉 [实例]
例2:求S SC
关系代数的查询优化
➢优化的策略:
1. 选择运算应尽可能先做 2. 在执行连接前对文件适当进行预处理。 3. 把投影运算和选择运算同时进行 4. 把投影运算同其前或后的双目运算结合起来,
没必要为了去掉某些字段而扫描关系 5. 把某些选择同在它前面要执行的笛卡尔积结
合起来成为个连接运算 6. 找出公共子表达式
例2 设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式 S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEITHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY)
试用关系代数表达式表示下列查询语句
1) 检索供应工程J1零件的供应商号码SNO 2) 检索供应工程J1零件P1的供应商号码SNO 3) 检索供应工程J1零件为红色的供应商号码SNO 4) 检索没有使用天津供应商生产的红色零件的工程号JNO 5) 检索至少用了供应商S1所供应的全部零件的工程号JNO
结论:关系是笛卡尔积的有限子集
[返回]
•选择: ơF(R) F形如:riθc(其中为=、≠、>、<、≤、≥或∧、
∨、(,┐),F的取值为真或假
结果为关系R中满足条件F的元组
[实例] 1. 查询年龄小于20的学生
Sno(学号) 03001 03002 03003
Sname(姓名) 刘黎 张立 王丽
Ssex(性别) 男 男 女
S(学生表)
Sno(学号) Sname(姓名) Ssex(性别)
03001
刘黎
男
03002
张立
男
03003
王丽
女
03004
周一
男
Sage(年龄) 19 19 18 20
C(课程表)
Cno(课程号) Cname(课程名)
C001
数据库
C002
操作系统
C003
数据结构
C004
微机原理
Cteacher(教师) 张三 刘亚 王一 陈永
R÷S A A1
S BCD B1 C2 D2 B2 C1 D2 B2 C3 D1
[实例]
例6:查询至少选修了C001和C003课程的学生学号.
步骤: •在课程表上选择满足课程号为C001和C003 元组,并在课程号上投影建立临时表K •除
临时表K
Cno C001 C003
Sno 03001
学生-选课(S-SC)关系库:
D1 × D2 × D3= {王军,丁小,王一} {王军,丁小,李
一} {王军,丁小,李二}{王军,吴方,王一}{王军,天方, 李一}{王军,吴方,李二}{李平,丁小,王一}{李平,丁 小,李一}{李平,丁小,李二}{李平,吴方,王一}{李平, 吴方,李一}{李平,吴方,李二}{张迎,丁小,王一}{张 迎,丁小,李一}{张迎,丁小,李二}{张迎,吴方,王一} {张迎,吴方,李一}{张迎,吴方,李二}
•关系模式:对关系的描述
R(U,D,dom,F)
关系名(属性名1,属性名2,…)
➢ 三类完整性规则
a. 实体完整性: 主键不能为空 b. 参照完整性: 在外键中不能引用在其他表中并
customers 不存在的主键值
cid
cname City
Discnt
C001
Sohu
Beijing 10
C002
ACME Duluth 8
Sname(姓名) 刘黎 张立 王丽 周一
Sage(年龄) 19 19 18 20
2. 查询选课学生的学号
Sno(学号) 03001 03003 03004
注:在投影操作结果中产生的重复元组应取消
•连接:R S AθB 从关系R和S的笛卡尔积中选取属性间满 足一定条件的元组。
等价于:R AθB S= ∏i1,i2,…im(σR.A1=S.B1 ∧ … ∧ R. Ak= S. Bk(R×S))
例3 计算机管理数据库有四个关系模式
Product(maker,model,type)
Laptop(model,speed,ram,hd,screen,price)
Printer(model,color,type,price) 试用关系代数表达式表示下列查询语句: 1) 什么型号的PC速度至少为150? 2) 检索厂商B生产的所有产品(任一类型)的型号和价格 3) 检索哪个厂商生产的便携式电脑具有最少1G字节的硬盘 4) 检索所有彩色激光打印机型号 5) 检索销售便携式电脑但不销售PC的厂商 6) 检索在两个或两个以上PC中出现的硬盘容量 7) 检索速度同且RAM相同的成对的PC型号 8) 检索至少生产两种不同计算机(PC或Laptop)且机器速
•除法:R÷S
设两关系R和S的元数分别为r和s(r≥s>0), 那么R ÷ S是个(r-s)(至少为一元)元的元 组的集合。 结果表示S中的每个元组u必在关系R中
具体的计算过程:
a) T=∏1,2,…,r-s(R) b) W=(T×S)-R
c) V=∏1,2,…,r-s(W) d) R÷S=T-V
注:预处理的方法:对文件排序和在连接属性上建索引。
➢关系代数等价变换规则:
1) 交换律: 2) 结合律: 3) 选择串接定律: σF1(σF2(E))≡σF1∧F2(E) 4) 投影串接定律: 5) 选择和投影的交换律: 6) 选择与笛卡尔积的交换律:ơ F(E1 × E2)
•若F中的属性都是E1中的属性: •若F=F1 ∧ F2,且F1只涉及E1中属性,F2只涉及E2中属性 •F1只涉及E1中属性,F2涉及E1和E2两者的属性
2.
Sno(学号) 03001 03002 03004
查询所有男生的情况
Sname(姓名) 刘黎 张立 周一
Ssex(性别) 男 男 男
Sage(年龄) 19 19 18
Sage(年龄) 19 19 20
•投影: ПA(R) 选取关系的某些列做垂直投影,并可重新安
排列的顺序。
[实例] 1. 在S表的Sname和Sage列上作投影
有三种等价的关系代数表达式 •П SN(ơ S.S#=SC.S#∧SC.C#=‘C2’(S × SC))
•П SN(ơ SC.C#=‘C2’(S
SC))
•П SN(S
ơ SC.C#=‘C2’(SC))
分析三种关系代数查询时所花费的时间:
假设:在库中有1000条学生记录,10000选课记录, 其中选C2的记录有50个,设每秒写20块,每块装 10个S元组或100个SC元组,内存中可放五块S元组 一块SC元组。
orders C003 UT
Tianjin 9
orderno month cid
aid
pid
qty
dollars
O001 July C001 A001 P001 100 120.00
O002 May C004 A002 P002 890 340.00
c. 用户定义完整性:
➢ 关系操作:集合操作方式
•笛卡尔积:R × S 结果为n+m元关系,由k1 × k2个元组组成
例1:求关系R和S的并、交、差、笛卡尔积的值
R ABC abc daf cad
S DEF daf b ga
例2:求笛卡尔积的值
D1=男人集合={王军,李平,张迎} D2=女人集合={丁小,吴方} D3=孩子集合={王一,李一,李二}
关系运算:
关系代数语言:以集合运算为基础 关系演算语言:以谓词演算为基础
➢关系代数:它的运算对象和结果都为关系
运算名称
运算符 举例(R、S为两个关系)
并
∪
基差
-
本 操 笛卡尔积 ×
作 选择
σ
投影
∏
复交
∩
合 连接
操
作除
÷
R∪S R-S R×S ơF(R) ПA(R) R∩ S
RS R÷ S
•并:R ∪ S 结果由属于R和S的元组组成,仍为n元关系 •差:R-S 结果由属于R但不属于S的元组组成,仍为n元关系 •交: R∩ S 结果由既属于R又属于S的元组组成,仍为n元关系 相当于R-(R-S)
度至少为133的厂商
作业:
在S-SC-C关系中: 1) 检索学习课程号为C4的学生学号与成绩 2) 检索学习课程号为C1的学生学号与姓名 3) 检索选修课程名为MATHS的学生学号与姓名 4) 检索选修课程号为C2或C3的学生学号 5) 检索至少选修课程号为C2或C3的学生学号 6) 检索不学C2课程的学生姓名与年龄 7) 检索学习全部课程学生的姓名 8) 检索所学课程包含学生S8所学课程的学生学号
注:关系规范化限制:
➢关系中每个属性值必不可分 ➢关系中不能出现重复元组 ➢关系中不考虑元组和属性间的顺序 ➢每列中的属性值的数据类型相同 ➢不同列属性值的数据类型可同
•候选键:一个属性组的值唯一标识一个元组,该属性组称为候选键 •主键(主码): •外键:
Customers(id,cname,city,discnt) Orders(orderno,month,cid,aid,pid,qty,dollars) sc(sno,cno,cgrade) sc(id,sno,cno,cgrade)
7) 选择与并的交换: 8) 选择与差运算的交换: 9) 投影与笛卡尔积的交换: 10)投影与并的交换:
关系代数表达式的优化
➢优化算法:
输入:一个关系表达式的语法树 输出:计算该表达式的程序 方法:a) 利用规则4
b) 对于每个选择,据规则4-8尽可能把它移到 树的叶端
c) 对于每个投影,据规则3,9,10,5尽可能把它移 向树的叶端
1) 检索选修课程号为C2或C3的学生学号 2) 检索至少选修课程号为C2或C3的学生学号 3) 检索至少选修课程号为C2和C3的学生学号 4) 检索选修课程号为C2或C3的学生学号(两
课程不同时选)
5) 检索选修课程号只为C2或C3的学生学号
例:在关系S-SC-C中,求选修了课程C2的学生姓名
Ccredit(学分) 4 3 4 3
SC(选课表)
Sno(学号) Cno(课程号)
03001
C001
03001
C002
03003
C003
03004
C004
Cgrade(成绩) 93 80 85 92
关系代数运算的应用
例1 设教学数据库有三个关系 S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER)
即求出TS中不在R的元组
例4 R ABC D ab cd ab ef bc ef ed cd ed ef a bde
计算:R ÷ S
R÷S AB ab ed
S CD cd ef
例5 R ABC A1 B1 C2 A2 B2 C4 A1 B2 C3 A3 B1 C1 A1 B2 C1
计算:R ÷ S
关系模型
关系模型三要素:数据结构、数据操作、完整性规则 数据结构:关系
➢ 数据结构:关系
学号
2001001 2001002 2001003
姓名年龄ຫໍສະໝຸດ 张三20王五
19
李英
19
学生登记表
性别
男 男 女
•关系:规范化的二维表
•属性、属性名、元组
•关系的目(度、关系的元数) 、单元关系、 二元关系、关系的基数
d) 利用规则3、4、5把选择和投影的串接变成单 个选择、单个投影或一个选择后跟一个投影
e) (× ∪-)和它所有的直接祖先一组
➢优化步骤:
1) 关系代数表达式转为二叉树
a) 结点代表操作符,叶子代表关系 b) 离根结点越远的操作符,越先运算
[实例]
2) 根据算法对二叉树进行优化
转换成二叉树实例
Sno 03001 03001 03003 03004
Sname 刘黎 刘黎 王丽 周一
Ssex Sage Cno Cgrade
男
19 C001 93
男
19 C002 80
女
18 C003 85
男
20 C004 92
例3:
RABC abc def ghI
SDE ca fb
计算:R S、R2<1 S、 R2<1∧1≥2S
[实例]
1.求R S A<B
ABCDEF abcdaf abcbga
❖等值连接:R S A=B
❖自然连接:R S(特殊的等值连接)
特殊性在于: a) 在两个关系中比较的分量必须是两个相同
的属性或属性组 b) 在自然连接结果中如有相同属性,则把重
复列去掉,在等值连接中则不去掉 [实例]
例2:求S SC
关系代数的查询优化
➢优化的策略:
1. 选择运算应尽可能先做 2. 在执行连接前对文件适当进行预处理。 3. 把投影运算和选择运算同时进行 4. 把投影运算同其前或后的双目运算结合起来,
没必要为了去掉某些字段而扫描关系 5. 把某些选择同在它前面要执行的笛卡尔积结
合起来成为个连接运算 6. 找出公共子表达式
例2 设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式 S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEITHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY)
试用关系代数表达式表示下列查询语句
1) 检索供应工程J1零件的供应商号码SNO 2) 检索供应工程J1零件P1的供应商号码SNO 3) 检索供应工程J1零件为红色的供应商号码SNO 4) 检索没有使用天津供应商生产的红色零件的工程号JNO 5) 检索至少用了供应商S1所供应的全部零件的工程号JNO
结论:关系是笛卡尔积的有限子集
[返回]
•选择: ơF(R) F形如:riθc(其中为=、≠、>、<、≤、≥或∧、
∨、(,┐),F的取值为真或假
结果为关系R中满足条件F的元组
[实例] 1. 查询年龄小于20的学生
Sno(学号) 03001 03002 03003
Sname(姓名) 刘黎 张立 王丽
Ssex(性别) 男 男 女
S(学生表)
Sno(学号) Sname(姓名) Ssex(性别)
03001
刘黎
男
03002
张立
男
03003
王丽
女
03004
周一
男
Sage(年龄) 19 19 18 20
C(课程表)
Cno(课程号) Cname(课程名)
C001
数据库
C002
操作系统
C003
数据结构
C004
微机原理
Cteacher(教师) 张三 刘亚 王一 陈永
R÷S A A1
S BCD B1 C2 D2 B2 C1 D2 B2 C3 D1
[实例]
例6:查询至少选修了C001和C003课程的学生学号.
步骤: •在课程表上选择满足课程号为C001和C003 元组,并在课程号上投影建立临时表K •除
临时表K
Cno C001 C003
Sno 03001
学生-选课(S-SC)关系库:
D1 × D2 × D3= {王军,丁小,王一} {王军,丁小,李
一} {王军,丁小,李二}{王军,吴方,王一}{王军,天方, 李一}{王军,吴方,李二}{李平,丁小,王一}{李平,丁 小,李一}{李平,丁小,李二}{李平,吴方,王一}{李平, 吴方,李一}{李平,吴方,李二}{张迎,丁小,王一}{张 迎,丁小,李一}{张迎,丁小,李二}{张迎,吴方,王一} {张迎,吴方,李一}{张迎,吴方,李二}
•关系模式:对关系的描述
R(U,D,dom,F)
关系名(属性名1,属性名2,…)
➢ 三类完整性规则
a. 实体完整性: 主键不能为空 b. 参照完整性: 在外键中不能引用在其他表中并
customers 不存在的主键值
cid
cname City
Discnt
C001
Sohu
Beijing 10
C002
ACME Duluth 8
Sname(姓名) 刘黎 张立 王丽 周一
Sage(年龄) 19 19 18 20
2. 查询选课学生的学号
Sno(学号) 03001 03003 03004
注:在投影操作结果中产生的重复元组应取消
•连接:R S AθB 从关系R和S的笛卡尔积中选取属性间满 足一定条件的元组。
等价于:R AθB S= ∏i1,i2,…im(σR.A1=S.B1 ∧ … ∧ R. Ak= S. Bk(R×S))
例3 计算机管理数据库有四个关系模式
Product(maker,model,type)
Laptop(model,speed,ram,hd,screen,price)
Printer(model,color,type,price) 试用关系代数表达式表示下列查询语句: 1) 什么型号的PC速度至少为150? 2) 检索厂商B生产的所有产品(任一类型)的型号和价格 3) 检索哪个厂商生产的便携式电脑具有最少1G字节的硬盘 4) 检索所有彩色激光打印机型号 5) 检索销售便携式电脑但不销售PC的厂商 6) 检索在两个或两个以上PC中出现的硬盘容量 7) 检索速度同且RAM相同的成对的PC型号 8) 检索至少生产两种不同计算机(PC或Laptop)且机器速
•除法:R÷S
设两关系R和S的元数分别为r和s(r≥s>0), 那么R ÷ S是个(r-s)(至少为一元)元的元 组的集合。 结果表示S中的每个元组u必在关系R中
具体的计算过程:
a) T=∏1,2,…,r-s(R) b) W=(T×S)-R
c) V=∏1,2,…,r-s(W) d) R÷S=T-V
注:预处理的方法:对文件排序和在连接属性上建索引。
➢关系代数等价变换规则:
1) 交换律: 2) 结合律: 3) 选择串接定律: σF1(σF2(E))≡σF1∧F2(E) 4) 投影串接定律: 5) 选择和投影的交换律: 6) 选择与笛卡尔积的交换律:ơ F(E1 × E2)
•若F中的属性都是E1中的属性: •若F=F1 ∧ F2,且F1只涉及E1中属性,F2只涉及E2中属性 •F1只涉及E1中属性,F2涉及E1和E2两者的属性
2.
Sno(学号) 03001 03002 03004
查询所有男生的情况
Sname(姓名) 刘黎 张立 周一
Ssex(性别) 男 男 男
Sage(年龄) 19 19 18
Sage(年龄) 19 19 20
•投影: ПA(R) 选取关系的某些列做垂直投影,并可重新安
排列的顺序。
[实例] 1. 在S表的Sname和Sage列上作投影
有三种等价的关系代数表达式 •П SN(ơ S.S#=SC.S#∧SC.C#=‘C2’(S × SC))
•П SN(ơ SC.C#=‘C2’(S
SC))
•П SN(S
ơ SC.C#=‘C2’(SC))
分析三种关系代数查询时所花费的时间:
假设:在库中有1000条学生记录,10000选课记录, 其中选C2的记录有50个,设每秒写20块,每块装 10个S元组或100个SC元组,内存中可放五块S元组 一块SC元组。