当前位置:文档之家› 数据库关系代数

数据库关系代数

数据库关系代数
数据库关系代数

关系代数就是关系数据库系统查询语言得理论基础

?一、关系代数得9种操作: ?

关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。

?五个基本操作:?并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π) ??四个组合操作:

交(∩)、联接(等值联接)、自然联接(R S)、除法(÷)

注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后得结果(仅筛选行、不筛选列)

注2:自然连接表示两个关系中若有相同名称得属性,则自动作为关联条件,且仅列出一列

?二、关系代数表达式:

?由关系代数运算经有限次复合而成得式子称为关系代数表达式.这种表达式得运算结果仍然就是一个关系。可以用关系代数表达式表示对数据库得查询与更新操作。??三、举例说明:

设教学数据库中有3个关系:

学生关系S(SNO, SNAME,AGE,SEX)

学习关系SC(SNO,CNO,GRADE)

课程关系C(CNO,CNAME,TEACHER)?

?(1)检索学习课程号为C2得学生学号与成绩?--—-—-——-——-—-——-———-—---——-——-—---- ?SELECT SNO,GRADE ?FROM SC

WHERE CNO='C2'

--—---——----———-———-—---—----——----- ?π SNO, GRADE (σ CNO='C2’(SC))?************************************

??(2) 检索学习课程号为C2得学生学号与姓名?———-—---—-—--—-----—--—--—---—-----—

SELECT SC、SNO,S、SNAME

FROM SC,S ?WHERE SC、SNO=S、SNO ?ANDSCO='C2’?----——-------——---——--—---—--------—?π SNO,SNAME(σ CNO='C2’ (S SC)) ?此查询涉及S与SC,先进行自然连接,然后再执行选择投影操作。?---—?πSNO,SNAME (S) (πSNO(σ CNO='C2’(SC)))

自然连接得右分量为"学了C2课得学生学号得集合”。

此表达式比前一个表达式优化,执行起来要省时间、省空间。

************************************

?(3)检索选修课程名为MATHS得学生学号与姓名

--—---——--—-—--———-——-——-—----—-—-—- ?SELECT SC、SN O,S、SNAME ?FROM SC,S,C ?WHERE SC、SNO=S、SNO

AND SCO=CO ?AND CAME=’MATHS’

---——-----—-——-—-----———---————---—- ?π SN O, SANME (σCNAME=’MATHS' (S SC C))

************************************??

(4)检索选修课程号为C2或C4得学生学号

--—-——-—---—-———--—---———-—-———-—-——

SELECT SNO ?FROM SC

WHERE CNO=’C2'

OR CNO='C4'

-———------—----—------———----—----—- ?π SNO (σCNO=’C2'∨CNO='C4'(SC))

************************************

(5)检索至少选修课程号为C2或C4得学生学号?---—---———---—----------—--——----—-—?SELECT SA、SNO

FROM SC AS SA,SC AS SB

WHERE SA、SNO=SB、SNO

AND SAO='C2’ ?AND SBO='C4'

--------—--———-—----—--—----————----

π 1 (σ1=4∧2='C2’∧5=’C4'(SC×SC))

************************************??

(6)检索不学C2课得学生姓名与年龄

-—-—-—----————-——-—---—--——-——--—--—?SELECT SNAM E,AGE

FROM S

MINUS

SELECT S、SNAME,S、AGE

FROMSC,S ?WHERE SC、SNO=S、SNO ?AND SCO=’C2’

(Oracle)

----——----—---—--—--——--——--————---—

πSNAME, AGE (S)—π SNAME, AGE(σCNO='C2’ (S SC))?************************************

??(7) 检索学习全部课程得学生姓名

-—--—--——---——---—---—---—---------- ?这个定义用SQL表示比较麻烦,略过?---—-——-————--—-—-——-——-—-——-—-—--—- ?πS NO, CNO(SC)÷π CNO(C)

先用除法取出选取所有课程得SNO集(除法可以理解为一个Filter)?π SNAME (S (π SNO,CNO (SC)÷π CNO (C)))

再关联S表取出SNAME?************************************ ??

(8)检索所学课程包含S3所学课程得学生学号

-—--——-------——-----——-----————-——--

这个定义用SQL表示比较麻烦,略过

——-—---——--—-——-------—-----—-—-—--—?πSNO,CNO (SC)÷ π CNO(σ SNO='S3' (SC)) ?同样运用了除法得特性?***********

9)将新课程元组('C10','PHY

(

************************* ???

SICS’,’YU')插入到关系C中

---———-—-—---——-—--——------—--————--

INSERTINTO C VALUES(’C10’,'PHYSICS',’YU')?-—-—---—----------————-——--—--—---—-

(C∪(’C10',’PHYSICS',’YU'))

记住该符号得用法?************************************

?

(10)将学号S4选修课程号为C4得成绩改为85分

-—--———-——-—--—--—————----—-—————-—-

UPDATESC SETGRADE=85 ?WHERE SNO=’S4'

AND CNO='C4’

----------—--—-----———------———-——--?(SC—(’S4','C4’,? )∪ (’S4',’C4’,85)) ?先用'- '实现DELETE功能,再用'∪'实现INSERT功能?注意使用?来表示检索时忽略该字段值?************************************???四、关系代数表达式得优化:

目得 :为了系统在执行时既省时间又能提高效率。?基本策略 :先做选择,运用投影去除多余属性等等。?优化算法 :语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用得属性值)

例如:

π SNO,SNAME (σ GRADE>60 (S SC)) 进行优化后转换为: ?π SNO ,SNAME (π SNO ,SNAME (S) πSNO (σ GRADE〉60(SC))) ? --即提前做选择操作;在每个操作后,应做个投影操作,去掉不用得属性值

?

又如: ??S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)?C(C#,CNAME,TEACHER)

πCNAME,TEACHER (σ SEX='女’ (S SC C))进行优化后转换为:?π CNAME, TEACHER (Cπ C# (π S#,C#(SC) πS# (σ SEX='女’ (S)))) ??优化前与优化后得语法树如下所示:

?

(完整版)数据库关系代数习题

1.设有如图所示的关系S、SC和C,试用关系代数表达式表示下列查询语句: S C SC S# SNAME AGE SEX 1 李强23 男 2 刘丽22 女5 张友22 男C# CNAME TEACHER k1 C语言王华 k5 数据库原理程军 k8 编译原理程军 S# C# GRADE 1 k1 83 2 k1 85 5 k1 92 2 k5 90 5 k5 84 5 k8 80 (1) 检索”程军”老师所授课的课程号(C#)和课程名(CNAME)。 (2) 检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3) 检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)。 (4) 检索”李强”同学不学课程的课程号(C#)。 (5) 检索至少选修两门课程的课程号(S#)。 (6) 检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7) 检索选修课程包含”程军”老师所授课程之一的学生学号(S#)。 (8) 检索选修课程号为k1和k5的学生学号(S#)。 (9) 检索选修全部课程的学生姓名(SNAME)。 (10) 检索选修课程包含学号为2的学生所选修课程的学生学号(S#)。 (11) 检索选修课程名为”C语言”的学生学号(S#)和姓名(SNAME)。(12)检索没有一门课程成绩不及格的学生学号,姓名。 答:本题各个查询语句对应的关系代数表达式表示如下: (1) ΠC#,CNAME(σTEACHER ='程军'(C)) (2) ΠS#,SNAME(σAGE>21^SEX ='男'(S)) (3) ΠSNAME(S(ΠS#,C#(SC)÷ΠC#(σTEACHER ='程军'(C)))) (4) ΠC#(C)-ΠC#(σSNAME ='李强'(S)∞SC) (5) ΠS# (σ1=4^2≠5 (S C×SC)) (6) ΠC#,CNAME(C∞(ΠS#,C#(SC)÷ΠS#(S))) (7) ΠS# (SC∞ΠC# (σTEACHER ='程军'(C))) (8) ΠS#,C#(SC)÷ΠC#(σC#=’K1’VC#=’K5’ (C)) (9) ΠSNAME(S∞(ΠS#,C#(SC)÷ΠC#(C))) (10) ΠS#,C#(SC)÷ΠC#(σC#=’2’ (S C)) (11) ΠS#,SNAME(S∞ΠS#(SC∞(σCNAME ='C语言'(C)))) (12)П学号,姓名(学生)-П学号,姓名(σ分数<60(学生∞学习))。

关系代数运算练习答案

关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。 这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 关系代数(演算)要求掌握各种语句的应用 1:设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。 (1) 检索学习课程号为C2的学生学号与成绩。 πSNO,GRADE(σCNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σCNO='C2'(S SC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。

此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。 (3)检索选修课程名为MATHS的学生学号与姓名。 πSNO,SANME(σCNAME='MATHS'(S SC C)) (4)检索选修课程号为C2或C4的学生学号。 πSNO(σCNO='C2'∨CNO='C4'(SC)) (5)检索选修课程号为C2和C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。 比较这一题与上一题的差别。 (6)检索不学C2课的学生姓名与年龄。 πSNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(S SC))

Oracle数据库数据对象分析_张达宇

Oracle数据库数据对象分析 日期:2006-01-18 08:00 点击: Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如: 这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES . USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数

数据库关系代数表达式学习资料

数据库关系代数表达式学习 关系代数是关系数据库系统查询语言的理论基础 一、关系代数的9种操作: 关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。 五个基本操作: 并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π) 四个组合操作: 交(∩)、联接(等值联接)、自然联接(R S)、除法(÷) 注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列 二、关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 三、举例说明: 设教学数据库中有3个关系: 学生关系S(SNO, SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) (1) 检索学习课程号为C2的学生学号与成绩 ------------------------------------ SELECT SNO,GRADE FROM SC WHERE CNO='C2' ------------------------------------ π SNO, GRADE (σ CNO='C2' (SC)) ************************************ (2) 检索学习课程号为C2的学生学号与姓名 ------------------------------------ SELECT SC.SNO,S.SNAME

关系代数讲解与例题

关系代数 关系代数是关系数据库系统查询语言的理论基础。 关系代数的9种操作: 并、交、差、乘、选择、投影、联接、除、自然联接运算。 五个基本操作: 并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择(π) 四个组合操作: 交(∩) 联接(等值联接)自然联接(RS) 除法(÷) 关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。 关系代数表达式举例 用关系代数表示数据查询的典型例子 [例]设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。 (1) 检索学习课程号为C2的学生学号与成绩。 πSNO,GRADE(σCNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σCNO='C2'(SSC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。 此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。 (3)检索选修课程名为MATHS的学生学号与姓名。 πSNO,SANME(σCNAME='MATHS'(SSCC)) (4)检索选修课程号为C2或C4的学生学号。 πSNO(σCNO='C2'∨CNO='C4'(SC)) (5)检索至少选修课程号为C2或C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果

关系代数习题3.26

1. 下面的选项不是关系数据库基本特征的是()。 A.不同的列应有不同的数据类型 B.不同的列应有不同的列名 C.与行的次序无关 D.与列的次序无关 2. 一个关系只有一个()。 A.候选码 B. 外码 C. 超码 D. 主码 3. 关系模型中,一个码是()。 A.可以由多个任意属性组成 B.至多由一个属性组成 C.可有多个或者一个其值能够唯一表示该关系模式中任何元组的属性组成 D.以上都不是 4. 现有如下关系: 患者(患者编号,患者姓名,性别,出生日起,所在单位) 医疗(患者编号,患者姓名,医生编号,医生姓名,诊断日期,诊断结果) 其中,医疗关系中的外码是()。 A. 患者编号 B. 患者姓名 C. 患者编号和患者姓名 D. 医生编号和患者编号 5. 现有一个关系:借阅(书号,书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本,则该关系模式的外码是()。 A. 书号 B. 读者号 C. 书号+读者号 D. 书号+读者号+借期 6. 关系模型中实现实体间N:M 联系是通过增加一个()。

A.关系实现 B. 属性实现 C. 关系或一个属性实现 D. 关系和一个属性实现 7. 关系代数运算是以()为基础的运算。 A. 关系运算 B. 谓词演算 C. 集合运算 D. 代数运算 8. 关系数据库管理系统应能实现的专门关系运算包括()。 A. 排序、索引、统计 B. 选择、投影、连接 C. 关联、更新、排序 D. 显示、打印、制表 9. 五种基本关系代数运算是()。 A.∪-× σ π B.∪-σ π C.∪∩× σ π D.∪∩σ π 11. 关系数据库中的投影操作是指从关系中()。 A.抽出特定记录 B. 抽出特定字段 C.建立相应的影像 D. 建立相应的图形 12. 从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是()操作。 A.投影 B. 联接 C. 选择 D. 复制 13. 关系代数中的联接操作是由()操作组合而成。 A.选择和投影 B. 选择和笛卡尔积 C.投影、选择、笛卡尔积 D. 投影和笛卡尔积 14. 自然联接是构成新关系的有效方法。一般情况下,当对关系R和S是用自然联接时,要求R和S含有一个或者多个共有的()。 A.记录 B. 行 C. 属性 D. 元组 15. 假设有关系R和S,在下列的关系运算中,()运算不要求:“R 和S具有相同的元数,且它们的对应属性的数据类型也相同” 。

数据库关系代数习题

2.现有关系数据库如下: 学生(学号,姓名,性别,专业,奖学金)。 课程(课程号,名称,学分)。 学习(学号,课程号,分数)。 用关系代数表达式实现下列1-4小题: 1. 检索"英语"专业学生所学课程的信息,包括学号、姓名、课程名和分数。 П学号,姓名,课程名,分数(σ专业='英语'(学生∞学习∞课程))。 2. 检索"数据库原理"课程成绩高于90分的所有学生的学号、姓名、专业和分数。 П学号,姓名,专业,分数(σ分数>90∧名称='数据库原理'(学生∞学习∞课程))。 3. 检索不学课程号为"C135"课程的学生信息,包括学号,姓名和专业。 П学号,姓名,专业(学生)-П学号,姓名,专业(σ课程号='C135'(学生∞学习))。 4. 检索没有任何一门课程成绩不及格的所有学生的信息,包括学号、姓名和专业。 П学号,姓名,专业(学生)-П学号,姓名,专业(σ分数<60(学生∞学习))。 5.检索选修全部课程的学生姓名 6.检索至少选修了李强同学所选修的全部课程的学生姓名。

3.现有关系数据库如下: 学生(学号,姓名,性别,专业、奖学金)。 课程(课程号,名称,学分)。 学习(学号,课程号,分数)。 用关系代数表达式实现下列1—4小题: 1. 检索“国际贸易”专业中获得奖学金的学生信息,包括学号、姓名、课程名和分数。 Π学号,姓名,课程名,分数(σ奖学金>0∧专业=国际贸易(学生∞学习∞课程))。 2. 检索学生成绩得过满分(100分)的课程的课程号、名称和学分。 Π课程号,名称,学分(σ分数=100(学习∞课程))。 3. 检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业。 Π学号,姓名,专业(σ奖学金<=0∧分数>95(学生∞学习))。 4. 检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业。 Π学号,姓名,专业(学生)-Π学号,姓名,专业(σ分数<80(学生∞学习))。 4.设有关系S、SC和C,试用关系代数表达式完成下列操作。 S(snum,sname,age,sex),例:(1,“李强”,23,‘男’)是一条数据记录。SC(snum,cnum,score),例:(1,“C1”,83)是一条数据记录。C(cnum,cname,teacher) 例:(“C1”,“数据库原理”,“王华”)是一条数据记录。

关系代数

第二章关系代数 教学目的: 本章实际上研究的是关系的运算。 学习目的: 关系运算是设计关系数据库操作语言的基础,因为其中的每一个询问往往表示成一个关系运算表达式,在我们的课程中,数据及联系都是用关系表示的,所以实现数据间的联系也可以用关系运算来完成。 通过本章学习,应重点掌握: (1)关系数据库的基本概念; (2)如何用关系代数表达式来表达实际查询问题; (3)如何用元组演算表达式来表达实际查询问题; (4)如何用域演算表达式来表达实际查询问题; (5)如何将关系代数表达式转换为元组演算表达式或转换为域演算表达式。 了解和掌握关系数据结构中涉及到的域、笛卡儿积、关系模式等有关内容的含义; 掌握关系的实体完整性和参照完整性的定义; 掌握关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学重点: 关系的实体完整性和参照完整性的定义; 关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学难点:关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学方法:实例法 教学内容:如下: 关系模型 关系模型是一种简单的二维表格结构,每个二维表称做一个关系,一个二维表的表头,即所有列的标题称为一个元组,每一列数据称为一个属性,列标题称估属性名。同一个关系中不允许出现重复元组和相同属性名的属性。 1.关系模型组成 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系操作分为两大部分如图所示。

2.关系操作的特点 关系操作的特点是操作对象和操作结果都是集合。而非关系数据模型的数据操作方式则为一次一个记录的方式。 关系数据语言分为三类: (1)关系代数语言:如ISBL ; (2)关系演算语言:分为元组关系演算语言(如Alpha ,Quel)、域关系演算语言(如QBE); (3)具有关系代数和关系演算双重特点的语言:如SQL 。 3.关系数据结构及其形式化定义 (1)域 定义 域是一组具有相同数据类型的值的集合。 (2)笛卡尔积 定义 设D 1,D 2,D 3,…,D n ,为任意集合,定义D l ,D 2,D 3,…,D n 的笛卡尔积为 D 1×D 2×D 3×…×D n ={(d1,d2,d3,…dn)[di ∈Di ,i =1,2,3…,n] 其中每一个元素(dl ,d2,d3,…,dn ,)叫做一个n 元组(n 一tuple)或简称为元组(Tuple),每一个值di 叫做一个分量(Component),若Di(i =l ,2,…n)为有限集,其基数(Cardinal number)为mi(i=l ,2,3,…,n), 则D 1×D 2×D 3×…×D n 的基数M 为 M = ∏=n i 1 mi

数据库关系代数除法讲解

数据库关系代数除法讲解 This manuscript was revised by JIEK MA on December 15th, 2012.

【数据库原理】关系代数篇——除法讲解 陈宇超编辑总结: 除法运算的一般形式示意图 如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理解 关系R和关系S拥有共同的属性B、C , R÷S得到的属性值就是关系R包含而关系S不包含的属性,即A属性 在R关系中A属性的值可以取{ a1,a2,a3,a4 } a1值对应的象集为 { (b1,c2) , (b2,c1) , (b2,c3) } a2值对应的象集为 { (b3,c7) , (b2,c3) } a3值对应的象集为 { (b4,c6) } a4值对应的象集为 { (b6,c6) } 关系S在B、C上的投影为 { (b1,c2) , (b2,c1) , (b2,c3) } 只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中为 设有教学数据库有3个关系(以下四小问均用除法的思想解决) 学生信息关系student(sno,sname,age,sex) 学生选课关系 sc(sno,cno,score) 学校课程关系 course(cno,cname)

S003C00269 S005C00277 S005C00398 有存在量词的谓词。 解决这类的除法问题一般采用双嵌套not exists来实现带全称量词的查询解决所谓forall的问题。 (1)检索所学课程包含了C002课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C002’ (course) ) Sql语句 从略 (2)求至少选择了C001和C003两门课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C001’ or cno=’C003’(course) ) Sql语句 select distinct sno from sc A where not exists ( select*from course B where cno in('C002','C003')and not exists ( select*from sc C where=and= ) ) 也可以采用自连接 select from (select*from sc where cno='C001')as s1, (select*from sc where cno='C003')as s2 where= (3)求至少学习了学生S003所学课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σsno=’S003’ (sc) ) select distinct sno from sc A where not exists ( select*from sc B where sno='S003'and not exists ( select*from sc C where=and= ) ) (4)求选择了全部课程的学生的学号 解此例的等价自然语义是,输出这样的学号,不存在某门课程在他的选课记录里没有选这门课 关系代数表达式:∏sno (sc÷∏cno(course) ) Sql语句 select distinct sno from sc A where not exists

(完整版)数据库系统原理与设计(第2版)万常选版第2章关系模型与关系代数课后答案

3.简述如下概念,并说明它们之间的联系与区别:。 (1)域,笛卡尔积,关系,元组,属性 答:域:域是一组具有相同数据类型的值的集合。 笛卡尔积:给定一组域D1,D2,…,Dn,这些域中可以有相同的。这组域的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n }其中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)。元素中的每一个值di叫作一个分量(Component)。 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为 R(D1,D2,…,Dn) 元组:关系中的每个元素是关系中的元组。 属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。 (2)超码,主码,候选码,外码 答:超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码 (superkey) 。 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)。 外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S 的主码Ks相对应,则称F是基本关系R的外码(Foreign key),简称外码。 基本关系R称为参照关系(Referencing relation),基本关系S称为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S可以是相同的关系。 (3)关系模式,关系,关系数据库 答:关系模式:关系的描述称为关系模式(Relation Schema)。它可以形式化地表示为:R(U,D,dom,F) 其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom 为属性向域的映象集合,F为属性间数据的依赖关系集合。 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为 R(D1,D2,…,Dn) 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。 关系数据库:关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。 2.3.为什么需要空值null? 答:引入空值,可以方便于数据库的维护和建立,数字或者字符有时并不能解决想要解决的问题,毕竟它们是真实的存在,有了空值,那么有些操作,比如查询,插入,删除都可以更加方便,比如公司的部门,新增的部门,信息是不存在的,是之后数据库人员进行添加之后才有的,所以让它为空,比给它0更加贴近实际。空值是所有可能的域的一个取值,表明值未知或不存在。 2.3.关系模型的完整性规则有哪些? 答:关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的

数据库关系代数

关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。 关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符 比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以按照运算符的不同,主要将关系代数分为传统的集合运算和专门的关系运算两类。 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。 ⒈并(Union) 设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。其结果关系仍为n目关系。记作: R∪S={t|t∈R∨t∈S} ⒉差(Difference) 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作: R-S={t|t∈R∧t?S} ⒊交(Intersection Referential integrity) 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,

则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作: R∩S={t|t∈R∧t∈S} ⒋广义笛卡尔积(Extended cartesian product) 两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m 列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。

浅谈对的理解对象—关系型数据库

浅谈对对象—关系型数据库的理解 姓名:杨小敏 学号:2010206190026

针对对象—关系型数据库的理解我想结合自己的专业(地图学与地理信息系统)从下面三个方面来理解:(1)关系型数据的发展以及在空间数据管理方面的优缺点(2)面向对象数据库的发展及在空间数据管理方面的优缺点(3)关系型数据库和面向对象技术的融合在数据库发展中所起到的独特作用在我们GIS专业领域内,随着信息技术的发展,各种应用系统建设的不断深入,像现在面向21世纪的应急应用系统的建设、城市基础地理空间信息数据库系统与共享平台的建设、地理信息公共服务平台的建设,小到“数字城市”的建设,大到“数字地球”乃至“智慧地球”的建设,我们已经开始不满足数值和文字的信息处理,为了达到系统建设平台尤其是公共服务平台的建设起到良好的客户友好体验,大量的图形信息,音频信息已经深入到数据库的设计中,其中尤其是空间数据库管理备受瞩目。所以,面对信息爆炸的21世纪,海量数据的存储和管路已经不是传统的数据库能解决的,空间数据管理需要更强的数据库——对象关系型数据库。 为什么空间数据需要对象关系型数据库的管理才更有效?我想简单的说一下GIS空间数据的基本特征:(1)空间特征:每个空间对象都具有空间坐标,所以在存储空间数据的同时我们要考虑数据的空间分布特征;(2)非结构化特征:通用数据库或者是传统数据库数据记录一般是结构化的,在面对空间图形信息的时候难以直接采用关系数据管理系统;(3)空间关系特征:空间数据的空间关系最重要的就是空间拓扑关系,这种拓扑结构方便了空间数据的查询和空间分析,但是给空间数据的一致性和完整性的维护增加了复杂性;(4)海量数据的特征:数据库在面对海量数据的存储和组织时,一般在二维空间上划分块或图幅,在垂直的方向上划分层在组织海量空间数据。 在空间数据的管理技术的发展中,从手工管理管理阶段到文件管理阶段再到数据库管理阶段,在三个数据管理阶段,对数据管理方式也不尽相同,在这里,我想说的是空间数据库的发展历史对空间数据管理的影响,第一是层次关系型数据库:只是数据库发展的初级阶段,这是空间数据的管理大多用文件方式管理,很显然不适合管理海量的空间数据,所以淘汰;第二是网络关系型数据库:在一定程度上解决了空间数据复杂管理的难题,但还是被日益崛起的关系型数据库所淘汰;第三是关系型数据库的发展:为了解决难于保证数据的完整性,开始将空

关系代数表达式总结-数据库

关系代数表达式总结 一、并 例1 求选修了课程号为1或2的课程的学生学号。 分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。本例也可以使用或条件来表示。 πSno(σCno=’1’(SC))∪πSno(σCno=’2’(SC)) 或πSno(σCno=’1’∨Cno=’2’(SC)) 二、交 例2 检索至少选修课程号为2和3的课程的学生学号。 分析: 方法一:只涉及到一个表,但不能直接用∧(为什么?) 特别注意,本例不能写为: πSno(σCno=’2’∧Cno=’3’(SC)) 因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。 第一步:转换(SC×SC) 笛卡尔积将垂直的条件展开为水平的条件。

选修课程号为2和3的学生: σ1=4∧2=’2’∧5=’3’(SC×SC) 最后取出学生的学号: π1(σ1=4∧2=’2’∧5=’3’(SC×SC)) 方法二:πSno(σCno=’2’(SC))∩πSno(σCno=’3’(SC)) 三、差 例3 将学生信息(‘95001’,’李勇’,‘男’,20,‘CS’)从Student表删除。 分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。 因此,该删除操作可表示为: Student-{‘95001’,’李勇’,‘男’,20,‘CS’} 注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。 例4 求没有选修课程号为2的课程的学生学号。 分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。 πSno(Student)- πSno(σCno=’2’(SC)) 特别注意,本题不能写为:πSno(σCno≠’2’(SC))。因为,选择运算为行运算,并且SC 表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。根据题意,要查询没有选修课程号为‘2’课程的学生学号,显然包括没选任何课程的学生学号。 当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要

关系代数运算习题

一、选择题 1关系代数运算可以分为两类:传统的集合运算和专门的关系运算?下面列出的操作符中,属于传统的集合运算是( A ) I .n(交)n .u(并)『x(广义笛卡儿积)w?一(差)v.n(投影)w选择) A)I、n、川和w B)川、w、V和w C)I、川、V和w D)都是 2、关系数据库管理系统能实现的专门关系操作包括(B) A、显来,打印和制表 B、选择,投影和连接 C、关联、更新和排序 D、排序、索引和统计 3、在关系数据基本操作中,从表中选项出满足某种条件的记录的操作称为( A ) A、选择 B、投影 C、连接 D、扫描 4、元组的集合在关系数据库中称为关系,一般来说,表示元组的属性或者最小属性组称为D A、字段 B、索引 C、标记 D、主键 5、在下面3个关系中 学生S (SNO , SNAME , SEX, AGE )课程 C (CNO , CNAME , CREDIT )学生选课SC (SNO, CNO , GRADE ) 要查找选修“数据库”课程的女学生的姓名,将涉及到关系(D) A、S B、C, SC C、S, SC DS, C, SC 6、对于关系数据库来讲,下面(C)说法是错误的。 A、每一列的分量是同一种类型数据,来自同一个域 B、不同列的数据可以出自同一个域 C、行的顺序可以任意交换,但列的顺序不能任意交换 关系中的任意两个元组不能完全相同 7、关系数据库中有3种基本操作,从表中取出满足条件的属性的操作是(A) A、选择 B、投影 C、连接 D、扫描 8、关系数据库在有3种基本操作,将具有共同属性的两个关系中的元组连接到一起,构成新表的操作称为(C ) A、选择 B、投影 C、连接 D、扫描 9 若D1={a1,a2,a3} , D2={b1,b2,b3},贝U D1*D2 集合中共有元组(C)个 A、 6 B、8 C、9 D、12 10下列(C)运算不是专门的关系运算 A、选择 B、投影 C、笛卡尔积 D、连接 11、如下两个关系R1和R2,它们进行运算后得到R3。(D ) R1 R2 B D E 1M I 2N J A__M R3 A 1 X M I D 1 Y M I

数据库关系代数

数据库关系代数 (1)基本概念 属性和字段: 每个事物都有许多属性,每个属性的值范围称为一个域,所有对域都是原子数据(第一范式)。 相关术语 N元关系:R(D1,D2,D3。。。Dn)是一个N元素关系,其中关系属性的数目称为“元组”,元组的数目称为“基数”,即记录值。候选代码:如果关系中的属性或属性组的值可以唯一地标识元组 主机代码:可以选择任意候选代码作为主机代码 主属性:包含在任何候选代码中的属性称为主属性 完整代码:关系模型中的所有属性都是此关系模型的候选代码,称为完整代码 外部代码:关系模式中不是该关系代码的属性称为外部代码 ③三种类型: 基本表:实际存在的表 查询表:查询结果对应的表 视图表:由基本表和其他视图表导出的表,不是实际存在数据库中④完整性约束: 实体完整性:主属性A不能为空值 参照完整性:用实体之间的关系来描述,若F是关系R的外码,则F 或者是空值,或者是某个元组的主码值

用户定义完整性:根据具体关系数据的约束条件,比如数据范围等(2)关系五种基本运算 ①并:R,S具有相同的关系模式(元素相同,结构相同),记为R U S,返回由R或者S元组构成的集合组成 ②差:R,S具有相同的关系模式(元素相同,结构相同),记为R-S,右属于R但不属于S的元组组成 ③广义笛卡尔积:R×S由n目和m目的关系R,S组成一个(n+m)列的元组集合,若R有K1个元组,S有K2个元组,则R×S有K1*K2个元组 ④投影(π):从关系的垂直方向开始运算,选择关系中的若干列组成新的列。 ⑤选择(σ):选择从关系的水平方向进行元算,选择满足给定条件的元组组成新的关系。 (3)扩展的关系代数运算 ①交:R∩S=R-(R-S),R,S具有相同的关系模式 ②链接:链接分为θ链接,等值链接和自然链接 θ链接:从R,S的笛卡尔积中选择满足一定条件的元组 等值链接:当θ为“=”时为等值链接 自然链接:是一种特殊的等值链接,比较的分量必须是相同的属性组,并在结果集中去掉重复列,如果没有重复列,自然链接就转换为笛卡尔积 ③除:同时从水平方向和垂直方向进行运算,给定关系R(X,Y)和

数据库原理 关系运算 习题答案

数据库系统原理第四章关系运算课后习题答案 4.1 名词解释 (1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。 (2)关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。关系模式不涉及到物理存储方面的描述,仅仅是对数据特性的描述。 (3)关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4)属性:实体的一个特征。在关系模型中,字段称为属性。 (5)域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6)元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7)超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 (8)候选键:不含有多余属性的超键称为候选键。 (9)主键:用户选作元组标识的一个候选键为主键。(单独出现,要先解释“候选键”) (10)外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。 (11)实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。 (12)参照完整性规则:这条规则要求“不引用不存在的实体”。其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2的关系中, K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则在使用时有三点应注意: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可。 2)R1和R2也可以是同一个关系模式,表示了属性之间的联系。 3)外键值是否允许空应视具体问题而定。 (13)过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和“怎么干”。如Pascal和C语言等。 (14)非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。各种关系查询语言均属于非过程性语言。 (15)无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。如元组表达式{t|┐R(t)}表示所有不在关系R中的元组的集合,这是一个无限关系。 (16)无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。如验证公式(u)(P(u))的真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 4.2 为什么关系中的元组没有先后顺序? 因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。 4.3 为什么关系中不允许有重复元组?

