[数据库基础篇]——关系数据库

目录

一.关系数据结构

1.域

2.笛卡儿积

3.关系

4.关系模式

5.关系数据库

二.关系操作

三.关系的完整性约束

1.实体完整性

2.参照完整性

3.用户定义的完整性

四.关系代数

1.数据库的传统集合运算:并、差、交、笛卡尔积运算。

并:

差:

交:

笛卡儿积:

2.数据库的专门关系运算

选择(selection):

投影(projection):

除法(division):

连接(join):


 完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。关系模型中有三类完整性约束(关系模型的三要素):关系数据结构、关系操作、完整性约束

与数据模型三要素类似:数据结构、数据操作、完整性约束

一.关系数据结构

单一的数据结构——关系

数据的逻辑结构——二维表

关系模型建立在集合代数的基础上。

1.域

一组具有相同数据类型的集合,一列可以是一个域

2.笛卡儿积

可以用集合表示

也可以用二维表表示

不是所有的元组都是有意义的。

3.关系

在笛卡儿积中取出有实际意义的元组来构造关系。

关系也是一个二维表,表的每行对应一个元组,任意的两个元组不能完全相同;表的每列必须来自同一个域,不同的列也可以来自同一个域。

关系中不同列可以对应相同的域(比如两列都是字符串),为了加以区分,给每列取了一个名字,叫做属性

:唯一确定一个元组。一个关系必须有一个码。

候选码:在关系中能唯一标识元组的属性或属性集

主属性:候选码的各个属性

主码:用户选作元组标识的候选码

全码:关系的所有属性是这个关系的候选码

4.关系模式

关系模式是对关系的描述。关系模式是型,关系是值

关系模式通常可以记为R(U) 或 R(A1,A2,...,An)

R:关系名

A1,A2,...,An:属性名

比如,学生(学号,姓名,籍贯)

关系模式是对关系的描述,是静态的、稳定的;关系是在某一时刻的状态或内容,是动态的,随时间不断变化的。

5.关系数据库

关系数据库 ——采用关系模式的数据库。

二.关系操作

常用的关系操作:查询、插入、删除、修改

关系操作的方式:集合操作方式

关系数据语言的种类:关系代数语言、关系演算语言。具有上两者双重特点的语言,如SQL。

关系数据语言的特点:是一种高度非过程化的语言;能够嵌入高级语言中使用

三.关系的完整性约束

关系模型的完整性约束是指对关系的某种约束条件。关系模型中的三类完整性约束

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

其中,实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性

1.实体完整性

要求:

主码唯一且不能为空

主属性不能取空值

原因:

实体必须可区分。当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。

2.参照完整性

现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。参照完整性是描述实体之间的联系的,一般是指多个实体或关系之间的关联关系。

外码/外键(Foreign Key):

关系R中的一个属性组,他不是R的候选码,但它与另一个关系的候选码相对应,则称这个属性组为R的外码/外键

两个关系通常通过外码相互连接

例子如下:

                                                                                        来自CSDN博主Jaihk662的原创文章

  外码的取值必须为:

  • 或者为空值
  • 或者等于被参照表中某个元素的主码值

3.用户定义的完整性

四.关系代数

关系代数是一种抽象的数据查询语言,用对关系的运算来表达查询。

 传统的集合运算:

也就是二目运算,包括并、差、交、笛卡儿积4种运算。

专门的关系运算:

选择、投影、连接、除运算等。

1.数据库的传统集合运算:并、差、交、笛卡尔积运算。

这四种运算都与数学上的同名运算概念相似。

并:

差:

交:

笛卡儿积:

广义笛卡尔积(Extended Cartesian Product):两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)。

r,s为R和S中的相应分量。

简单来说,就是把R表的第一行与S表第一行组合写在一起,作为一行。然后把R表的第一行与S表第二行依此写在一起,作为新一行。以此类推。当S表的每一行都与R表的第一行组合过一次以后,换R表的第二行与S表第一行组合,以此类推,直到R表与S表的每一行都组合过一次,则运算完毕。如果R表有n行,S表有M行,那么笛卡尔积R×S有n×M行。

下面举一个例子:

关系表R和S如下图所示:

R并S、R减S、R交S、选择、R与S的笛卡尔积结果如下所示:

选择B>'4'(R),即选择语句的条件,对R的关系做水平分割,选择R中符合条件的元组。

2.数据库的专门关系运算

数据库的专门关系运算:选择(对关系进行水平分割)、投影(对关系进行垂直分割)、连接、自然连接(关系的结合)、除运算等。

选择(selection):

选择就是"筛选行"。选择一般要对一张表选择符合条件的行(但包含所有列)。

 

举例:

投影(projection):

投影就是"筛选列"。一个数据库表,如仅希望得到其一部分的列的内容(但全部行),就是投影。

举例:

除法(division):

记为R÷S,它是笛卡尔积的逆运算。设关系R和S分别有r列和s列(r>s,且s≠0),那么R÷S的结果有(r-s)个列,并且是满足下列条件的最大的表:其中每行与S中的每行组合成的新行都在R中。注意有时关系之间的除法也有"余数",可能S×T的结果为R的一部分(最大的一部分),R中的多余部分为"余数"。

举例:

运算过程:

 C, D是关系S中的两个属性, 故在R集合中对除了C, D的属性, 即A, B两属性进行投影, 得到a, b; b, c; e, d;这三组, 然后用这个结果与关系S进行笛卡尔积运算, 发现b c c d这组在关系R中没有, 其余a, b; e, d; 做的运算在R中存在. 因此最后结果为a, b; e, d。

连接(join):

两表笛卡尔积的结果比较庞大,实际应用中一般仅选取其中一部分的行,选取两表列之间满足一定条件的行,就是关系之间的连接。

根据连接条件的种类不同,关系之间的连接分为等值连接、大于连接、小于连接、自然连接

条件是类似于"B列=D列"的"某列=某列"的条件,就是等值连接

条件是"某列>某列"的,就是大于连接

条件是"某列<某列"的,就是小于连接

自然连接是不提出明确的连接条件,但"暗含"着一个条件,就是"列名相同的值也相同"。在自然连接的结果表中,往往还要合并相同列名的列。当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的属性。

举一个等值连接的例子:

关系R和S如下图所示:

对关系R、S按条件"R表的B列=S表的B列"进行连接的结果(等值连接):

小于连接的结果(B<D):

自然连接的结果(自然连接暗含的条件是R.B=S.B且R.C=S.C,因为R、S中有同名的2列B、C):

多个条件之间可用"∧"表示"且",即两边的条件必须同时成立。

如"C>4∧D>3",表示"C列值>4,且D列值>3",二者需同时满足。

"∨"表示"或",即两边的条件有一个成立即可。

例如"性别='女'∨年龄<20"表示"性别为'女'或者年龄在20岁以下"。
--------------------- 
来自:
CSDN博主一骑走红尘

 

  • 14
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

采代码的小蘑菇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值