|
在商用数据处理应用中,关系模型已经成为当今主要的数据模型。 关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。
(1)数据结构:数据库中全部数据及其相互联系都被组织成“关系”(二维表格)的形式。关系模型基本的数据结构是关系。 (2)数据操纵:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。关系运算分成关系代数、关系演算和关系逻辑等三类。 (3)数据完整性规则:数据库中数据必须满足实体完整性,参照完整性和用户定义的完整性等三类完整性规则。 关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求;更新语句用于描述用户进行插入、删除、修改等操作。从计算机语言角度看,后者是在前者的基础上工作,前者比后者复杂。但是前者有理论基础,是主要研究对象。关于查询的理论称为“关系运算理论”。 关系查询语言根据其理论基础的不同分成两类: (1)关系代数语言:查询操作是以集合操作为基础的运算。 (2)关系演算语言:查询操作是以谓词演算为基础的运算。 |
|
1.有四个关系模式T、C、S和SC (1)教师关系T(T#,TNAME,TITLE)。 (2)课程关系C(C#,CNAME,T#)。 (3)学生关系S(S#,SNAME,AGE,SEX)。 (4)选课关系SC(S#,C#,SCORE)。 |
2.用关系代数表达式表达每个查询语句 (1)检索学习课程号为C2课程的学生学号与成绩。 πS#,SCORE(σC#='C2'(SC)) π1,3(σ2='C2'(SC)) (2)检索学习课程号为C2课程的学生学号与姓名。 πS#,SNAME(σC#='C2'(SSC)) πS#,SNAME(σC#='C2'(SC)S) (3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。 πS#,SNAME(σTNAME='LIU'(SSCCT)) πS#,SNAME(πS#(ΠC#(σTNAME='LIU'(T)C)SC)S) (4)检索选修课程号为C2或C4的学生学号。 πS#(σC#='C2'∨C#='C4'(SC)) (5)检索至少选修课程号为C2和C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) πS#,C#(SC)÷πC#(σC#='C2'∨C#='C4'(C)) (6)检索不学C2课的学生姓名与年龄。 πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(SSC)) πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(SC)S) (7)检索学习全部课程的学生姓名。 πSNAME(S(ΠS#,C#(SC)÷πC#(C))) (8)检索所学课程包含学生S3所学课程的学生学号。 πS#,C#(SC)÷πC#(σS#='S3'(SC)) |
|
1.外连接(outer join) (1)缘由 ①在关系R和S做自然连接时,我们选择两个关系在公共属性上值相等的元组构成新关系的元组。 ②此时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,造成R中这些元组的值在操作时被舍弃。由于同样的原因,S中某些元组也有可能被舍弃。 ③为了在操作时能保存这些将被舍弃的元组,提出“外连接”操作。 (2)定义
|
|
|
|
1.外连接:如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值(null),这种操作称为“外连接”操作,用符号RS表示。 2.左外连接:如果R和S做自然连接时,只把R中原该舍弃的元组放到新关系中,那么这种操作称为“左外连接”操作,用符号RS表示。 3.右外连接:如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操作称为“右外连接”操作,用符号RS表示。
|
|
|
|
|
(3)实例:自然连接和外连接的例子
|
2.外部并(outer union) (1)定义 ①前面定义两个关系的并操作时,要求R和S具有相同的关系模式。 ②如果R和S的关系模式不同,构成的新关系的属性由R和S的所有属性组成(公共属性只取一次), ③新关系的元组由属于R或属于S的元组构成, ④同时元组在新增加的属性上填上空值, ⑤那么这种操作称为“外部并”操作。 (2)实例:外部并的例子
|
|
|