关系数据库

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18

一、关系数据库概述

关系数据库的基本特征是使用关系数据模型组织数据。(用二维表结构表示实体及实体间联系的模型)

常见的关系型数据库 Oracle 、 Sybase 、Informix 、 IBM DB2 、 MS SQL Server 、 FoxPro 、Access 、 MySQL

二、关系数据模型

关系模型的数据结构非常简单,只包含单一的数据结构,即关系。在关系模型中,现实世界的实体以及实体间的各种联系,均是使用关系来表示。在用户看来,关系模型是把数据库表示为关系的集合,且关系数据库是以 二维表格 的形式组织数据。

1.关系数据结构

1.1、表

表也称关系,是一个二维的数据结构,由 表名、构成表的各个列及若干行数据组成。每个表有唯一的表名 ,表中的每一行数据描述一条具体的记录值。

1.2、关系

一个关系逻辑上对应一张 二维表 。关系有三种类型:

  • 基本关系:又称 基本表 或基表,是实际存在的表,是实际存储数据的逻辑表示;
  • 查询表:查询结果对应的表
  • 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

1.3、列

列 (Column),也称为 字段 或 属性。表中的每一列有一个名称,称为列名、字段名或属性名。每一列表示实体的一个属性,具有相同的数据类型。

1.4、属性

属性(Attribute):表中的一列 为一个属性,给每个属性起一个名称即属性名。

  • 元或度:表中属性的个数。(例如:8元关系,表示有八列)
  • 属性值:列的值。
  • 值域:属性值的取值范围。

1.5、行

行(Row):表中的行,也称作 元组 或 记录。表中的数据是按行存储。

  • 元组(Tuple):表中的一行即为一个元组。
  • 分量(Component):元组中的一个属性值

1.6、码或键

码或键(Key):如果在一个关系中,存在这样的属性(或属性组 ),使得在该关系的任何一个关系状态中的两个元组,在该属性或属性组上值的组合都不相同,即这些属性或属性组的值都能用来唯一标识该关系的元组。

1.7、超码或超键

超码或超键(Super Key):如果在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。

例:在个人信息(身份证号,姓名,性别)中,(身份证号,姓名)(身份证号、性别)也是超码,(身份证号,姓名,性别)是最大的超码。

1.8、候选码或候选键

候选码或候选键(Candidate):如果在关系的一个码或键中,不能从中移去任何一个属性,否则它就不是这个关系的码或键,则称这样的码或键为该关系的候选码或候选键。

例:在学生信息(学号,身份证号,姓名,性别)中,(学号)(身份证号)都是候选码;因为给定学号和身份证号都能确定一个学生的基本信息。

1.9、主码或主键

主码或主键(Primary Key):在一个关系的若干候选码或候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码或候选键为主码或主键。

1.10、全码或全键

全码或全键(All Key):一个关系模式的所有属性集合是这个关系的主码或主键,则称这样的主码或主键为全码或全键 。

例:在学生选课信息(学号,课号)中,(学号,课号)就是全码。 所以有全码一定是最大的超码,但最大的超码不一定是全码;

1.11、主属性和 非主属性

主属性(Primary Attribute) 和 非主属性(Nonprimary Attribute):关系中包含在任何一个候选码中的属性称为主属性或码属性;包含在任何一个候选码中的属性称为非主属性或非码属性。

1.12、外码或外键

外码或外键(Foreign Key):当关系中的某个属性 或属性组 不是这个关系的主码或候选码,而是另一个关系的主码时,称该属性 或属性组 为这个关系的外码或外键。

1.13、参照关系和被参照关系

参照关系(Referencing) 或被参照关系(Referenced Relation):参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系;

  • 参照关系:外码所在的关系(它是哪个表的外码,该表就是参照关系)。
  • 被参照关系:以外码作为主码的关系
  • 被参照关系与参照关系是通过外码相联系的,这种联系通常是 一对多 的联系。

1.14、域

域(Domain):表示属性的 取值范围 。

1.15、数据类型

数据类型(Data Type) :表中每列都有相应的数据类型,用于限制该列中存储的数据。

1.16、关系模式

关系模式(Relation Schema):在关系数据库中,关系模式是型(表头),关系是值。关系是元组的集合(表的内容),是关系模式在某一时刻的状态或内容。

