数据库系统概论(2)——Chap. 2 关系数据库基础

数据库系统概论(2)——Chap.2 关系数据库基础

1、关系数据结构及形式化定义

一、关系

关系模型的数据结构只包含单一的数据结构——关系。在关系模型中,现实世界的实体及实体间的各类联系均用单一的结构类型,即关系来表示。git

(1)笛卡尔积

关系是创建在集合基础上的,先介绍笛卡尔积的概念:
【笛卡尔积(cartesian product)】给定一组域D1,D2,……,Dn,容许其中某些域是相同的,D1,D2,……,Dn的笛卡尔积为:github

D1 x D2 x…… x Dn = {(d1, d2, ……, dn)|di属于Di,i=1,2,……,n}

其中,每个元素(d1, d2, ……, dn)叫作一个n元组(n-tuple),或简称元组(tuple)。元素中的每个值di叫作一个份量(component)数据库

一个域容许的不一样取值个数称为这个域的基数(cardinal number)。
若Di(i=1,2,……,n)为有限集,其基数为mi(i=1,2,……,n),则D1 x D2 x…… x Dn的基数M为:数据结构

M = m1 x m2 x …… x mn
(2)关系

下面给出关系的定义:
【关系】:D1 x D2 x…… x Dn的子集叫作在域D1,D2,……,Dn上的关系,表示为:ide

R(D1,D2,……,Dn)

R为关系的名字,n是关系的目或度(degree)。n=1时,称为单元关系(unary relation)或一元关系;n=2时,称为二元关系(binary relation)。n目关系必有n个属性。
通常来讲,D1,D2,……,Dn的笛卡尔积是没有实际语义的,只有它的某个真子集才有实际含义。关系是笛卡尔积的有限子集。ui

【候选码(candidate key)】:若关系中的某一属性组能惟一地标识一个元组,而其子集不能,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码(primary key)(最小属性集)。
极端状况下,关系模式的全部属性是这个关系的候选码,称为全码(all-key)code

【主属性(prime attribute)和非主属性(non-prime attribute)】:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性(non-key attribute)。component

关系能够由三种类型:基本关系(或称基本表或基表)、查询表和视图表。orm

  • 基本表是实际存在的表,它是实际存储数据的逻辑表示;
  • 查询表是查询结果对应的表;
  • 视图表是由基本表导出的表,是虚表,不对应实际存储的数据。

基本关系具备如下6条性质:对象

  1. 列是同质的(homogeneous),即每一列中的份量是同一类型的数据,来自同一个域。
  2. 不一样的列可出自同一个域,称其中的每一列为一个属性,不一样的属性要给予不一样的属性名。
  3. 列的顺序无所谓。
  4. 任意两个元组的候选码不能取相同的值。
  5. 行的顺序无所谓。
  6. 份量必须取原子值,即每个份量都是不可分的数据项。

关系模型要求关系必须是规范化的,规范化的关系简称为范式(Normal Form,NF)

二、关系模式

关系数据库中,关系模式是型,关系是值。
【关系模式】是对关系的描述,关系模式必须指出这个元组集合的结构、元组语义及完整性约束条件、属性的域以及属性与域之间的映像关系。关系模式能够表示为:

R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

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

对于关系模型中的联系,一对一的联系能够表示在任意一方,一对多的联系常表示在多的一方。

2、关系操做

一、关系操做包括两部分:

  1. 查询(QUERY)操做:选择(select)、投影(project)、链接(join)、除(divide)、并(union)、交(intersection)、差(except)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操做。
  2. 更新(UPDATE):插入(insert)、删除(delete)、修改(update)。

关系操做是集合操做。(一次一集合(set-at-a-time))。非关系数据模型的数据操做方式是一次一记录(record-at-a-time)。

二、关系数据语言的分类

【关系代数(relational algebra)】:用对关系的运算来表达查询要求。
【关系演算(relational calculus)】:用谓词来表达查询要求。
一个关系数据语言可以表示关系代数能够表示的查询,称为具备完备的表达能力,简称关系的完备性

【结构化查询语言SQL】:介于关系代数和关系演算之间。是集查询、数据定义语言、数据操纵语言和数据控制语言(DCL)于一体的关系数据语言。SQL语言是一种高度非过程化的语言。

3、关系的完整性

一、实体完整性

基本关系R的主属性A不能取空值。所谓空值就是“不知道”或“不存在”或“无心义”的值。
说明:

  1. 实体完整性规则是正对基本关系而言的。
  2. 现实世界中的实体是可区分的,即他们具备某种惟一性的标识。
  3. 相应的,关系模型中以主码做为惟一标识。
  4. 主码中的属性即主属性不能取空值。

二、参照完整性

先给出外码的定义:
定义:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。若是F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R是参照关系(referencing relation),基本关系S是被参照关系(referenced relation)目标关系(target relation)
关系R和S不必定是不一样的关系。目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或同一组)域上。

下面是参照完整性的定义:
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则R中每一个元组在F上的取值:

  • 或者取空值(F的每一个属性值均为空值);
  • 或者等于S中某个元组的主码值。

三、用户定义完整性

用户定义完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须知足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不须要由应用程序来承担这一功能。


实体完整性和参照完整性是关系模型必须知足的完整性约束条件,被称做是关系的两个不变性,应该由关系系统自动支持。用户定义的完整性是应用领域须要遵循的条件,体现了具体应用领域中的语义约束。

4、关系代数

运算的三大要素:运算对象、运算符、运算结果。
关系代数的运算符包括两类:集合运算符和专门的关系运算符。
关系代数的运算按运算符的不一样可分为传统的集合运算和专门的关系运算两类。

关于关系代数运算这里放上一个连接,如下内容为转载,若有侵犯,请在下方评论联系。
请尊重原做者版权,转载注明出处。

【转载】关系代数的基本运算

相关文章
相关标签/搜索