计算机二级:关系代数运算

公共基础专题探究——关系代数运算 1 自然连接:一种特殊的等值连接,它要求两个关系中进行比较的分量必须 是相同的属性组,并且在结果中把重复的属性列去掉 自然连接满足下面的条件: ①两关系间有公共域;②通过公共域的等值进行连接, 例1:一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的(属性) 例2:有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为(自然连接)。 例3:有三个关系R、S和T如下: 则关系R和关系S得到关系T的操作是(自然连接) 例4:有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是(自然连接)。 2 差的运算:关系T中的元组是R关系中有而S关系中没有的元组的集合。 例1:有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是(差)。 例2:由关系R和S得到关系T的操作是(差) 3

则由关系R和S得到关系T的操作是(交)。 5 投影:指对于关系内的域指定可引入新的运算。S是在原有关系R的内部 进行的,是由R中原有的那些域的列所组成的关系 例:有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为(投影)。 【注】本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。 6 选择:关系S是关系R的一部分,是通过选择之后的结果,从关系中找出 满足给定条件的元组的操作。 例:有两个关系R和S如下: 则由关系R得到关系S的操作是(选择) 7

例:有三个关系R、S和T如下 则由关系R和S得到T的操作是(并) 8 除运算:如果S=T/R,则S称为T除以R的商。在除运算中S的域由T 中那些不出现在R中的域所组成,对于S中的任一有序组,由它与关系R 中每个有序组所构成的有序组均出现在关系T中。 例1:有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是(除)。 例2:有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是(除)。 9 等值连接:

