数据库概论 (二)关系
关系
域的定义
一组拥有相同数据类型的集合。
{'男','女'}
本质上就是一组规范的集合。
域的操作
笛卡尔积
给定一组域D1,D2,…,Dn ,这些域中可以有相同的D1,D2,…,Dn的笛卡尔积为:
D_1×D_2×…×D_n ={(d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n}- 所有域的所有取值的一个组合
- 不能重复
相当于将做运算的两个域的所有元素进行全排列,并组合在一起形成一个新的域。
举例
R_1 \times R_2
关系的定义
D_1×D_2×…×D_n ={(d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n}上述式子的子集叫做在$D_1...D_n$上的关系,并表示为:
R(D_1,D_2,D_3...,D_n)关系中的每一列也就是一个域,为了区分不同的域,也就是给相同数据类型的数据添加不同的语意,就给每一个域起一个名字,称之为属性。n目关系必定有n个属性。
关系中的每一行称之为一个元组,也就是一条记录。
码
- 候选码:关系中的某一属性组中可以唯一标识一个元组,则称之为候选码,候选码可以由多个属性组成,例如书号和书名唯一确定了一本书,那就说书号和书名是书的候选码。不过在一些简单的情况下,候选码只由一个属性组成。
- 全码:关系中所有的属性组合在一起才能唯一标识某一元组,称这种情况为全码。
- 主码:当一个关系有多个候选码时,就选择其中的一个作为这个关系的主码。
- 主属性:包含在候选码中的属性称之为主属性,并不是只有在主码中的属性才是主属性!!!
- 非主属性:不包含在任何候选码中的属性称之为非主属性。
关系模式
关系模式可以形式化地表示为: R(U,D,DOM,F)
- R:关系名
- U:组成该关系的属性名集合
- D:属性组U中属性所来自的域 Domain
- DOM:属性向域的映象集合 Domain Orient Map
- F:属性间的数据依赖关系集合 Function
也可以简单的记作:
R(A_1,A_2,A_3...,A_n)其中的$A_n$为属性名。
关系代数
关系操作有两部分
- 查询操作 Query
- 修改操作:插入 Insert ,删除 Delete , 修改 Update
查询操作是关系操作中最重要的部分,包括:选择 select,投影 project,连接 join,除 divide,并 union,差 except,交 intersection,笛卡尔积等。
其中的五个基本操作为:
- 选择
- 投影
- 并
- 差
- 笛卡尔积
其中的$\sigma$代表选择一个关系中的某一行 ,而$\pi$代表选择某几列 。
$\theta$连接
也就是在两个关系的笛卡尔积上进行选择运算。
先做笛卡尔积,再找出满足条件的笛卡尔积结果,通常在两个关系之间有可以比较的属性。
自然连接
两个不同的关系模式中有相同类型的属性组,将两个关系模式中相同的属性组按照相同的值连接起来,然后去掉重复的值,得到的结果就是自然连接的结果。
自然连接是一种特殊的等值连接,也需要做笛卡尔积,是特殊的$\theta$连接。
等值连接和自然连接的区别
在自然连接中把相同的属性合并成了一个属性列。
左连接,右连接以及外连接
左连接
先做笛卡尔积,取出其中满足
on子句的部分,然后再加上第一个关系中的剩余记录。由左上角第一个维恩图可知。
右连接
先做笛卡尔积,取出其中满足
on子句的部分,然后加上第二个关系中的剩余记录,如上图第一行第二个维恩图可知。
外连接
类似于全连接,不过是先将满足条件字句的部分取出来,再合并两个关系模式中的剩余部分。
运算
象集的定义 Image Set
给定一个关系R(X, Z),X 和Z为属性组,当t[ X ]= x 时 x 在R中的象集(Images Set)为:
Z_x =\{t[Z]|t\in R \and t[X] = x\}象集 Z_x 表示R中属性组X上值为x 的诸元组在Z上分量的集合
除运算
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。 R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集$Y_x$包含S在Y上投影的集合。
相当于除了之后只剩下X一个属性列,而保留的条件是X的象集在S对应的属性组中。
举例
解释
也就是说被除的关系的分量的象集必须包含S在对应属性组上的投影的集合!
关系的完整性
实体完整性
关系数据库中的每一个元组都是独一无二的,也就是说是可以区分的,唯一的。这样的约束条件用实体约束完整性来保证。
规则:若属性(一个或者是一组属性)A是基本关系R 的主属性,则A不能为空值NULL。
参照完整性
设F是基本关系R的一个或者一组属性,但不是关系R的码,$K_s$是基本关系S的主码,如果F与$K_s$对应,则称F为R的外码,并将基本关系R称为参照关系,基本关系S为被参照关系。
用户定义的完整性
不同数据库系统根据其应用环境的不同往往还需要一些特殊的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
- 数据库系统概论复习总结3 --- 第二章关系数据库标准语言SQL
- 数据库系统概论学习笔记---关系的俩个完整性
- 数据库系统概论-006: 关系数据理论
- 【数据库系统概论】-关系查询处理和查询优化
- 【数据库系统概论】-关系数据库标准语言SQL(3)
- 【数据库系统概论】-关系数据理论
- 【数据库系统概论】-关系数据库标准语言SQL(4)
- 数据库系统概论复习总结2 --- 第二章关系数据库
- 数据库系统概论学习笔记----讲3.关系代数
- 【数据库系统概论】-关系数据库标准语言SQL(1)
- 【数据库系统概论】-关系数据库标准语言SQL(2)
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- 数据库复习(一)——数据库概论
- 数据库概论 (六)查询及优化
- 深入讲解数据库中User和Schema的关系
- [转载]总结:数据库设计多对多关系的几种形态(7种)
- 数据库--ER模型、函数依赖、无损分解、关系代数
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象
- SQL2005 无法安装数据库关系图支持对象之解决办法