【数据库原理】关系数据库

前言

数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。

当前互联网+与大数据,一切都建立在数据库之上,以数据说话,首先需要聚集数据、分析数据和管理数据,数据库技术已成为各种计算机系统的核心技术。数据库相关知识也已成为每个人必须掌握的知识。

在这里插入图片描述
在学习上一篇数据库系统概念后,我们知道数据模型是描述数据数据、数据联系、数据的语义以及一致性约束的概念工具的集合,现在我们系统的学习关系数据库。学习关系数据库前,带大家了解一些集合的概念。

在这里插入图片描述

如果集合A的任意一个元素都是集合B的元素,那么称集合A是集合B的子集,用A⊆B表示,读作A包含于B,或者B包含A

如集合B中至少有一个元素不属于A,那么集合A叫做集合B的真子集。也就是A包含于B,且A不等于B,就说集合A是集合B的真子集

一些常用的符号:

符号 含义
子集符号 ⊆、⊇
非子集符号 ⊈、⊉
真子集符号 ⫋、⫌、⊊、⊋、⊂、⊃
非真子集符号 ⊄、⊅
属于 ∈(元素与集合的关系)
不属于 ∉(元素与集合的关系)
并符号 ∨,满足其中一个条件
交符号 ∧,满足两个条件
σ选择运算符 满足σ的条件
θ比较运算符 它可以是>,≥,<,≤,=或< >

集合描述法 :A={x|P}(x为该集合的元素的一般形式,P为这个集合的元素的共同属性)

一、关系及关系模式

美国 E.F.Codd 1970年:“A Relational Model of Data for Large Shared Data Banks”,《Communication of the ACM》标志着关系模型的提出,也是标志着层次、网状数据库的消亡。

1.1 关系模型的基础概念

1.1.1 域(Domain)

域是一组具有相同数据类型的值的集合。例:整数,{‘男’,‘女’},简单理解的话就是属性的取值范围。

1.1.2 笛卡尔积

给定一组域D1,D2,…,Dn,允许其中某些域是相同的。
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn ={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}

集合中的d1来自于D1,以此类推,所有域的所有取值的一个组合并且不能重复就是笛卡尔积。

元组(Tuple)

笛卡尔积中的每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple),或简称为元组(Tuple)。简单理解表中的一行即为一个元组,也就是行

分量(Component)

笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量,也就是某一行对应属性的值

基数(Cardinal number)

若Di(i=1,2,…,n)为有限集,其基数为Mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为: 每个域基数的连乘的个数。

例如,给出3个域:

D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}

注:{张清玫,刘逸}就是元组,刘逸就是分量

这3个域的笛卡尔积的运算如下:
D1×D2×D3={
(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }

基数为2×2×3=12,但是在现实生活中是不存在这样关系的。

1.1.3 关系(Relation)

关系:

一个关系对应通常说的一张表

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

R:关系名

n:一个关系中,有几个域做笛卡尔积的构成称作关系的目或度(Degree),也就是几个列

元组

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

属性

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

  • 候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
  • 主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)
  • 主属性:候选码的诸属性称为主属性(Prime attribute), 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)

例如,主码?(假设学生不会重名)

SUPERVISOR SPECIALITY POSTGRADUATE
张清玫 计算机专业 李勇
张清玫 计算机专业 刘晨
刘逸 信息专业 王敏

POSTGRADUATE 就是主码

1.2 关系模式

关系模式(Relation Schema)是型,关系是值

关系模式可以形式化地表示为:R(U,D,DOM,F),其中

  • R:关系名
  • U:组成该关系的属性名集合
  • D:U中属性所来自的域
  • DOM:属性向域的映象集合
  • F:属性间数据的依赖关系的集合

二、关系模型的三要素

2.1 关系数据结构

关系模型的数据结构是二维表,需要注意是关系中的描述和表中的描述是不一样的

关系
关系名 表名
关系模式 表头
关系 二维表
元组 记录或行
属性
属性值 列值
分量 一条记录中的一个列值

在这里插入图片描述

关系必须是规范化的
最基本的规范条件:每一个分量必须是不可分的数据项

在这里插入图片描述

基本关系的性质

  • 列是同质的(Homogeneous),取值的属性是相同的
  • 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名
  • 列的顺序无所谓,列的次序可以任意交换
  • 任意两个元组的候选码不能相同
  • 行的顺序无所谓,行的次序可以任意交换

2.2 关系数据操作

  • 查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积,其中选择、投影、并、差、笛卡尔积是5种基本操作

  • 数据更新: 插入、删除、修改

2.2.1 关系操作的特点

用的是集合操作方式,操作的对象和结果都是集合,一次一集合的方式

2.2.2 关系操作的查询语言

查询操作是在关系数据中最常用的操作,分为专门的关系运算符和集合运算符,其中有如下操作语言:

