数据库___数据库系统概论

简介:
提出关系模型的是美国IBM公司的E.F.Codd
1970年提出关系数据模型

之后,提出了关系代数和关系演算的概念
1972年提出了关系的第一、第二、第三范式
1974年提出了关系的BC范式

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

关系

单一的数据结构----关系
现实世界的实体以及实体间的各种联系均用关系来表示

逻辑结构----二维表
从用户角度,关系模型中数据的逻辑结构是一张二维表

建立在集合代数的基础上

  1. 域(Domain)
    域是一组具有相同数据类型的值的集合。

  2. 笛卡尔积(Cartesian Product)
    给定一组域D1,D2,…,Dn,允许其中某些域是相同的。
    D1,D2,…,Dn的笛卡尔积为:
    D1×D2×…×Dn ={(d1,d2,…,dn)|diDi,i=1,2,…,n}
    所有域的不重复的所有取值的组合

  3. 关系(Relation)
    D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系。
    表示为R(D1,D2,…,Dn) R:关系名 n:关系的目或度

笛卡尔积

元组(Tuple)
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
例如:
(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨) 等 都是元组。

分量(Component)
笛卡尔积元素(d1,d2,…,dn)中的每一个值di 叫作一个分量
例如:
张清玫、计算机专业、李勇、刘晨等都是分量。

基数(Cardinal number)
若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
image

笛卡尔积的表示方法
笛卡尔积可表示为一张二维表
表中的每行对应一个元组,表中的每列对应一个域

例如:
例如,给出3个域:
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D1,D2,D3的笛卡尔积为
D1×D2×D3={
(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
基数为2×2×3=12
也可以表示为:
image

关系

因为笛卡尔积没有实际意义,笛卡尔积的某个子集才有实际含义。

所以引进关系:
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系。
表示为R(D1,D2,…,Dn)。
元组
关系中的每个元素是关系中的元组,通常用t表示。

单元关系与二元关系
当n=1时,称该关系为单元关系 或一元关系
当n=2时,称该关系为二元关系

关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。

属性
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)
因此n目关系就有n个属性

码

  1. 候选码
    若关系中的某一属性组(也可能只是一个属性)的值能唯一地标识一个元组,则称该属性组为候选码

  2. 全码
    最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)

  3. 主码
    若一个关系有多个候选码,则选定其中一个为主码(Primary key)

主属性
候选码的诸属性称为主属性(Prime attribute)

非主属性或非码属性
不包含在任何侯选码中的属性

三类常见关系

  1. 基本关系(基本表或基表)
    实际存在的表,是实际存储数据的逻辑表示
    基本关系的性质
    1.列是同质的
    2.不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名
    3.行and列的顺序都无所谓,次序可以任意交换
    4.分量必须取原子值(属性不可再分)

  2. 查询表
    查询结果对应的表

  3. 视图表
    由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

关系模式

关系模式是对关系的描述,关系模式是型,关系是值。

内容:

  1. 元组集合的结构
    属性构成
    属性来自的域
    属性与域之间的映象关系

  2. 完整性约束条件

关系模式可以形式化地表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D U中属性所来自的域
DOM 属性向域的映象集合
F 属性间数据的依赖关系的集合

关系模式通常可以简记为
R (U) 或 R (A1,A2,…,An)
R: 关系名
A1,A2,…,An : 属性名
注:域名及属性向域的映象常常直接说明为 属性的类型、长度

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

关系模式和关系往往笼统称为关系,通过上下文加以区别。

关系数据库

在一个给定的应用领域中,所有关系的集合构成一个关系数据库

关系数据库的型与值
关系数据库的型: 关系数据库模式,是对关系数据库的描述
关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库

关系模型的存储结构

关系数据库的物理组织
有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理

关系操作

常用的关系操作

  1. 查询操作:选择、投影、连接、除、并、差、交、笛卡尔积
    选择、投影、并、差、笛卡尔基是5种基本操作

  2. 数据更新:插入、删除、修改