关系模式是静态 的、稳定的,关系是动态的,随时间不断变化的。即表头是固定的,表的内容是可以变化的。

1.17、关系数据库

关系数据库(Relation Database)是以关系模型作为数据的逻辑模型,并采用 关系 作为数据组织方式的一类数据库,其数据库操作建立在 关系代数 的基础上。

关系数据库对关系的限定要求:

  • 每一个属性都是 不可分解 的;(表头不能有子级 地址一列不能分为省、市、区三列)
  • 每一个关系 仅仅有 一种关系模式;(只有一种表头)
  • 每一个关系模式中的属性必须命名,同一个关系模式中,属性名 必须是不同的;(列名不能重复)
  • 同一个关系中不允许出现候选码或候选键值完全相同的元组;(候选码/候选键需要满足能够唯一标识一条数据的要求)
  • 在关系中 元组的顺序 (即行序)是无关紧要的,可以任意交换;
  • 在关系中 属性的顺序 (即列序)是无关紧要的,可以任意交换。

2.关系操作集合

2.1、基本的关系操作

基本的关系操作:查询和插入、删除、修改 操作。

查询操作有选择、投影、连接、除、并、差、交、笛卡尔积等,选择、投影、并、差、笛卡尔积是5种基本操作。

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

2.2、关系数据语言的分类

关系操作是通过关系语言来实现的。关系语言的特点是高度非过程化

关系操作的两种方式:

  • 代数方式 :主要有关系代数,是通过对关系的操作来表达查询要求的方式。
  • 逻辑方式 :主要有关系演算,是用谓词来表达查询要求的方式。

关系数据语言的分类:

  • 关系代数 语言;
  • 关系演算 语言;
  • 兼具两者双重特点的语言,比如SQL(Structured Query Language, 结构化查询语言);

2.3、关系代数

操作三大要素操作对象、操作符、操作结果。在关系代数操作中,操作对象和操作结果均为关系 。

关系代数直接应用关系的运算来表达操作目的,而代数用到的运算符包括 集合运算符 和 专门的关系运算符。其中比较操作符和逻辑操作符是用来辅助专门的关系运算符进行操作的。

关系代数操作表达式:关系代数操作经过有限次复合的式子,简称 关系代数表达式

  • 集合运算符

集合运算符: 并、差-、交、笛卡尔积x。是二目运算,从行的角度来进行。其中并、交、差要求两个运算对象其属性结构完全相同;

如下有,R、S两表:

A B C
123
298
367
A B C
598
208
123

则R ∪ S 为:(垂直合并,去掉重复元组)

A B C
123
298
367
598
208

则R - S 为:(R有S没有)

A B C
298
367

则R ∩ S 为:(R有且S也有)

A B C
123

笛卡尔积(R x S),如R有m个元组,S有n个元组,则 R x S 的元组数量为 mn 个;

A B C
123
298
367
C D
59
20

R x S 的结果为:

A B R.C S.C D
12359
12320
29859
29820
36759
36720
  • 专门的关系运算符:选择σ、投影π、连接、除÷

以这两表R、S为例:

A B C
123
298
367
C D
67
23

选择:从指定关系中选取满足给定条件的若干元组组成一个新关系,其形式为: σF(R),例:σ性别=‘男’(学生表),注意属性值要加引号。

则 σA=2(R)的结果为(在R表中选择第一列为A为2的元组):

A B C
298

投影:从指定的关系中选取指定的若干属性值组成一个新关系,其形式为:πF(R), π 学号,性别(学生表)。注意经过投影运算所形成的新关系中不含重复元组,其属性按语句中给出的顺序排列。

则 πA,B(R)的结果为(在R表中投影出A,B两列):

A B
12
29
36

连接:选取两个指定关系中的属性满足给定条件的元组连接在一起来组成一个新关系;

其中 R和 S 代表两个不同的关系,i 和 j 分别代表R的第i列 和 S的第j列属性;θ 代表比较运算符。

自然连接(R ⋈ S),一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组 ,并且要在结果中把重复的属性去掉。如果没有相同的属性组,自然连接就变成为笛卡尔积。

A B C
246
357
746
547
B C D
573
462
579
563

自然连接的结果为:(要找相同属性组且分量值一致的元组组合起来,然后删掉相同属性的列)

