关系数据库
关系数据库是支持关系模型的数据库系统。
关系模型的数据结构:关系;逻辑结构:扁平的二维表
域
是一组具有相同数据类型的值的集合。
例如:{a,b,c}、{0,1,2,3}等等
笛卡尔积
定义
笛卡尔积是域上的一种集合运算。
计算公式
给定一组域为:D1,D2,D3,…,Dn 【允许有重复的域】
笛卡尔积的计算公式为:
D 1 × D 2 × D 3 × … × D n = { ( d 1 , d 2 , d 3 , … , d n ) ∣ d i ∈ D i , i = 1 , 2 , … , n } D1×D2×D3×…×Dn = {\{(d1,d2,d3,…,dn) | di ∈Di, i = 1,2,…,n\}} D1×D2×D3×…×Dn={(d1,d2,d3,…,dn)∣di∈Di,i=1,2,…,n}
名词解释:
-
(d1,d2,d3,…,dn)叫做一个n元组(简称元组)
-
di叫做分量。
基数
一个域允许的不同取值个数称为这个域的基数。
对于一个有限集Di,基数为mi,那么笛卡尔积D1×D2×D3×…×Dn的基数M就是:
M = Π n i = 1 m i \Pi{n \atop i=1}m_i Πi=1nmi
例1
关系
定义
D1×D2×…×Dn的有限子集叫做在域D1、D2、…,Dn上的关系,表示为R(D1,D2,D3,…,Dn)
R表示关系的名字,n是关系的目或者度
关系是一张二维表,表中每行对应一个元组,表中每列对应一个域。
由于域可以相同,所以每列要有一个名字,这个名字称为属性。
n目关系必有n个属性
名词解释:
- 关系中的每个元素是关系中的元组,通常用t表示
- n = 1时,关系为单元关系
- n = 2时,关系为二元关系
- 候选码:关系中某一属性组的值能够唯一的标识一个元组,而其子集不能,则该属性组称为候选码。
- 主码:一个关系有多个候选码,要选中其中一个为主码
- 主属性:候选码的诸属性称为主属性
- 非主属性:不包含在任何候选码中的属性称为非主属性(或者非码属性)
- 全码:关系模式的所有属性是这个关系模式的候选码,这个候选码称为全码
关系的三种类型
-
基本关系(基本表/基表)
是实际存在的表,是实际存储数据的逻辑展示
-
查询表
是查询结果对应的表
-
视图表
是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
基本关系的性质
- 列是同质的(每一列中的分量是同一类型的数据,来自同一个域)
- 不同的列可以出自同一个域,称其中每一列为一个属性。不同的属性要给予不同的属性名
- 例如例1,我们也可以分为两个域,
person{张清玫、刘逸、李勇、刘晨、王敏}
和specialty{计算机专业、信息专业}
。person这个域又分为两种属性,研究生和导师
。
- 例如例1,我们也可以分为两个域,
- 列的顺序是无所谓的,即列的顺序可以随意交换
- 行的顺序是无所谓的,即行的顺序可以随意交换
- 任意两个元组的候选码不能去同样的值
- ⭐分量必须取原子值,即每一个分量都是一个不可分的数据项
这种规范化的关系,简称为范式。
关系模式
关系的描述称为关系模式。
R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)
- R:关系名
- U:组成该关系的属性名集合
- D:U中所有属性来自的域
- DOM:属性像域的映像集合
- F:属性间数据的依赖关系集合
通常也可以简写为 R ( U ) R(U) R(U)
关系操作
基本关系操作
包括:查询和插入修改删除这两类。
查询操作
- SELECT 选择
- PROJECT 投影
- JOIN 连接
- DIVIDE 除
- UNION 并
- EXCEPT 差
- INTERSECTION 交
- 笛卡尔积
关系语言
SQL语言是高度的非过程化的语言。也就是说,如果要查询某个指标,关系数据库会为其选择最优的查询路径,用以提高查询效率
完整性
实体完整性
规则:
若属性(一个或一组)A是基本关系R的主属性,则A不能取空值。
参照完整性
外码概念
设F是基本关系R的一个或者一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码。并称基本关系R为参照关系,S为被参照关系(目标关系)。
规则
若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每一个元组在F上的值为:
- 空值(F中每个属性值均为空值)
- S中某个元组的主码值
用户定义完整性
某一具体应用所涉及的数据必须满足语义要求
关系代数
运算符 | 含义 |
---|---|
集合运算符 | |
∩ | 交集 |
∪ | 并集 |
- | 差集 |
× | 笛卡尔积 |
关系运算符 | |
σ | 选择 |
Π | 投影 |
∞ | 连接 |
÷ | 除 |
集合运算符
下面以 集合R和集合S为例
并 ∪
R ∪ S = { t ∣ t ∈ R ∪ t ∈ S } R∪S=\{t|t∈R∪t∈S\} R∪S={ t∣t∈R∪t∈S}
差 -
R − S = { t ∣ t ∈ R ∩ t ∉ S } R - S = \{t|t∈R∩t∉S\} R−S={ t∣t∈R∩t∈/S}
交 ∩
R ∩ S = { t ∣ t ∈ R ∩ t ∈ S } R∩S=\{t|t∈R∩t∈S\} R∩S={ t∣t∈R∩t∈S}
笛卡尔积
R × S = { t r t s ∣ t r ∈ R ∩ t s ∈ S } R×S = \{t_rt_s|t_r∈R∩t_s∈S\} R×S={ trts∣tr∈R∩ts∈S}