关系操作的特点
集合操作方式:操作的对象和结果都是集合,一次一集合的方式

关系数据库语言的分类

  • 关系代数语言
    用对关系的运算来表达查询要求
    代表:ISBL

  • 关系演算语言:用谓词来表达查询要求

    • 元组关系演算语言
      谓词变元的基本对象是元组变量,代表:APLHA, QUEL
    • 域关系演算语言
      谓词变元的基本对象是域变量,代表:QBE
  • 具有关系代数和关系演算双重特点的语言
    代表:SQL(Structured Query Language)

关系的完整性

实体完整性和参照完整性
关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持

用户定义的完整性
应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

实体完整性
实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值

说明

  1. 实体完整性规则是针对基本关系而言的。
    一个基本表通常对应现实世界的一个实体集。
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。在关系模型中以主码作为唯一性标识。
  3. 主码中的属性即主属性不能取空值。
    主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性

参照完整性

  1. 关系间的引用
    在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。

  2. 外码
    设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
    基本关系R称为参照关系
    基本关系S称为被参照关系或目标关系
    注意:
    关系R和S不一定是不同的关系
    目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
    外码并不一定要与相应的主码同名(但是为了辨识常常同名)

  3. 参照完整性规则
    若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),
    则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。
    也就是说:将参照关系映射成集合后,参照关系的参照属性组必须是被参照关系的子集

用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求

关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
关系代数运算对象是关系,运算结果亦为关系。

关系代数运算符
关系代数的运算符有两类:集合运算符和专门的关系运算符
image
传统的集合运算是从关系的“水平”方向即行的角度进行
专门的关系运算不仅涉及行而且涉及列

集合运算符
并,差,交运算的要求:
R和S

  1. 具有相同的目n(即两个关系都有n个属性)
  2. 相应的属性取自同一个域

笛卡尔积没有要求

先引入几个记号:
R: 设关系模式为R(A1,A2,…,An),它的一个关系设为R
t∈R: 表示t是R的一个元组
t[Ai]: 则表示元组t中相应于属性Ai的一个分量

A:若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。
t[A]: t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。
Ā:表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。

元组的连接:
image
象集\(Z_x\):直接例子吧
image

专门的关系运算符

选择

又称为限制
选择运算符的含义 在关系R中选择满足给定条件的诸元组。
\(σ_F(R) = \{ t|t∈ R∧F(t)= '真'\}\)

F: 选择条件,是一个逻辑表达式,取值为“真”或“假”
基本形式为:\(X_1θY_1\)
θ 表示比较运算符,它可以是>,≥,<,≤,=或<>

例子:
查询信息系(IS系)全体学生。
\(σ_{Sdept='IS'}{(Student)}\)
结果:
image

选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
image

投影

R中选择出若干属性列组成新的关系
\(π_A(R) = { t[A] | t ∈R }\)
A:R中的属性列

投影主要是从列的角度进行运算,但是结果可能取消某些元组(避免重复行)
image

连接

连接也称为θ连接:${R}\Join {S} $

连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
image

两类常用连接运算

  1. 等值连接(equijoin)
    θ为“=”的连接运算称为等值连接,
    即 \(R \underset{A=B}\Join S\)
    从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。

  2. 自然连接
    是一种特殊的等值连接
    两个关系中进行比较的分量必须是相同的属性组
    在结果中把重复的属性列去掉。

注意:

  • 一般的连接操作是从行的角度进行运算。
  • 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算

悬浮元组
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。

外连接
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接。

左外连接
只保留左边关系R中的悬浮元组。

右外连接
只保留右边关系S中的悬浮元组。

除

R÷S
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
\(R÷S=\{{t_r[X]| t_r ∈R∧ π_Y (S) ⊆ Y_x}\}\)

\(Y_x\):x在R中的象集,x = tr[X]

R与S的除运算得到一个新的关系P(X)
P中的元素是R(Y)

除操作是同时从行和列角度进行运算
image

posted @ 2022-06-18 11:53  kingwzun  阅读(361)  评论(0)    收藏  举报