实验四 Oracle数据库对象

实验四Oracle数据库对象 一、实验目的 了解Oracle的表、视图、索引、序列、同义词的基本概念和基本用法。 二、实验内容和步骤 1、查看用户具有的对象和可访问的对象(操作结果截图填入空白处) 以SCOTT连接数据库。 (1)查看用户模式中各种类型的对象数量 selectobject_type,count(*) from user_objects group by object_type (2)确定用户模式有权访问的对象总数 selectobject_type,count(*) from all_objects group by object_type

(3)确定谁拥有用户能够看见的对象 select distinct owner from all_objects 2、创建基本表(填入代码) 创建上图基本表KHB,要求表创建在表空间USER_DATA

3、创建临时表(填入代码) (1)创建一个基于会话的临时表。 a) 创建临时表tmp_khb_1(与KHB同结构); b)插入一条记录khbh=’00000001’,khmc=’aaa’; c)以SCOTT用户启动第2个SQL*PLUS会话; d) 在第2个会话中查询tmp_khb_1;(操作代码及操作结果截图)

e)插入一条记录khbh=’00000002’,khmc=’bbb’; f)在第1个会话中查看第2个会话的数据;(操作代码及操作结果截图) g)在第1个会话中,将表截断; h)在第2个会话中,观察表中是否仍然存在记录;(操作代码及操作结果截图)

