目录

前言

一、关系数据库的结构(Structure of Relation Database)

1.基本结构

2.属性的值说明

3.Keys 键/码

(1)超级码(superkey)

(2)候选码(candidate key)

(3)主码(primary key)

(4)外码(foreign key)

二、关系查询语言(Relational Query Language)

一些“纯”语言("Pure" languages)

三、关系代数操作符(Relational-Algebra Operations)

1.基本操作符

(1)选择(select)​

(2)投影(project)

(3)并(union)

(4)集合差(set difference)​

(5)笛卡尔积(Cartesian product)​

(6)重命名(rename)​

2.附加操作符

(1)集合交(set intersection)

(2)自然连接(natural join)

(3)除法(division)


前言

本篇文章重点为代数关系的运算符,应掌握如何使用基本运算符和附加运算符解决用户需求。


一、关系数据库的结构(Structure of Relation Database)

1.基本结构

该关系的模式(schema)是:instructor = (ID,name,dept_name,salary)。

行记录具有无序性,但往往会根据操作时间排序。

2.属性的值说明

(1)每个属性有属性类型(attribute type),该属性类型可以规定属性的值域(value domain),一个关系的值域是每个属性值域的乘积

(2)属性值应该是原子的(atomic)不可分的(indivisible)

(3)特殊值null是任何值域中的成员,代表的是不知道具体值(unknown),而不是C语言中的空值的含义

3.Keys 键/码

(1)超级码(super key)

能够确定唯一一个元组(行记录)的一个或几个属性所构成的集合。

例如:{ID}和{ID, name}都是instructor的超级码。

(2)候选码(candidate key)

超级码中最小的是候选码。

例如:{ID}是instructor的候选码。

(3)主码(primary key)

从候选码中选一个作为主码,至于选哪一个候选码作为主码取决于业务规则。

(4)外码(foreign key)

在一个关系中的一个或几个属性也出现在其他的关系中,这些属性构成外码。外码可以关联多个关系,使得关系之间存在引用(referencing)和被引用(referenced)的关系。

二、关系查询语言(Relational Query Language)

查询语言可以分为过程化的非过程化的 。 在过程化语言 (procedural language) 中, 用户指导系统对数据库执行一系列操作以计算出所需结果 。 在非过程化 nonprocedural language) 中 , 用户只需描述所需信息 , 而不用给出获取该信息的具体过程 。

一些“纯”语言("Pure" languages)

(1)关系代数(relational algebra)

(2)元组关系演算(tuple relational calculus)

(3)域关系演算(domain relational calculus)

以上三者等价,它们说明了从数据库中提取数据的基本技术。

三、关系代数操作符(Relational-Algebra Operations)

1.基本操作符

(1)选择(select)

形式

定义:返回输入关系r中满足选择谓词p的行记录

示例表示从instructor关系中选出所有物理学院的老师

注释:1.选择操作不改变schema,也就是说所挑出的行记录属性个数不变

2.选择谓词p中可以有多个条件(term)通过(与)、(或)、┐(非)连接

3.term的形式为<attribute>  =/≠(<>)/>/</≥/≤ <attribute>/<constant>,也就是属性等于或不等于或大于或小于或大于等于或小于等于某个属性或常量

适用场景:需要选出某些属性条件的数据时

例题

(2)投影(project)

形式

定义:对输入关系r中所有的行记录只挑选出这些属性的值,并完成去重

示例表示从instructor关系中选出老师的ID,姓名和年薪,并做去重

注释:1.投影操作改变schema,也就是说所挑出的行记录属性会改变

2.投影操作可能改变行记录的个数,也可能不改,在有重复的行记录的情况下,行记录的个数会发生改变

适用场景:用户只关注某些属性的数据时

例题

(3)并(union)

形式

定义:返回关系r关系s的并集

示例表示将物理学院的老师和年薪大于50000的老师合并,即找出物理学院的老师和年薪大于50000的老师

注释:1.r和s必须有相同的schema

2.结果会自动去重

适用场景:需要一张或多张表的相同属性的数据进行结合时

