SQLsql的数学基石之关系代数与关系运算详解
Posted 每天都要努力的小颓废呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLsql的数学基石之关系代数与关系运算详解相关的知识,希望对你有一定的参考价值。
本专栏将从基础开始,循序渐进,讲解数据库的基本概念以及使用,希望大家都能够从中有所收获,也请大家多多支持。
专栏地址: 数据库必知必会
如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。
文章目录
关系数据库
首先介绍一下什么是关系数据库,关系数据库基于关系模型,是一个或多个关系组成的集合,而关系通俗来讲就是表(由行列构成),关系模型的主要优点是具有简单的数据表示而且能易于表示复杂的查询,到目前为止,SQL语言是最广泛使用的语言,可用于创建,操纵和查询关系数据库, 其基础是关系模型。
下图是关系的示例:
下面分别介绍一下联系,关系是什么
- 联系表示一些实体之间的关联,由实体集和联系集组成,表示相应实体在真实的世界的关系,如下图所示:
- 关系是一种数学概念,指的是表中的所有属性,例如ID,name,dep_name,salary等,关系表示的是机器的世界,如下图所示:
一般地,我们把集合用数学符号 D D D表示,数据表的每一列都对应于一个集合 D i D_i Di,如果一张表有n列,该表就有n个集合 D 1 , D 2 , . . . , D n , ( D i = a i j ∣ j = 1.... k ) D_1,D_2,...,D_n ,(D_i=a_ij|_j=1....k) D1,D2,...,Dn,(Di=aij∣j=1....k) ,其中 k k k表示该集合一共有k个元素,而关系 r r r就是 D 1 × D 2 × . . . × D n D_1\\times D_2\\times...\\times D_n D1×D2×...×Dn的子集,其中 × \\times ×表示的是笛卡尔积,因而关系就是一组n元组 ( a 1 j , a 2 j , . . . , a n j ) (a_1j,a_2j,...,a_nj) (a1j,a2j,...,anj)的集合,其中每个 a i j ∈ D i a_ij\\in D_i aij∈Di,这么说可能枯燥,下面举一个例子,假设一张表有如下几列:导师、专业、学生,对应结构如下:导师(张清玫教授,刘逸教程)、专业(计算机、信息)、学生(李勇,刘晨、王名),下图则是一个关系r:
笛卡尔积
接下来介绍一下笛卡尔积,直接上例子:
从上图可以看出笛卡尔积就是各个集合的排列组合。
属性类型
关系的每个属性都有一个名称,每个属性的取值集合称为属性的域,属性的值必须是原子的,即不可分割(1NF,第一范式),需要注意,空值null是每一个域的成员,空值给数据库访问和更新带来很多困难,因此应尽量避免使用空值。
那关系是什么?关系涉及两个概念:关系模式和关系实例,其中关系模式描述的是关系的结构,例如:
I n s t r u c t o r − s c h e m a = ( I D : s t r i n g , n a m e : s t r i n g , d e p t n a m e : s t r i n g , s a l a r y : i n t ) Instructor-schema=(ID:string,name:string,deptname:string,salary:int) Instructor−schema=(ID:string,name:string,deptname:string,salary:int)或 I n s t r u c t o r − s c h e m a = ( I D , n a m e , d e p t n a m e , s a l a r y ) Instructor-schema=(ID,name,deptname,salary) Instructor−schema=(ID,name,deptname,salary)
关系模式的数学描述如下:
- A 1 , A 2 , . . . , A n A_1,A_2,...,A_n A1,A2,...,An是属性
- 一般地:
R
=
(
A
1
,
A
2
,
.
.
.
,
A
n
)
R=(A_1,A_2,...,A_n)
R=(A1,A2,...,An)是一个关系模式
- 例: I n s t r u c t o r − s c h e m a = ( I D , n a m e , d e p t n a m e , s a l a r y ) Instructor-schema=(ID,name,dept_name,salary) Instructor−schema=(ID,name,deptname,salary)
关系实例则表示一个关系的特定实例,例如(‘0001’,‘张三’,‘计算机学院’,20000)。每一行数据被称为是一个元组,元组的顺序性是无关紧要的,但一个关系中不能有重复的元组
码、键的概念
码的概念
- 定义 K ⊆ R K \\sube R K⊆R
- 如果K值能够在一个关系中唯一地标志一个元组,则K是R的超码
- 例如 i n s t r u c t o r − I D , i n s t r u c t o r − n a m e \\instructor-ID,instructor-name\\ instructor−ID,instructor−name和 i n s t r u c t o r − I D \\instructor-ID\\ instructor−ID都是 i n s t r u c t o r \\instructor\\ instructor的超键,简单点说超键就是一个集合,通过该集合能唯一确定一个元组
- 如果K是最小超码,则K是候选码
- 例如 i n s t r u c t o r − I D \\instructor-ID\\ instructor−ID是 i n s t r u c t o r \\instructor\\ instructor的候选码。因为他是一个超码,并且它的任意子集都不能成为一个超码
- 如果k是一个候选码,并由用户明确定义,则K是一个
主键
。主键通常用下划线标记
外键的概念
首先以一个例子来说明什么是外键:
学生表中有专业号这一属性,通过专业号这一属性可以在专业表中查询到专业名称,这种在其他表中是主键的属性叫做外码(外键)。
关系代数基本运算
关系代数有六个基本的运算和一些附加运算,六个基本运算是:
附加运算是:
下面依次介绍这六个关系
选择运算
数据库的表的关系r如下图所示:
需求:选择元组,满足:A=B and D > 5
数学表达为: σ A = B a n d D > 5 ( r ) \\sigma_A=B and D \\gt5(r) σA=BandD>5(r)
对应的结果如下:
详细定义如下:
投影运算
数据库的表的关系r如下图所示:
需求:选择A、C
数学表达为: π A , C ( r ) \\pi_A,C(r) πA,C(r)
对应的结果如下:
详细定义如下:
投影运算
数据库的表的关系r如下图所示:
需求:选择A、C
数学表达为: π A , C ( r ) \\pi_A,C(r) πA,C(r)
对应的结果如下:
详细定义如下:
并运算
数据库的两张表的关系r、s如下图所示:
需求:将r与s合并
数学表达为: r ∪ s r\\cup s r∪s
对应的结果如下:
详细定义如下:
差运算
数据库的两张表的关系r、s如下图所示:
需求:将r与s做差
数学表达为: r − s r-s r−s
对应的结果如下:
详细定义如下:
广义笛卡尔积
数据库的两张表的关系r、s如下图所示:
需求
以上是关于SQLsql的数学基石之关系代数与关系运算详解的主要内容,如果未能解决你的问题,请参考以下文章