(2)创建一个基于事务的临时表 a) 创建临时表tmp_khb_2(与KHB同结构); b) 插入一条记录khbh=’00000001’,khmc=’aaa’; c)查询tmp_khb_2;(操作代码及操作结果截图) d)事务提交commit;

第三章 关系代数与关系运算

第三章关系代数与关系运算 关系数据语言有三类: 1.关系代数语言 2.关系演算语言(元组关系演算语言、域关系演算语言) 3.具有关系代数和关系演算双重特点的语言如SQL 一.关系代数 关系代数:一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。用对关系的运算来表达查询。 运算:将一定的运算符作用于一定的运算对象上,得到预期的运算结果 运算三要素:运算符、运算对象、运算结果 关系代数的运算对象和结果都是:关系 关系代数运算符(四类):集合运算符、专门的关系运算符、算术比较符和逻辑运算符 集合运算符:并(U)、差(—)、交(∩) 传统的集合运算符——从关系的“水平“方向即行的角度来进行 专门的关系运算符:广义笛卡尔积(ⅹ)、选择(σ)、投影(π)、连接、除 专门关系运算符不仅涉及行而且涉及列 比较运算符:>、<、=、≥、≤、≠ 逻辑运算符:¬∧∨ 用来辅助专门的关系运算符 二.传统的集合运算符

传统集合运算符是二目运算符 设关系R和S具有相同的目n(即n个属性),且相应的属性取自同一个域 1.并(Union) 记作:RUS={t|t∈R∨t∈S}结果仍是n目关系,由属于R或S的元组组成。 例: (a)(b) (c)(d) (e) 2.差 关系R与S的差记作:R-S={t|t∈R∧t∈S} 结果仍是n目,由属于R而不属于S的所有元组组成。如图E 3.交 关系R与S的交记作:R∩S = { t | t∈R∧t∈S }结果仍是n目,由即属于R又属于S 的所有元组组成。如图D 可以用差来表示R∩S=R-(R-S) 4.广义笛卡尔积 两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(m+n)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S 有k2个元组,那么关系R与S的广义笛卡尔积有k1 x k2个元组,记作 R×S = { t r t s | t r∈R∧t s∈S } 结果是m+n目 如图例

相关主题
文本预览
相关文档 最新文档