例题

(4)集合差(set difference)

形式

定义:返回在输入关系r中但不在输入关系s中的行记录

示例表示选出年薪小于等于50000的物理老师

注释:r和s必须有相同的schema

适用场景:需要排除某些数据时

例题

(5)笛卡尔积(Cartesian product)

形式

定义:从两个输入关系r、s中输出所以的行记录(将两个关系结合在一起)

注释:1.做完笛卡尔积后schema可能会改变,在不去掉不合法的行记录之前产生的新关系中行记录的个数是r和s中行记录个数的乘积

2.只有两个关系中均有的属性会自动重命名为<关系名>.<属性名>

3.做完笛卡尔积后会产生一些不合法的行记录,在应用时一定要再用选择操作只选择出合理的行记录(一般利用是各自的主码且二者相同的属性作为选择条件,e.g.

适用场景:需要的数据在多张表中或需要比较不同的行记录(做自身笛卡尔积)

例题

(6)重命名(rename)

形式

定义:将E的名字改成x

示例将r关系改名为s

注释中的x可以改成 (n表示原关系中有n个属性)表示将属性名称也改成

适用场景:需要更改名字,做自身的笛卡尔积时,或者想把名字简化、更改时

例题

几种问题:

(1)找最值

(2)直接比属性

(3)至少问题

(4)个数问题

2.附加操作符

(1)集合交(set intersection)

形式

定义:选出关系r关系s相同的行记录

示例找到在银行中既有贷款(loan)又有账户(account)的顾客。

注释:1.r和s有相同的schema

2. 

适用场景:需要选出的满足两个条件的行记录,这两个属性在不同的关系中

(2)自然连接(natural join)  

形式

定义:输出输入的r和s关系中的公共属性中的公共属性值所在的行记录结合起来,只公共属性只保留一列。

注释:1.内连接(inner join)与自然连接相似,不过不要求输入的两个属性重名,可以用on来指定;输出的关系中,公共属性也保留了两列,但有时也不做区分

2.两个关系只有一个公共属性的时候才能使用自然连接,如果要用到多个属性,则考虑用笛卡尔积联系多个关系

3.连接操作(join operations)包括内连接(inner join)自然连接(natural join)左外连接(left outer join)自然左外连接(natural left outer join)右外连接(right outer join)自然右外连接(natural right outer join)全外连接(full outer join)具体定义见例题便可一目了然,带有“自然(natural)”的公共属性应重名,不带有“自然(natural)”的公共属性可以不重名,但需要用on/using指定

4.自然连接操作可结合,即

适用场景:需要将多个关系连接成一个关系

例题

(3)除法(division)

形式

定义:除运算是同时从关系的水平方向垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。应当满足元组在X上的分量值x的象集包含关系S在属性组Y上投影的集合。(看不懂就看“示例”)

示例:(计算过程

1.挑出关系s中关系r和s相同属性所在的列,本题为D和E

2..挑出关系r中关系s没有的属性所在的列,并做去重,本题为A,B和C,去重后为:

A B C
a
a
a
a
a

3.求2中的每个元组对应的象集D、E

A B C D E
a a 1
A B C D E
a a 1
b 1
A B C D E
a a 1
b 3
A B C D E
a a 1
b 1
A B C D E
a b 1

4.判断3中五个表格中哪些对应的象集包含关系s中属性D、E的所有值:

A B C D E
a a 1
b 1
A B C D E
a a 1
b 1

这两个包含,所以结果为

A B C
a
a

注释:计算条件:只要两个关系有交集就行,不一定非要是包含关系

适用场景:用于体现两个集合包含关系的题目中,一般会出现"all"之类的字眼

例题


总结

感觉是比较有意思的一章。

未完待续……

数据库(二)—— 关系模型概述相关推荐

  1. Database:数据库的关系模型

    数据库学习笔记:关系模型 Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificia ...

  2. 数据库原理—关系模型的数据操作(八)

    数据库原理-关系模型的数据操作(八)

  3. 数据库原理—关系模型的基本概念(七)

    数据库原理-关系模型的基本概念(七)

  4. 数据库:关系模型基本介绍

    关系模型研究什么? 关系模型就是处理Table的,它由三个部分组成: 1:描述DB各种数据的基本结构形式 2:描述Table与Table之间所可能发生的各种操作(关系运算) 3:描述这些操作所应遵循的 ...

  5. 数据库----二 关系数据结构及形式化定义

    关系数据库系统是支持关系模型的数据库系统 关系模型由数据结构.关系操作集合和完整性约束三部分组成 单一的数据结构------关系 但关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体 ...

  6. 从需求出发来看关系模型与非关系模型–关系模型与非关系模型概述

    自从NoSQL概念横空出世,关系数据库似乎就成了众矢之的,似乎一夜之间,关系数据库和SQL就成了低效,高成本,速度慢的数据处理模式的代名词.在很多地方都能看到类似:"我的项目初创,应该选择什 ...

  7. 数据库MySQL关系模型之基本概念

    1.什么是关系模型 1.1关系模型研究什么 一个关系(relation)就是一个Table 关系模型就是处理Table的,它由三个部分组成: 描述DB各种数据的基本结构形式(Table/Relatio ...

  8. 数据库之关系模型的组成,特点以及完整性约束

    关系模型就是用二维表描述数据本身,以及数据之间的关系. 关系模型的组成: 数据结构(表结构)+关系操作(八个操作)+完整性约束(三个完整性) 实体完整性 在关系表中,所有元组主码的值都不能为空. 参照 ...

  9. 数据库之关系模型介绍

    本篇文章是数据库系列的第一篇文章,本系列文章是笔者在学习<数据库系统概念>这本书总结的内容,使用的数据库是MySQL. 关系数据库的结构 关系数据库由表(table)的集合构成,每个表由唯 ...

  10. 数据库 2.关系模型

    2. 关系模型 2.1 关系结构与约束 关系是使用最广泛的逻辑数据模型. 关系模型涉及:关系结构.关系操作.完整性约束. 关系数据库用一系列表来表达数据以及这些数据之间的联系 列:每个列有个列首,也称 ...

最新文章

  1. RMAN duplicate database到新主机
  2. 【转载】在Linux CentOS中安装VSCode用于C++学习,亲测可用
  3. springboot整合shiro-关于登出时,redis中缓存没有清理干净的问题
  4. DM368开发 -- 常用指令演示
  5. CSS:页脚紧贴底部
  6. android photopicker怎么修改状态栏,有没有办法阻止UIImagePickerController更改状态栏样式?...
  7. 第七届山东省Acm程序设计竞赛赛后总结
  8. 解决:clone 别人的Vue项目不能运行问题, node_modules missing
  9. 几个优化 Cacti 监控服务性能的技巧
  10. 【C语言笔记初级篇】第一章:C语言快速入门及注意事项
  11. Sahi ---实现 Web 自动化测试
  12. css/html目录
  13. flash制作文字笔顺_flash动画课件制作有什么优点
  14. UDS诊断协议规范与要求
  15. 香港服务器到大陆各地的网络延迟大小
  16. 初识计算机网络||概述
  17. 如何实现有效的项目进度控制
  18. 视频剪辑用计算机,用于视频剪辑的笔记本电脑,我们都有哪些选择
  19. 国内首部HTML5技术之拉米牌游戏项目实战(涉及智能AI+HTML5图形+HTML5事件模型+网络通讯)...
  20. 补码乘法运算(计算机组成原理18)

热门文章

  1. 30道你不得不会的Elasticsearch面试题【附答案解析】
  2. (二)苏世民:我的经验和教训:追梦(12)
  3. cin gt gt n是c语言中的什么,c++中cinna是什么意思
  4. 启动keepalived报错(VI_1): received an invalid passwd!
  5. 部署搭建DNS服务器
  6. python入门学习_PythonTip
  7. 【Selenium自动化测试】鼠标与键盘操作
  8. 诺亚方舟售票系统V4版本了
  9. rtx4090和3090性能差距
  10. antd源码-spin解析