2.1 关系数据结构及形式化定义

2.1.1 关系

单一的数据结构->关系:现实世界的实体以及实体间的各种联系均用关系来表示
数据的逻辑结构->二维表:从用户角度,关系模型中数据的逻辑结构是一张二维表。
关系模型建立在集合代数的基础上

1. 域

一组具有相同数据类型的值的集合,例如:整数、实数、介于某个取值范围的整数、指定长度的字符串集合、{‘男’,‘女’}

2. 笛卡尔积

笛卡尔积:
给定一组域D1,D2,…,Dn(允许其中某些域是相同的),它们的笛卡尔积为:
D1 × D2 × … × Dn = {(d1,d2,…,dn)|di ∈ Di,i=1,2,…,n}
人话就是:所有域的所有取值的一个组合,不能重复组合。

分量(Component):
笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。

元组(Tuple):
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组,就是组合中的一种情况,n表示属性个数。

基数(Cardinal number):
Di(i=1,2,…,n)为有限集,基数为mi(i=1,2,…,n),则D1 × D2 × … × Dn基数 M 为:

人话就是:有限集的前提下,所有不重复的组合个数。

笛卡尔积的表示方法:
笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域,每个格子为一个分量。

3.关系

关系:
D1 × D2 × … × Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为:

R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)。
关系是笛卡尔积的有限子集,笛卡尔积不满足交换律,关系满足交换律(关系的每个列附加一个属性名以取消关系元组的有序性)。

元组:
关系中的每个元素是关系中的元组,通常用t表示。

单元关系与二元关系:
– 当n=1时,称该关系为单元关系(Unary relation)。
– 当n=2时,称该关系为二元关系(Binary relation)。

关系的表示:
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。

属性(Attribute):
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。

码(Key):

候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(如学号,身份证号)。
在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码(All-key)。
若一个关系有多个候选码,则选定其中一个为主码(Primary key)。候选码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非码属性或非主属性(Non-key attribute)。
三类关系:

基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示。
查询表:查询结果对应的表。
视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
基本关系的性质:

列同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同一个域。
不同的列可出自同一个域,其中的每一列称为一个属性。不同的属性要给予不同的属性名。
列的顺序无所谓(属性名打破有序性)。
任意两个元组不能完全相同(候选码不同)
行的顺序无所谓,即行的次序可以任意交换。
分量必须取原子值,每一个分量都必须是不可分的数据项。这是规范条件中最基本的。

2.1.2 关系模式

1. 什么是关系模式

关系模式(Relation Schema)是型,关系是值。
关系模式是对关系的描述:
元组集合的结构(属性构成、属性来自的域 、属性与域之间的映象关系),完整性约束条件,元组语义。

2.定义关系模式

R(U,D,dom,F)
R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
dom 属性向域的映象集合
F 属性间的数据依赖关系集合
简记为:R (U) 或 R (A1,A2,…,An),域名及属性向域的映象常常直接说明为属性的类型、长度。

2.1.3 关系数据库

1. 关系数据库

在一个给定的应用领域中,表示所有实体及实体之间联系的关系的集合构成一个关系数据库。

2. 关系数据库的型与值

关系数据库也有型和值之分,关系数据库的型称为关系数据库模式,是对关系数据库的描述(若干域的定义,在这些域上定义的若干关系模式)
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库。

2.1.4 关系模型的存储结构

有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理

2.2 关系操作

2.2.1 基本的关系操作

1. 常用的关系操作

查询:选择、投影、连接、除、并、交、差、笛卡尔积
基本操作:选择、投影、并、差、笛卡尔积
数据更新:插入、删除、修改
查询的表达能力是其中最主要的部分

2.关系操作的特点

集合操作方式:即操作的对象和结果都是集合。
非关系数据模型的数据操作方式:一次一记录。

3. 关系数据语言的种类

4. 关系数据语言的特点

关系语言是一种高度非过程化的语言,存取路径的选择由DBMS的优化机制来完成,用户不必用循环结构就可以完成数据操作。
能够嵌入高级语言中使用。
关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价。

2.3 关系的完整性

关系模型的完整性规则是对关系的某种约束条件。(实体完整性,参照完整性,用户定义的完整性)

2.3.1 关系的三类完整性约束

实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

2.3.2 实体完整性

若属性A是基本关系R的主属性,则属性A不能取空值。空值就是“不知道”或“不存在”或“无意义”的值

原因:
(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)关系模型中以主码作为唯一性标识。
(4)主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性

2.3.3 参照完整性

1. 关系间的引用

在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。

2.外码(Foreign Key)

设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码。
基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)。
关系R和S不一定是不同的关系。学生(学号,姓名,性别,专业号,年龄,班长学号)
目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上。
外码并不一定要与相应的主码同名;
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

3. 参照完整性规则

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
– 或者取空值(F的每个属性值均为空值)
– 或者等于S中某个元组的主码值。

