第四章  关系数据库
This presentation is the property of its rightful owner.
Sponsored Links
1 / 99

第四章 关系数据库 PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on
  • Presentation posted in: General

第四章 关系数据库. 上一章介绍了三种主要的数据模型: 层次模型 网状模型 关系模型 本章主要讲述 : 关系模型的数据结构 关系的定义和性质 关系数据库的基本概念 关系运算. TNO 教师号. CNO 课程号. CN 课程名. TN 姓名. SEX 性别. CT 课时. AGE 年龄. PROF 职称. SAL 工资. TNO 教师号. COMM 岗位津贴. CNO 课程号. DEPT 系别. 关系模型的数据结构. 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。

Download Presentation

第四章 关系数据库

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5166643

第四章 关系数据库


5166643

  • 上一章介绍了三种主要的数据模型:

    • 层次模型

    • 网状模型

    • 关系模型

  • 本章主要讲述:

    • 关系模型的数据结构

    • 关系的定义和性质

    • 关系数据库的基本概念

    • 关系运算


5166643

TNO

教师号

CNO

课程号

CN

课程名

TN

姓名

SEX

性别

CT

课时

AGE

年龄

PROF

职称

SAL

工资

TNO

教师号

COMM

岗位津贴

CNO

课程号

DEPT

系别

关系模型的数据结构

  • 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。

  • 关系模型是各个关系的框架的集合,即关系模型是一些表格的格式,其中包括关系名、属性名、关键字等。

    • 教师关系T

    • 课程关系C 授课关系SC

    • 教师—课程数据库的关系模型


5166643

  • 从各个关系的框架中,我们可以很容易看出哪两个关系之间有联系。例如:

    • 教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。

    • 而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。

    • 至于元组之间的联系,则与具体的数据有关。只有在公共属性上具有相同属性值的元组之间才有联系。


5166643

  • 由上例可以看出,在一个关系中可以存放两类信息:

    • 一类是描述实体本身的信息

    • 一类是描述实体(关系)之间的联系的信息

  • 在层次模型和网状模型中,把有联系的实体(元组)用指针链接起来,实体之间的联系是通过指针来实现的。而关系模型则采用不同的思想,即用二维表来表示实体与实体之间的联系,这就是关系模型的本质所在。

  • 所以,在建立关系模型时,只要把的所有的实体及其属性用关系框架来表示,同时把实体之间的关系也用关系框架来表示,就可以得到一个关系模型。

    • 如上例中的教师—课程数据库的关系模型就是这样建立的。


5166643

关系的定义

  • 在关系模型中,数据是以二维表的形式存在的,这个二维表就叫做关系。

  • 关系理论是以集合代数理论为基础的,因此,我们可以用集合代数给出二维表的“关系”定义。

  • 为了从集合论的角度给出关系的定义,我们先引入域和笛卡尔积的概念。

  • 1) 域(Domain)

  • 域是一组具有相同数据类型的值的集合,又称为值域。(用D表示)

    • 例如整数、实数、字符串的集合。

  • 域中所包含的值的个数称为域的基数(用m表示)。


5166643

  • 关系中用域表示属性的取值范围。例如:

    • D1={李力,王平,刘伟} m1=3

    • D2={男,女} m2=2

    • D3={47,28,30} m3=3

    • 其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。

  • 域名无排列次序,如D2={男,女}={女,男}


5166643

  • 2)笛卡尔积(Cartesian Product )

  • 给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为

  • D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}.

  • 由定义可以看出,笛卡尔积也是一个集合。

    例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:

    D1={李力,王平,刘伟}

    D2={男,女}

    D1×D2={(李力,男),(李力,女),(王平,男),

    (王平,女),(刘伟,男),(刘伟,女)}


5166643

  • 其中:

    • 元素中的每一个di叫做一个分量(Component),来自相应的域(di∈Di)

    • 每一个元素(d1,d2,d3,…,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。元组的每个分量(di)是按序排列的。

      如:(1,2,3)≠(2,3,1)≠(1,3,2)

      • 而集合中的元素是没有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。

    • 其中:李力、王平、刘伟、男、女都是分量。

    • (李力,男),(李力,女)等是元组。


5166643

  • 若Di(i=1,2,……n)为有限集,Di中的集合元素个数称为Di的基数,用mi(i=1,2,……n)表示,则笛卡尔积D1×D2×……×Dn的基数M(即元素(d1,d2,……dn)的个数)为所有域的基数的累积,即

    M=

    例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:

    D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)}

    其基数M=m1×m2=3*2=6;元组的个数为6。


5166643

姓名