A B C D
2462
3573
3579
7462

:在除运算中,若被除关系为 m 元关系,除关系为 n 元关系,则运算结果为一个 m - n 元关系。

R ÷ S,把S 看作一个块,拿到 R 中去和相同属性集中的元组作比较,如果有相同的块,且除去此块后留下的相应元组均相同,那么可以得到一条元组,所有这些元组的集合就是除法的结果。

  • 比较操作符:

  • 逻辑操作符:非¬、与、或

3.关系的完整性约束

关系的完整性约束分为:

  • 实体完整性约束:关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值 NULL 。

  • 参照完整性约束:若属性(或属性组)F是基本关系R的外码 ,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值只允许两种可能,要么取空值 ,要么等于S中某个元组的主码值。

  • 用户定义完整性约束:是针对某一应用环境的完整性约束条件,它反映了某一具体应用 所涉及的数据应满足的要求 。关系模型提供定义和检验这类完整性规则的机制,其目的是用统一的方式由系统来处理它们,不再由应用程序来完成这项工作。

3.1、关系模型完整性约束的检验

  • 执行插入操作时

    • 先检查实体(插入的元祖的主属性是否为控制)
    • 再参照,插入的元祖的外码是否是另一关系表中固定主码或者是空值
    • 最后用户定义
  • 执行删除操作

    • 拒绝删除:如果删除的时候发现会影响到其他表(就是外码所指向的那张表),可以拒绝删除;
    • 空值删除:就是说,删除的时候,将外码所在的那张表中,外码作为主码的元祖全部置为null
    • 级联删除:就是说,删除的时候,将外码所在的那张表中,外码作为主码的元祖全部删掉;
  • 执行更新操作,等同于先执行删除,再执行插入。

三、关系数据库的规范化理论

1.关系模式中可能存在的冗余和异常问题

  • 数据冗余:同一数据反复存储的情况。

  • 更新异常:数据冗余将导致存储空间的浪费和潜在数据不一致及修改麻烦等情况。

  • 插入异常:应该插入到数据库中的数据不能执行插入操作的情形。

  • 删除异常:不应该删去的数据被删去。

关系模式产生上述问题的原因,以及消除这些问题的方法,都与 数据依赖 的概念密切相关。

2.函数依赖与关键字

  • 函数依赖是关系中属性间的对应关系,其定义如下:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称“ X 函数决定 Y” 或 “Y 函数依赖于 X”,记作 X→Y 。其中 X 称为决定因素。反之,对于关系R 中的属性 X 和 Y,若 X 不能函数决定 Y,则其符号记作 X !→ Y;

  • 完全函数依赖:设R为任一给定关系,X、Y为其属性集,若 X→Y,且对 X 中的任何真子集 X’ 都有 X’ !→ Y, 则称 Y 完全函数依赖于 X。

  • 部分函数依赖:设R为任一给定关系,X、Y为其属性集,若 X→Y,且对 X 中存在一个真子集 X’满足 X’→Y ,则称 Y 部分函数依赖于 X。

  • 传递函数依赖:设R为任一给定关系,X、Y、Z为其不同属性子集,若 X→Y,Y→Z则有 X→Z ,称Z传递函数依赖于 X。

  • 关键字:设R为任一给定关系,U为其所含的全部属性集合,X为U的子集,若有完全函数依赖 X→U, 则X为R的一个候选关键字。

3.范式与关系规范化过程

范式:关系需要满足一定的要求,满足不同程度的要求称为不同的范式。满足最低要求的称为第一范式,简称 1NF。

一个低一级范式的关系模式通过 模式分解 可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

即指1NF –> 2NF –> 3NF –> BCNF;

  • 第一范式:设R为任一给定关系,如果 R 中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式(1NF),不可以多级列头或多级属性

  • 第二范式:设R为任一给定关系,若 R 为 1NF,且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式(2NF);

  • 第三范式:设R为任一给定关系,若 R 为 2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式(3NF);

  • BCNF:设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X→Y(Y不属于X) 中的 X 必包含候选关键字,则 R 为 BCNF。(一个关系所有的函数依赖的左边都必须包含这个关系的候选关键字,即需要消除的是主属性对码的部分和传递函数依赖)