2.3.4 用户定义的完整性

用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。

2.4 关系代数

2.4.0 概述

  1. 定义
    一种抽象的查询语言,用对关系的运算来表达查询。三要素:运算对象、运算结果、运算符。

  2. 分类
    传统的集合运算符:将关系看成元组的集合,运算是从关系的“水平”方向即行的角度来进行
    专门的关系运算符:不仅涉及行而且涉及列
    算术比较符:辅助专门的关系运算符进行操作
    逻辑运算符:辅助专门的关系运算符进行操作

  3. 标记符号

2.4.1 传统的集合运算

1. 并

条件具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域。

2. 差

条件: 具有相同的目n,相应的属性取自同一个域

3. 交

条件: 具有相同的目n,相应的属性取自同一个域

4. 广义笛卡尔积

R:n目关系,k1个元组
S:m目关系,k2个元组

列:(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
行:k1×k2个元组

2.4.2 专门的关系运算

1.选择

选择又称为限制(Restriction),在关系R中选择满足给定条件的诸元组,是对行进行的操作。(就是按照选择条件选择某个表中的某些行)
其中 表示选择条件,是一个逻辑表达式,取逻辑值“真”或“假”,基本形式为:。
是比较运算符(>,≥,<,≤,=或<>)
,等是属性名、常量、简单函数;属性名也可以用它的序号来代替;
在基本的选择条件上可以进一步进行逻辑运算,求非 ,与,或运算。

2. 投影

从R中选择出若干属性列组成新的关系,是对列进行的操作。(就是只保留部分的属性列)
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。

3. 连接

从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
连接运算从 和 的广义笛卡尔积 中选取( 关系)在 属性组上的值与( 关系)在 属性组上值满足比较关系的元组。
等值连接:
,从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。
自然连接:
R和S具有相同的属性组B。
悬浮元组:两个关系 和 在做自然连接时,关系 中某些元组有可能在 中不存在公共属性上值相等的元组,从而造成 中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
外连接(Outer Join):如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接。

左外连接(LEFT OUTER JOIN或LEFT JOIN):只保留左边关系R中的悬浮元组

右外连接(RIGHT OUTER JOIN或RIGHT JOIN):只保留右边关系S中的悬浮元组
例子:


4.除

保留R中满⾜S的,⽽且R中列要去掉S的列。

2.5 习题

解析:
1.查询的是图书名称,图书名称在“采购图书”中,而我们的查询条件是借书证号为‘S20180204’的读者,借书证号在“借阅”中,“借阅”和“采购图书”没有直接的联系,需要一个中间关系模式,即“上架图书”,“上架图书中”的主键(内部编码),是“借阅”的外键,“采购图书”的主键(ISBN)是“上架图书”的外键,“上架图书”相当于桥梁将“借阅”和“采购图书”两个关系链接起来,将三个表自然连接后选择借书证号为‘S20180204’的元组,投影出书名即可。

2.寻找没有借过书的读者的(借书证号)(姓名)(电话),直接查找比较困难。可以先表示出有借阅记录的读者,即在“借阅”和“读者”自然连接(自然连接的原因同上)后的表中投影出所需的属性,然后与所有的读者做差就是没借过书的人。

3.要满足两个条件,第一反应应该是使用选择操作,条件做‘交’,但是对于同一个元组不能做‘交’(无法找到某个元组的某个属性同时满足两个值),所以可以找出满足条件1的所有读者和满足条件2的所有读者后再做‘交’。至于为何要自然连接三个关系,这是由所需的属性位于哪个关系决定的。

4.可以直接对选择的条件做‘并’的操作,表示只要满足条件1或者满足条件2即可,那就很简单了。

5.将“借阅”和自己求一下广义笛卡尔积,由题目可知第2列的属性是‘借书证号’,第3列的属性是‘图书内部编码’,在广义笛卡尔积后的关系中,第7列为第二张表的‘借书证号’,第8列为第二张表的‘图书内部编码’,那么我们可以使用选择,条件设置成第2列和第7列相等(保证同一个人),第3列和第8列不同(保证借的书至少有两本不同),最后再投影出所需的属性即可。

6.先在读者中选择出姓名为‘林民’的元组,与‘借阅’自然选择后就是林民的所有借阅记录,投影出其中的“图书内部编码”,然后再与‘借阅’自然选择得到所有和林民的图书编码一样的借阅记录,然后与读者自然选择得到每条借阅记录的读者信息,投影出需要的属性即可。

7.遇到满足某个集合“全部”的概念时一般考虑用除法,先找到除数,即借阅人为林民的所有图书的内部编码,再找到被除数,即所有的读者信息,由于要和除数有联系,所有不光投影出所需的属性,还要投影出内部编码。

数据库系统:第二章关系数据库相关推荐

  1. 数据库期末总结笔记( 零基础 )-第二章 关系数据库

    第二章 关系数据库 一.关系代数的五个基本操作 1.选择(δ):把满足条件的基本元组找出来(元组对应行) 分析:题目中出现找条件一般就用选择(学号在一定范围,性别男还是女,年龄在什么范围-) 例:①查 ...

  2. 数据库系统概述---第二章关系数据库

    第二章 关系数据库 1.关系模型三要素:关系数据结构:关系数据操作:关系完整性约束条件 2.关系完整性约束条件:参照完整性:实体完整性:自定义完整性: 3.关系代数 集合操作 并R∪S  交R∩S 差 ...

  3. 数据库笔记整理--基于《数据库系统概论》第五版王珊一书|第二章--关系数据库知识整理和课后习题答案

    该系列的博客都是基于<数据库系统概论>第五版王珊一书 前提: 因为最近要升学的原因,再加上重温数据库部分内容,所以整理一份比较详细且重点的笔记.适合有考研升学需求的人收藏 -------- ...

  4. (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义

    文章目录 一:关系 (1)域 (2)笛卡尔积 (3)关系 A:基本概述 B:码相关概念 C:关系的三种类型 二:关系模式 三:关系数据库 (1)基本概念 (2)关系数据库的型与值 前面说过,数据模型由 ...

  5. (数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性

    文章目录 一:关系操作 (1)基本的关系操作 (2)关系数据语言的分类 二:关系完整性约束 (1)实体完整性 (2)参照完整性 A:参照关系 B:外码 C:参照完整性规则 (3)用户自定义完整性 一: ...

  6. 数据库系统概论 第二章 关系数据库

    目录 2.1 关系数据结构及形式化定义 2.1.1 关系 2.1.2 关系模式 2.1.3 关系数据库 2.1.4 关系模型的存储结构 2.2 关系操作 2.2.1 基本的关系操作 2.2.2 关系数 ...

  7. 数据库系统概论 第二章关系数据库 知识点总结

    目录 1.  关系数据结构及形式化定义 1.1 关系 1.1.1 笛卡儿积 1.1.2 关系 1.2  关系模式 1.3 关系数据库 2. 关系操作 2.1 基本的关系操作 2.2 关系数据语言的分类 ...

  8. 数据库系统概论:第二章 关系数据库

    2.1 关系数据结构及形式化定义 2.1.1 关系 1. 域(domain) 一组具有相同数据类型的值的集合 2. 笛卡儿积 域上的一种集合运算,笛卡儿积是不同域的所有元素的所有组合 一个域允许的不同 ...

  9. 数据库系统原理(第二章关系数据库 )

    一.关系数据库概述 20世纪80年代后,在商用数据库管理系统中,( 关系模型 )逐渐取代早 期的网状模型和层次模型,成为主流数据模型 SQL3(SQL-99):1999年 SQL2(SQL-92):1 ...

最新文章

  1. php v9 ajax 翻页,phpcms v9建站 ajax列表分页加载更多word文档教程
  2. oracle创建序列seq起始值为1_oracle 重置序列从指定数字开始的方法详解
  3. C++保存不同的图片格式
  4. oracle的乐观锁和悲观锁
  5. 深入理解分布式技术 - 微服务为什么需要API 网关
  6. AtCoder Beginner Contest 096 题解
  7. windows的几个原则
  8. ICML 2020 | 基于连续动态系统学习更加灵活的位置编码
  9. VTK:绘制箱形图 BoxChart用法实战
  10. 那个 14 岁上大学、17 岁读博、24 岁当教授的天才神童,如今怎么样了?
  11. byteofpython.info_A Byte of Python 笔记(7)数据结构:列表、元组、字典,序列
  12. [投稿]Speex回声消除代码分析
  13. android studio乱码
  14. 【渝粤教育】广东开放大学 形成性考核 (29)
  15. 动态规划之01背包问题(含代码C)
  16. Zookeeper(一) zookeeper基础使用
  17. Android中性能优化积累
  18. 帝国cms二次开发应用
  19. CC00053.CloudKubernetes——|KuberNetes二进制部署.V06|3台Server|——|etcd配置|
  20. 在blast中E值(E value)是什么?

热门文章

  1. 2019年 十款Mac上必备的实用软件列表
  2. OSChina 周二乱弹 ——程序员在聊天中注意观察什么细节
  3. 常用的图像特征提取方法
  4. 经典影视剧《大宋提刑官》——老剧重看,再添心得
  5. php 黄页,PHPCMS企业黄页
  6. 物联平台纷争,能否拯救智能硬件?
  7. bilibili缓存文件在哪里_不要再胡乱清理手机内存,花1分钟删掉这些文件夹,释放大量空间...
  8. Linux 下的 3D 设计软件-FreeCAD
  9. 小熊派折叠开发板(一)- 开发板介绍
  10. 少儿学编程系列---如何使用turtle画鸡蛋