性别

李力

李力

王平

王平

刘伟

刘伟

  • 笛卡尔积可用二维表的形式表示。

    例如,上述的6个元组可表示成下表

  • D1和D2的笛卡尔积

    由上例可以看出,笛卡尔积实际是一个二维表,

    表的框架由域构成,表的任意一行就是一个元组,表

    中的每一列来自同一域,如第一个分量来自D1,第二

    个分量来自D2。


  • 5166643

    姓名

    性别

    李力

    王平

    刘伟

    • 3)关系的定义

    • 笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…Dn上的n元关系(Relation),可用表示为

    • R(D1,D2……Dn)。

    • 其中:①R为关系名,n称为关系的目或度。

    •   当n=1时,称为单元关系。

      当n=2时,称为二元关系。

      当n=n时,称为n元关系。

      ②关系中元组个数是关系的基数。


    5166643

    • ③关系中候选码与主码

    • 在关系中可以唯一标示一个元组的属性或属性组称

    • 为候选码,在候选码中选择一个主码。

    • 如关系的候选码只有一个属性,称为单属性码。

    • 如关系中的候选码由多个属性构成,称为多属性码。

    • 如关系中只有一个候选码,且包含所有属性,称为全码。

    一定是

    主码

    候选码

    不一定是


    5166643

    姓名

    性别

    李力

    李力

    • ④主属性与非主属性

    • 主属性(Prime Attribute):包含在候选码中的的各属性称为主属性。

    • 非主属性(Non-Prime Attribute):不包含在任何候选码中的属性称为非码属性。

    • 数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。例如在下表中选取一个子集构成如下关系,显然不符合实际情况。


    5166643

    • 4)关系的类型

    • 本书关系基本为有限关系,关系的类型有三种:基

    • 本表,查询表,视图表。

    • 基本表(基本关系)是实际存在的表,是实际存储数据的逻辑表示。

    • 查询表是查询结果对应的表。

    • 视图表是由基本表或其他视图表导出来的表,是虚表。

    • 严格地说,关系是规范化二维表中行的集合,为了使相应

    • 的数据操作简化,在关系模型中,对关系作了种种限制,分

    • 别如下:


    5166643

    • ①关系中不允许出现相同的元组

    • 在其他关系数据库产品中,基本表并不完全都满足此性质,如Oracle,Foxpro允许表中存在两个完全相同的元组。

    • ②关系中元组的顺序(即行序)是无关紧要的

      在一个关系中可以任意交换两行的次序。根据关系的这

      个性质,可以改变元组的顺序使其具有某种排序,然后按

      照顺序查询数据,可以提高查询速度。

      ③关系中属性的顺序是无关紧要的

      即列的顺序可以任意交换。交换时,应连同属性名一起交

      换,否则将得到不同的关系。


    5166643

    姓名

    职业

    兼职

    张强

    教师

    辅导员

    王丽

    工人

    教师

    刘宁

    教师

    辅导员

    ④列是同质的

    同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。

    ⑤关系中各个属性必须有不同的名字

    不同的属性可来自同一个域,不同的属性要给予不同的属性名。

    • 例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业={教师,工人,辅导员}。


    5166643

    姓名

    籍贯

    姓名

    市/县

    市/县

    张强

    吉林

    长春

    张强

    吉林

    长春

    王丽

    山西

    大同

    王丽

    山西

    大同

    ⑥关系中每一分量必须是不可分的数据项

    所有属性值都是原子的,即是一个确定的值,而不是

    值的集合。满足此条件的关系称为规范化关系,否则称为非

    规范化关系。

    • 例如


    5166643

    属性间数据的依赖关系

    属性向域的映象

    域的集合

    R(U, D, DOM, F)

    关系名

    属性名集合

    关系模式

    • 关系模式(Relation Schema):关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,其形式化描述为R(U,D,dom,F),简记作R(U)或R(A1 , A2 ,…, An ) 。


    5166643

    • 关系模式是型,是稳定的,静态的。关系是某一时刻的

    • 值,是随时间不断变化的,是动态的;即某一时刻对应某个

    • 关系模式的内容(元组的集合)称作关系。


    5166643

    关系数据库

    • 关系数据库(Relation Database)即在某应用领域,所有

    • 实体集与实体间联系的关系构成的集合。关系数据库有型与值

    • 之分,型称为关系数据库的模式,值称为关系数据库的值。关

    • 系数据库模式与关系数据库的值通常统称为关系数据库。

    • 其型是关系模式的集合,即数据库描述。

    • 其值是某一时刻关系的集合。

    • 例如教学数据库中,共有五个关系,其关系模式分别为:

      • 学生(学号,姓名,性别,年龄,系别)

      • 课程(课程号,课程名,课时)

      • 选课(学号,课程号,成绩)


    5166643

    关系模型的完整性

    • 为了维护数据库中数据与现实世界的一致性,对关系数

    • 据库的插入、删除和修改操作必须有一定的约束条件,这就是

    • 关系模型的三类完整性:

      • 实体完整性

      • 参照完整性

      • 用户定义的完整性

    • 1). 实体完整性(Entity Integrity)

    • 实体完整性是指主码的值不能为空或部分为空。

    • 空值不是空格,它指跳过货不输人,用“NULL”表示,说明“不知道”,“无意义”。


    5166643

    职工姓名Name

    部门编号DeptNo

    部门编号DeptNo

    部门名称DeptName

    刘勇

    01

    01

    计算机系

    丁钰

    02

    02

    人事处

    张清蜂

    03

    电子系

    职工表 部门表

    返回本节


    5166643

    SNO

    学号

    SN

    姓名

    SEX

    性别

    AGE

    年龄

    DEPT

    所在系

    DEPT

    所在系

    ADDR

    地址

    S1

    赵亦

    17

    计算机

    计算机

    1号楼

    S2

    钱尔

    18

    信息

    信息

    1号楼

    自动化

    2号楼

    S11

    王威

    19

    • 2).参照完整性(Referential integrity)

    • 如果属性X不是关系R2的主码,而是另一关系R1的主码,

    • 则该属性X称为关系R2的外码;并称关系R2为参照关系,关系

    • R1为被参照关系。外码一般用波浪线标示。

    R2(学生关系)           R1(系别关系)


    5166643

    职工姓名Name

    部门编号DeptNo

    部门编号DeptNo

    部门名称DeptName

    刘勇

    01

    01

    计算机系

    丁钰

    02

    02

    人事处

    张清蜂

    03

    电子系

    • 参照完整性规则,要求外码只能取下面两类值:

    • 空值

    • 非空值,该值必须与被参照关系中主码的某个取值一致。

    职工表 部门表


    5166643

    • 实体完整性和参照完整性是关系模型必须满足的完

    • 整性约束条件,系统都应该支持这两类完整性。

    • 除此之外,不同的关系数据库系统由于应用环境的

    • 不同,往往还需要一些特殊的约束条件,这就是用户定

    • 义完整性。


    5166643

    • 3). 用户定义完整性(User-defined Integrity)

    • 用户定义完整性是针对某一具体关系数据库的约束条件,

    • 它反映某一具体应用所涉及的数据必须满足的语义要求。

    • 例如,属性值根据实际需要,要具备一些约束条件,如选

    • 课关系中成绩不能为负数;某些数据的输入格式要有一些限制

    • 等。


    5166643

    关系操作

    • 关系操作是集合操作,操作的对象及结果都是集合,是一

    • 次一集合(Set-at-a-time)的方式。而非关系型的数据操作

    • 方式是一次一记录(Record-at-a-time)。

    • 关系模型与其他模型相比,最有特色的是它的数据库语言,

    • 这种语言灵活方便、表达能力和功能都很强。

    • 目前关系数据库所使用的语言一般都具有定义、查询、更新

    • 和控制一体化的特点,而查询是最主要的部分。故而关系数据库

    • 有的核心部分是查询,故又称为查询语言,而查询的条件要使用

    • 关系运算表达式来表示。


    5166643

    关系代

    数语言

    ISBL(Information System Base Language)

    元组关系演算语言

    ALPHA

    关系数

    据语言

    关系演

    算语言

    域关系演算语言

    QBE

    具有关系代数和关系

    演算双重特点的语言

    SQL

    • 关系运算是设计关系数据语言的基础。关系操作语言的种类

    • 可划分如下:


    5166643

    一、关系代数

    • 1)关系代数的基本概念

    • 关系代数是对关系进行集合代数运算,是基于关系代数的

    • 操作语言,称为关系代数语言,简称关系代数。

      • 它是由IBM在一个实验性的系统上实现的,称为ISBL(Information System Base Language)语言。

      • ISBL的每个语句都类似于一个关系代数表达式。

    • 关系代数的运算对象是关系,运算结果也是关系,关系代

    • 数用到的运算符主要包括四类:


    5166643

    运算符

    含义

    集合运算符

    -

    ×

    广义笛卡尔积

    专门的关系运算符

    σ

    选择

    投影

    

    连接

    ÷

    关系代数运算符


    5166643

    运算符

    含义

    比较运算符

    大于

    大于或等于

    小于

    小于或等于

    等于

    不等于

    逻辑运算符

    续表


    5166643

    传统的集合运算

    • .并∪

    • .差-

    • . 交∩

    • .广义笛卡尔积×


    5166643

    传统集合运算举例


    5166643

    返回本节


    5166643

    专门的关系运算

    • 1).选择(selection)

    • 选择又称为限制,它是在关系R中选择满足

    • 给定条件的元组,组成一个新的关系。记作:

    • σF (R) ={t|t∈R∧F(t) = TRUE }


    5166643

    • 2).投影(projection)

    • 从关系R上选取若干属性列A,并删除重复

    • 行,组成新的关系。记作:

    • ∏A (R) = { t[ A ] | t ∈ R}

    • 投影操作是从列的角度进行的运算。


    5166643

    图书号Bookid

    图书名Bookname

    编者Editor

    价格Price

    出版社Publish

    出版年月PubDate

    库存数Qty

    TP2001--001

    数据结构

    李国庆

    22.00

    清华大学出版社

    2001-01-08

    20

    TP2003--002

    数据结构

    刘娇丽

    18.9

    中国水利水电出版社

    2003-10-15

    50

    TP2002--001

    高等数学

    刘自强

    12.00

    中国水利水电出版社

    2002-01-08

    60

    TP2003--001

    数据库系统

    汪 洋

    14.00

    人民邮电出版社

    2003-05-18

    26

    TP2004--005

    数据库原理与应用

    刘淳

    24

    中国水利水电出版社

    2004-07-25

    100

    表图书关系BOOK


    5166643

    借书卡号Cardid

    读者姓名Name

    性别Sex

    工作单位Dept

    读者类别Class

    T0001

    刘勇

    计算机系

    1

    S0101

    丁钰

    人事处

    2

    S0111

    张清蜂

    培训部

    3

    T0002

    张伟

    计算机系

    1

    表读者关系READER


    5166643

    图书号Bookid

    借书卡号Cardid

    借书日期Bdate

    还书日期Sdate

    TP2003--002

    T0001

    2003-11-18

    2003-12-09

    TP2001--001

    S0101

    2003-02-28

    2003-05-20

    TP2003--001

    S0111

    2004-05-06

    TP2003--002

    S0101

    2004-02-08

    表借书关系BORROW

    返回本节


    5166643

    Bookname

    Publish

    数据结构

    清华大学出版社

    数据结构

    中国水利水电出版社

    高等数学

    中国水利水电出版社

    数据库系统

    人民邮电出版社

    数据库原理与应用

    中国水利水电出版社

    • 例2-3 查询关系BOOK中所有图书的书名和对应的出版社。

    • ∏Bookname,Publish(Book)

    • 结果如下:


    5166643

    Bookname

    Qty

    数据结构

    50

    高等数学

    60

    数据库原理与应用

    100

    • 例2-4查询“中国水利水电出版社”出版的所有藏书的书名和库

    • 存数量。

    • ∏Bookname,Qty(σPublish='中国水利水电出版社'(Book))

    • 结果如下:


    5166643

    • 3).连接(join)

    • 连接也称为θ连接。它是从两个关系R和S的

    • 笛卡尔积R×S中选取属性间满足一定条件的元

    • 组,构成新的关系。

    • 连接是从两个关系的笛卡儿积中选取属性间满足一定

    • 条件的元组。记作:

    • R S={tr ts| trR ∧ tsS ∧ tr [A]θts [B]}.

    • AθB


    5166643

    • R S={tr ts| trR ∧ tsS ∧ tr [A]θts [B]}.

    • AθB

    • 其中:A和B分别为R和S上度数相等且可比的属性组,

    • θ是比较运算符。

    • 连接运算从R和S的广义笛卡儿积R×S中,选取符合

    • AθB条件的元组,即选择在R关系中A属性组上的值与在S

    • 关系中B属性组上的值满足比较操作θ的元组。


    5166643

    A=B

    R S = { | trR∧ts S∧tr[A] = ts[B] }

    tr ts

    • 连接一般分为两种:等值连接与自然连接。

    • ★等值连接(equi-join)

      • 什么是等值连接?

        • 当θ为“=”的连接运算称为等值连接。

      • 等值连接的含义

        • 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:


    5166643

    RS = { – ts[B] | tr R∧ts S∧tr[B] = ts[B] }

    tr ts

    2.3 关系代数

    • 自然连接(Natural join)

      • 什么是自然连接

        • 自然连接是一种特殊的等值连接

          • 两个关系中进行比较的分量必须是同名的属性(组)

          • 在结果中把重复的属性列去掉

      • 自然连接的含义

        R和S具有相同的属性组B


    5166643

    RS = { – ts[B] | tr R∧ts S∧tr[B] = ts[B] }

    tr ts

    ★自然连接

    • 什么是自然连接?

      • 自然连接是一种特殊的等值连接。

        • 两个关系中进行比较的分量必须是同名的属性(组)。

        • 在结果中把重复的属性列去掉。

    • 自然连接的含义

      R和S具有相同的属性组B。

  • 举例说明笛卡尔积、等值连接、自然连接的区别。


  • 5166643

    Bookid

    Bookname

    Publish

    TP2001--001

    数据结构

    清华大学出版社

    TP2003--002

    数据结构

    中国水利水电出版社

    TP2002--001

    高等数学

    中国水利水电出版社

    TP2003--001

    数据库系统

    人民邮电出版社

    TP2004--005

    数据库原理与应用

    中国水利水电出版社

    表(a)R关系


    5166643

    Cardid

    Bookid

    T0001

    TP2003--002

    S0101

    TP2001--001

    S0111

    TP2003--001

    S0101

    TP2003--002

    表(b)S关系


    5166643

    R.Bookid

    BookName

    Publish

    S.Bookid

    Cardid

    TP2001--001

    数据结构

    清华大学出版社

    TP2001--001

    S0101

    TP2003--002

    数据结构

    中国水利水电出版社

    TP2003--002

    T0001

    TP2003--002

    数据结构

    中国水利水电出版社

    TP2003--002

    S0101

    TP2003--001

    数据库系统

    人民邮电出版社

    TP2003--001

    S0111

    表(c)R和S的等值连接


    5166643

    • 4).除(division)

    • 为了说明除法运算,先得给出像集的概念。

    • 像集的定义:给定一个关系R(X,Z),X

    • 和Z为属性组。定义当t(X)= x时,在R中的像

    • 集为:

    • Zx={t[Z]|t∈R,t[X]= x}

    • 它表示R中属性组X上值为x的诸元组在Z上分量

    • 的集合。


    5166643

    ZB=b2

    S

    B

    C

    D

    b1

    c2

    d1

    C

    D

    b2

    c1

    d1

    c1

    d1

    b2

    c3

    d2

    c3

    d2

    • 像集举例:


    5166643

    • 除符号定义为

    • R÷S = {tr [X] | tr R∧πY (S) Yx }

    • Yx:x在R中的象集, tr[X] = x

    • 本质是R在属性组X上投影的一个子集,最终结果由属于R中的属性构成。

    • 关系除法运算的求解步骤。


    5166643

    例2-6 设关系R,S分别如表2-10中的(a)和(b)所示,求R÷S。

    返回本节


    5166643

    关系数据库管理系统

    • (1)(最小)关系系统。即满足上面最基本的条件,支持关系数据结构,支持选择、投影和连接操作。

    • (2)关系完备系统。支持关系数据结构和所有的关系代数操作。

    • (3)全关系。这类系统支持关系模型的所有特征,而且支持数据结构中域的概念及实体完整性和参照完整性。

    返回首页


    5166643

    • 关系代数总结

      • 关系代数是在关系上定义一组运算,由已知关系经过有限次地运算可以得到目标关系(查询)。

    • 专门的关系运算:

      • 选择(Select)

      • 投影(Project)

      • 连接(Join)

      • 除(Divide)

    • 传统的集合运算:

      • 并(Union)

      • 交(Intersection)

      • 差(Difference)

      • 广义笛卡尔积

        (Extended Cartesian Product)

    • 关系代数表达式应该建立在关系模式上,而不是某一特定的关系实例上满足。


    5166643

    ×、  、 、 ÷

    • 水平方向的运算:

      ∪、 ∩ 、-、σ

    • 垂直方向的运算:

    • π

    • 混合运算:

    • 关系代数表达式:

      由关系的运算经过有限次的复合后形成的式子。


    5166643

    • 五种基本操作的实现

    • 查询 一个关系中指定列属性的查询 π

    • 两个关系的合并 ×

    • 插入 ∪

    • 删除 -

    • 修改 - ∪

    一个关系中指定元组的查询 σ


    5166643

    用关系代数表示检索的例子

    学生关系库的关系模式为:

    学生(学号,姓名,性别,年龄,所在系);

    学生合唱团(学号,姓名,性别,年龄,所在系);

    学生篮球队(学号,姓名,性别,年龄,所在系);

    课程(课程号,课程名,先行课,学分);

    选课(学号,课程号,成绩).

    【例4-1】求选修了课程号为“C2”课程的学生学号。

    π学号(σ课程号= 'C2'(选课))

    【例4-2】求选修了课程号为“C2”课的学生学号和姓名。

    π学号,姓名(σ课程号= ‘C2’(选课 学生))

    【例4-3】请列出参加课外社团的学生情况。

    学生合唱团∪学生篮球队

    【例4-4】请列出既参加学生合唱社团,又参加篮球队的学生情况。

    学生合唱团∩学生篮球队


    5166643

    • 【例4-6】查询没有参加课外社团的学生信息。

    • (学生-学生合唱团)-学生篮球队

    • 【例4-7】求没有选修课程号为“C2”课程的学生学号。

    • π学号(学生)-π学号(σ课程号= 'C2'(选课))

    • 【例4-8】求既选修“C2”课程,又选修“C3”课程的学生学号。

    • π学号(σ课程号= ‘C2’(选课))∩π学号(σ课程号= 'C3'(选课))

    • 该题不能写为:

    • π学号(σ课程号=‘C2’ ∧ 课程号=‘C3’(选课))


    5166643

    【例4-9】求选修课程号为“C2”或“C3”课程的学生学号。

    π学号(σ课程号='C2'(选课))∪π学号(σ课程号='C3'(选课))

    或 π学号(σ课程号=‘C2’ ∨ 课程号=‘C3’(选课))

    【例4-10】求选修了全部课程的学生学号。

    π学号,课程号(选课÷课程)

    【例4-11】查询至少选修了一门其先行课是c6课程的学生姓名。

    π姓名(σ先行课=‘C6’(课程) (选课) (学生))

    π姓名((π课程号(σ先行课=‘C6’(课程))π学号,课程号(选课) π学号,姓名(学生))


    5166643

    • 注:查询要优化处理

    • 一般先作选择、投影,再作连接。

    • 尽量减少扫描表的次数。

    • 例如:求计算机系所有女学生的信息

    • (σ所在系=‘计算机系’(学生))∩(σ性别=‘女’(学生))

    • σ所在系=‘计算机系’ ∧ 性别=‘女’ (学生)

    优选


    5166643

    关系演算

    • 关系的表示有列举法(二维表)、描述法。描述法是给出关

    • 系元组所必须满足的特性;关系演算以数理逻辑中的谓词演算

    • 为基础。

    • 种类:根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。

    • *元组关系演算:

      以元组变量作为谓词变元的基本对象;元组关系演算语言ALPHA

      *域关系演算:

      以域变量作为谓词变元的基本对象;域关系演算语言QBE


    5166643

    关系演算

    • 关系演算是以数理逻辑中的谓词演算为基础的,通过谓词

    • 形式来表示查询表达式。

    • 1 ) 元组关系演算语言

    • 元组关系演算是以元组变量作为谓词变元的基本对象。

    • 元组关系演算语言的典型代表是E.F.Codd提出的ALPHA

    • 语言,这种语言虽然没有实际实现,但较有名气,INGRES

    • 关系数据库上使用的QUEL语言,就是在ALPHA语言的基础

    • 上研制的。

    • 关系表达式用R={t |ф(t)}表示,其中:t为元组变量; ф(t)为元组演算公式;所有使ф(t)为真的元组的集合。


    5166643

    • 元组演算公式由原子公式和运算符组成。

    • 原子公式:

    • R (t): t是R关系中的元组。

    • t [i] θu [j]: t\u是元组变量, θ比较运算符,t元组的第i分量与u元组的第j分量满足比较条件.

    • t [i] θc: t元组的第i分量与常量c满足比较条件.

    • 运算符优先规则:

    • 括号 算术 比较 量词 逻辑


    Alpha

    元组关系演算语言ALPHA

    • 检索操作 GET

      GET工作空间名[(定额)](表达式1)

      [:操作条件] [DOWN/UP 表达式2]

    • 插入操作

      • 建立新元组--PUT

    • 修改操作

      • HOLD--修改--UPDATE

    • 删除操作

      • HOLD--DELETE


    5166643

    • 查询GET语句格式:

    • GET工作空间名 [(定额)](表达式1)

    • [:操作条件] [DOWN/UP 表达式2]

    指定语句的操作对象

    如:关系名;关系名.属性名

    规定检索的元组个数

    关系名.属性名;元组变量;属性名

    逻辑表达式


    5166643

    (1)简单检索

    • GET工作空间名 (表达式1)

      [例1] 查询所有被选修的课程号码。

      GET W (选课.课程号) 

      [例2] 查询所有学生的数据。

      GET W (学生)


    5166643

    (2)限定的检索

    • 格式

      GET工作空间名(表达式1):操作条件

      [例3] 查询信息系(IS)中年龄小于20岁的学生的学号和年龄。

      GET W (学生.学号,学生.年龄):学生.所在系=‘IS’∧ 学生.年龄<20


    5166643

    (3)带排序的检索

    • 格式

      GET工作空间名(表达式1)[:操作条件]

      DOWN/UP 表达式2

      [例4] 查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序。

      GET W (学生.学号,学生.年龄):学生.所在系='CS‘ DOWN学生.年龄


    5166643

    (4)带定额的检索

    • 格式 : GET工作空间名(定额)(表达式1)

      [:操作条件] [DOWN/UP表达式2]

      [例5] 取出一个信息系学生的学号。

      GET W (1) (学生.学号): 学生.所在系='IS' 

      [例6] 查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排序。

      GET W (3) (学生.学号,学生.年龄):

      学生.所在系=‘IS’ DOWN 学生.年龄


    5166643

    (5)用元组变量的检索

    • 元组变量的含义

      • 表示可以在某一关系范围内变化(也称为范围变量Range Variable)

    • 元组变量的用途

      • ① 简化关系名:设一个较短名字的元组变量来代替较长的关系名。

      • ② 操作条件中使用量词时必须用元组变量。

    • 定义元组变量

      • 格式: RANGE 关系名 变量名

      • 一个关系可以设多个元组变量


    5166643

    (6) 用存在量词的检索

    [例8] 查询选修2号课程的学生名字。

    RANGE选课 X

    GET W (学生.姓名): X(X.学号=学生.学号∧X.课程号='2')


    5166643

    函 数 名

    功 能

    COUNT

    对元组计数

    TOTAL

    求 总 和

    MAX

    求最大值

    MIN

    求最小值

    AVG

    求平均值

    (7)集函数

    • 常用集函数(Aggregation function)或内部函数(Build-in function)


    5166643

    • [例9] 查询学生所在系的数目。

      GET W ( COUNT(学生.所在系) )

      COUNT函数在计数时会自动排除重复值。

    • [例10] 查询信息系学生的平均年龄

    • GET W (AVG(学生.年龄)): 学生.所在系='IS’  


    5166643

    • [例11] 把95007学生从计算机科学系转到信息系。

    • HOLD W (学生.学号, 学生.所在系):学生.学号='95007'

      (从学生关系中读出95007学生的数据)

    • MOVE ‘IS’ TO W.所在系

      (用宿主语言进行修改)

    • UPDATE W

      (把修改后的元组送回学生关系)


    5166643

    2) 域关系演算语言QBE

    • 域关系演算是关系演算的另一种形式。

    • 域关系演算是以元组变量的分量即域变量作为谓词变

    • 元的基本对象。

    • 域关系演算语言的典型代表是1975年由IBM公司约克

    • 城高级研究试验室的M.M.Zloof提出的QBE语言,该语言

    • 于1978年在IBM370上实现。


    5166643

    • l一种典型的域关系演算语言

      • 由M.M.Zloof提出

      • 1978年在IBM370上得以实现

      • QBE也指此关系数据库管理系统

    • lQBE:Query By Example

      • 基于屏幕表格的查询语言

      • 查询要求:以填写表格的方式构造查询

      • 用示例元素(域变量)来表示查询结果可能的情况

      • 查询结果:以表格形式显示


    5166643

    QBE操作框架

    关系名

    属性名

    操作命令

    元组属性值或查询条件或操作命令

    操作命令:P.(打印或显示)、U.(修改)、I.(插入)、D.(删除)


    5166643

    • 学生

    一、检索操作

    • (1)用户提出要求;

    • (2)屏幕显示空白表格;

    •   (3)用户在最左边一栏输入要查询的关系名,例如

    • 学生;


    5166643

    学生

    学生

    Sno

    Sno

    Sname

    Sname

    Ssex

    Ssex

    Sage

    Sage

    Sdept

    Sdept

    P. T

    >19

    IS

    • (4)系统显示该关系的属性名

    • (5)用户在上面构造查询要求


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    李勇

    张立

    • (6)屏幕显示查询结果


    5166643

    构造查询的几个要素

    • 示例元素 即域变量 一定要加下划线

    • 示例元素是这个域中可能的一个值,它不必是查询结果中的元素

    • 打印操作符P.指定查询结果所含属性列

    • 查询条件 不用加下划线

    • 可使用比较运算符>,≥,<,≤,=和≠

    • 其中=可以省略


    5166643

    学生

    学生

    Sno

    Sno

    Sname

    Sname

    Ssex

    Ssex

    Sage

    Sage

    Sdept

    Sdept

    P.95001

    P. 李勇

    P.男

    P.20

    P.CS

    P.

    1). 简单查询

    • [例1] 查询全体学生的全部数据。

    • 显示全部数据也可以简单地把P.操作符作用在关系名上。


    5166643

    学生

    学生

    Sno

    Sno

    Sname

    Sname

    Ssex

    Ssex

    Sage

    Sage

    Sdept

    Sdept

    P.95001

    >19

    P. 李勇

    IS

    2). 条件查询

    • [例2] 求信息系全体学生的姓名。

    • [例3] 求信息系全体学生的姓名。


    5166643

    学生

    学生

    Sno

    Sno

    Sname

    Sname

    Ssex

    Ssex

    Sage

    Sage

    Sdept

    Sdept

    P.95001

    P.95001

    P.95001

    >19

    >19

    CS

    CS

    • [例4] 求计算机科学系年龄大于19岁的学生的学号。

      法(1):把两个条件写在同一行上

    法(2):把两个条件写在不同行,但使 用相同的示例元素值


    5166643

    学生

    SC

    Sno

    Sno

    Cno

    Grade

    Sname

    Ssex

    Sage

    Sdept

    P.95001

    P.95002

    >19

    CS

    P.95001

    P.95001

    1

    2

    [例5] 查询既选修了1号课程又选修了2号课程的学生的学号。

    • [例6] 查询计算机科学系或者年龄大于19岁的学生的学号。


    5166643

    选课

    学生

    Sno

    Sno

    Cno

    Grade

    Sname

    Ssex

    Sage

    Sdept

    95001

    P.李勇

    95001

    1

    [例7] 查询选修1号课程的学生姓名。

    • 注意:示例元素Sno是连接属性,其值在两个表中要相同。


    5166643

    选课

    学生

    Sno

    Sno

    Cno

    Grade

    Sname

    Ssex

    Sage

    Sdept

    95001

    P.李勇

    95001

    1

    条件查询(非条件)

    [例8] 查询未选修1号课程的学生姓名

    • 思路:显示学号为95001的学生名字,而该学生选修1号课程的情况为假


    5166643

    选课

    Sno

    Cno

    Grade

    95001

    .95001

    P.1

    1

    [例9] 查询有两个人以上选修的课程号

    思路:查询这样的课程1,它不仅被95001选修

    而且也被另一个学生(95001)选修了


    5166643

    函 数 名

    功 能

    CNT

    对元组计数

    SUM

    求 总 和

    AVG

    求平均值

    MAX

    求最大值

    MIN

    求最小值

    3). 集函数

    • 常用集函数:


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    P.AVG.ALL.

    IS

    • [例10] 查询信息系学生的平均年龄。


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    P.李勇

    DO(2).

    AO(1).

    4).对查询结果排序

    • [例11] 查全体男生的姓名,要求查询结果按所在系升序排序,对相同系的学生按年龄降序排序。


    5166643

    学生

    学生

    Sno

    Sno

    Sname

    Sname

    Ssex

    Ssex

    Sage

    Sage

    Sdept

    Sdept

    U.

    95001

    95001

    U. 18

    18

    二、修改操作

    • [例12] 把95001学生的年龄改为18岁。

      方法(1) :将操作符“U.”放在值上

    方法(2): 将操作符“U.”放在关系上

    码95001标明要修改的元组。“U.”标明所在的行是修改后的新值。


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    95008

    U.18

    CS

    • [例13]将计算机系所有学生的年龄都改为18岁


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    U.

    95001

    95001

    17

    17+1

    [例14] 把95001学生的年龄增加1岁

    分两行分别表示改前和改后的示例元素,必须将操作符“U.”放在关系上


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    U.

    95008

    95008

    18

    18+1

    CS

    • [例15] 将计算机系所有学生的年龄都增加1岁


    5166643

    学生

    Sno

    Sname

    Ssex

    Sage

    Sdept

    I.

    95701

    张三

    17

    IS

    三.插入操作

    • [例16] 把信息系女生95701,姓名张三,年龄17岁存入数据库中。


    5166643

    学生

    选课

    Sno

    Sno

    Cno

    Sname

    Grade

    Ssex

    Sage

    Sdept

    D.

    95089

    D.

    95089

    四. 删除操作

    • [例17] 删除学生95089

    • 为保证参照完整性,删除95089学生前,先删除95089学

    • 生选修的全部课程


  • Login