1.关系模型的基本概念
用二维表格(关系)作为数据结构的数据模型,称为关系模型,其中实体及实体之间的联系均用关系表示。
1.关系模型的三大要素
1)关系模型的结构 —关系
2)关系模型的操作—关系运算
3)关系模型的 完整性约束—三类完整性约束
2.关系的数学定义:
- 域的定义:域是一组具有相同数据类型的值的集合。
- 笛卡儿积的定义:给定一组域D1,D2,…,Dn,(可以有相同的部分),它们的笛卡儿积为:
D 1 × D 2 × … × D n D1×D2×…×Dn D1×D2×…×Dn= ( d 1 , d 2 , … , d n ) | d i ∈ D i , i = 1 , 2 , … , n { ( d_1, d_2, …, d_n)|d_i ∈D_i, i=1, 2, …, n } (d1,d2,…,dn)|di∈Di,i=1,2,…,n
其中:每一个元素(d1,d2,…,dn )称为一个n元组,简称元组。元素中的每一个值di称作一个分量。
- **关系(Relation)**的定义:D1 ×D2 ×…×Dn的子集称作在域D1,D2,…,Dn上的关系,表示为:
R(D1,D2,…,Dn)这里:R表示关系的名字,n是关系的目或度。
2.关系的数学定义
关系中的基本术语
1.元组(tuple):关系表中的每一横行称作一个元组,组成元组的元素为分量。
2.属性(Attribute ):关系中的每一列称为一个属性。
3.关系模式(Schema):对关系的描述(哪些列)称为关系模式。
4.关系实例(instance):在一个时刻关系的状态(由包含的元组确定)。
5.候选码: 若能够唯一标识元组的属性或极小属性组。
6. 主码/主键(Primary Key):从候选码中选定的一个候选码称为主码;
7. 全码:包含关系全部属性的码,称为全码。全码的关系必是3NF,也必是BCNF。
8. 主属性和非主属性:关系中,凡是包含在候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。
9.外码/外键(Foreign Key):如果关系R中的一个属性(组),是另一个关系S的主码,则称这个属性组为R的外码。
各种键的比较:
1、书中的定义
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!
主键(primary key): 用户选作元组标识的一个候选键程序主键
外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。
2、咱们创建简单的两个表,说明一下各个键!
学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)
超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!
候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!
主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!
外键:宿舍号就是学生信息表的外键
关系模式
关系模式是对关系的描述(有哪些属性,各个属性之间的依赖关系如何),模式的一个具体值称为模式的一个实例。模式反应是数据的结构及其联系,是型,是相对稳定的,实例反应的是关系某一时刻的状态,是值,是相对变动的。
想要查看t_student的关系模式?
DESC t_student
想要查看t_student的关系实例?
SELECT * FROM student
另外,关系模式有约定的数学表示,
R
(
U
,
D
,
D
O
M
,
F
)
R(U,D,DOM,F)
R(U,D,DOM,F),R指关系名,U指一组属性,D指域,DOM指属性到域的映射,F就是指数据依赖。举个栗子,假设一个学生表t_student,拥有属性学号,姓名,性别,学院,其数学表示如图。
关系模型的3类完整性规则
1.实体完整性规则(Entity integrity rule)
实体完整性要求组成关系主键的属性值不能为空值
空值:不知道或无意义
意义:元组对应现实世界中的实体,实体是相互可区分的,通过主键来唯一标识,若主键为空,则出现不可标识的实体,这是不允许的。如每个学生的学号不能为空。
2.参照完整性规则(Reference integrity rule)
如果属性集K是关系模式R1的主键,也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能: 或者为空值,或者等于R1关系中某个主键值。
这条规则的实质是“不允许引用不存在的实体”。
关系模式R1的关系称为“参照关系”,关系模式R2的关系称为“依赖关系”。
例 ① 在关系数据库中有下列两个关系模式:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,SCORE)
如果关系SC中有一个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我们就认为在关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。
另外,在关系SC中**S#**不仅是外键,也是主键的一部分,因此这里S# 值不允许空。
3. 用户定义的完整性规则
用户定义的完整性是针对具体数据库应用领域的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。如SEX要求取值为“M”或“F”,年龄定为一定范围的整数。
与其它数据模型相比,关系模型突出的优点如下:
(1)关系模型提供单一的数据结构形式,具有高度的简明性和精确性。
(2)关系模型的逻辑结构和相应的操作完全独立于数据存储方式,具有高度的数据独立性。
(3)关系模型使数据库的研究建立在比较坚实的数学基础上。
2.关系代数
关系数据库系统使用**数据操纵语言(DML)**来对数据库的数据进行操纵,其中的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求,包括检索、分组、统计、排序等;更新语句用于描述用户进行插入、删除、修改等操作。
关系代数是以关系为运算对象的代数系统,其运算是一组高级运算集合。
这些运算根据它们之间的关系又可分为基本运算和组合运算两大类:
(1)5个基本运算
1)一元运算:选择、投影
2)多元运算:乘积(笛卡尔积)、并、集合差
(2) 4个导出运算(组合运算)
集合交、连接、自然连接、除法
(3)扩充运算
外连接、外部并、半连接、聚集运算
基本关系操作
并、差、笛卡儿积、投影和选择,它们组成了关系代数完备的运算集合。
基本运算示例图
条件表达式(选择等操作可能需要用到)
选择(Selection)运算
将R表中A<5的所有项选择出来
投影(Projection)运算:
将R表中的B,C投影出来:
选择和投影复合操作:
组合关系操作
交、连接、自然连接与除法,它们都可以由基本运算表示。
连接(join):
自然连接
除运算:
示例1:
除法示例2:
扩充操作
外连接(Outer Join)
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
左外连接(LEFT OUTER J0IN或LEFT J0IN)
只保留左边关系R中的悬浮元组
右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
只保留右边关系S中的悬浮元组
外部并
如果求并运算的两关系模式不同,将两关系扩充-增加所缺的属性(属性值取空),然后求并,便得到外部并。
半连接
R和S 的半连接 定义为R和S的自然连接在R上的投影(只显示R的匹配上的部分)
聚集操作
聚集操作是指对某列的一组值,进行聚集运算,结果为一个单一的值。
聚集函数有
m
a
x
、
m
i
n
、
a
v
g
、
s
u
m
max、min、avg、sum
max、min、avg、sum和
c
o
u
n
t
count
count等。
在S(S#,SNAME,AGE,SEX)中,求男同学的平均年龄:
A
V
G
a
g
e
(
σ
s
e
x
=
‘
M
’
(
S
)
)
AVG_{age}(σ_{sex=‘M’}(S))
AVGage(σsex=‘M’(S))
求年龄为18岁的人数:
c
o
u
n
t
S
#
(
σ
a
g
e
=
‘
18
’
(
S
)
)
count_{S\#}(σ_{age=‘18’}(S))
countS#(σage=‘18’(S))
3.关系演算
将数理逻辑的谓词演算引入到关系运算中,即得到以关系演算为基础的关系运算。
关系演算根据谓词公式中的变元不同,分为:
1.元组关系演算
2.域关系演算