在这里插入图片描述
关系代数语言: 用对关系的运算来表达查询要求,代表:ISBL

关系演算语言: 用谓词来表达查询要求

  • 元组关系演算语言:谓词变元的基本对象是元组变量,代表:APLHA, QUEL
  • 域关系演算语言 :谓词变元的基本对象是域变量,代表:QBE

具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)

2.3 关系完整性约束

2.3.1 实体完整性

若属性A是基本关系R的主属性,则属性A不能取空值。

例如选修(学号,课程号,成绩),“学号、课程号”为码,“学号”和“课程号”两个属性都不能取空值

2.3.2 参照完整性规则

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

在这里插入图片描述

要么学生中的ClaID为空,要么是班级信息表中ClaID属性值。

2.3.3 用户定义的完整性

反映某一具体应用所涉及的数据必须满足的语义要求。
例如课程(课程号,课程名,学分),“课程号”属性必须取唯一值,“学分”属性只能取值{1,2,3,4}

三、关系代数

关系代数运算符中包含多种数学运算

在这里插入图片描述

3.1 集合运算符

3.1.1 并(Union)

R和S具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域

R∪S仍为n目关系,由属于R或属于S的元组组成

R∪S={t|t∈R∨t∈S}

∪并符号:集合基本符号,表示至少满足一个集合
∨并符号:逻辑基本符号,表示两个命题有一个发生则命题成立

也就是t∈R要么t∈S

在这里插入图片描述

3.1.2差(Difference)

R和S具有相同的目n,相应的属性取自同一个域

R - S仍为n目关系,由属于R而不属于S的所有元组组成

R -S = { t|t∈R∧t∉S }

∧交符号:逻辑基本符号,表示两个命题同时发生则命题成立
∉符号:集合基本符号,不属于的意思

也就是t∈R

在这里插入图片描述

3.1.3 交(Intersection)

R和S,具有相同的目n,相应的属性取自同一个域

R∩S仍为n目关系,由既属于R又属于S的元组组成

R∩S = { t|t∈R∧t ∈S }
R∩S = R –(R-S)

∩交符号:集合基本符号,表示满足2个集合

在这里插入图片描述

3.1.4 笛卡尔积

在这里插入图片描述

在这里插入图片描述

3.2 专门的关系运算符

3.2.1 引入一些记号

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2.2 选择(Selection)

选择又称为限制(Restriction)

选择运算符的含义:在关系R中选择满足给定条件的诸元组σF( R )= {t|t∈R∧F(t)= ‘真’}

给大家解释一下这个公式:

σ运算符σF(): 在括号中写出运算的关系,在F处写出选择条件的表达式

={t|t∈R∧F(t)= ‘真’}: 它的结果是一个元组的集合,这个元组是属于关系R的,并且满足σ运算符σF()F处写出选择条件的表达式

F是选择条件,是一个逻辑表达式,取值为“真”或“假”

在这里插入图片描述

基本形式为:X1θY1

θ表示比较运算符,它可以是>,≥,<,≤,=或< >

选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算

在这里插入图片描述

例如,查询σ学号 =2022003(Student)

在这里插入图片描述

3.2.3 投影

投影:从R中选择出若干属性列组成新的关系, πA( R ) = { t[A] | t ∈R }

在这里插入图片描述

πA:R中的属性列

投影操作主要是从列的角度进行运算:

投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

在这里插入图片描述

列如,求Student关系上学生姓名和所在系两个属性上的投影, πSname,Sdept(Student)

在这里插入图片描述

3.2.4 连接

一般连接运算

从两个关系的笛卡尔积中选取属性间满足一定条件的元组

在这里插入图片描述
R跟S连接就等于Tr和Ts连接的集合,Tr和Ts表示元组的连接,Tr来自关系R,Ts来自关系S,并且满足AθB的条件

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

θ:比较运算符

连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组

等值连接(equijoin)

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

在这里插入图片描述

自然连接(Natural join)

自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉

自然连接的含义:R和S具有相同的属性组B

在这里插入图片描述

一般的连接操作是从行的角度进行运算。

在这里插入图片描述

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算

例如关系R和关系S如下所示

在这里插入图片描述

在这里插入图片描述

3.2.5 除

给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:

在这里插入图片描述

除操作是同时从行和列角度进行运算

设关系R、S分别为下图的(a)和(b),R÷S的结果如右下图:

在这里插入图片描述

关系R中,A可以取四个值{a1,a2,a3,a4}

a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}

a2的象集为 {(b3,c7),(b2,c3)}

a3的象集为 {(b4,c6)}

a4的象集为 {(b6,c6)}

S在(B,C)上的投影为 {(b1,c2),(b2,c1),(b2,c3) }

只有a1的象集包含了S在(B,C)属性组上的投影,所以 R÷S ={a1}

猜你喜欢

转载自blog.csdn.net/liang921119/article/details/129580553