第二章 关系数据库

第一节 关系数据库概述

  • 关系数据库的基本特征是使用关系数据模型组织数据
  • 在商用数据库管理系统中,关系模型逐渐取代早期的网状模型层次模型,成为主流数据模型。和关系模型相比,网状模型或层次模型均与底层实现的结合更加紧密,而关系模型具有坚实的理论基础。

第二节 关系数据模型

  • 关系数据库系统是支持关系模型的数据库系统,关系模型包含3个组成要素,分别是关系数据结构关系操作集合关系完整性约束

一,关系数据结构

  • 只包含单一的数据结构,即关系。

  • 在关系模型中,现实世界的实体以及实体间的各种联系,均是使用关系来表示。

  • 关系数据库是以二维表格的形式组织数据。如下表2.1。

    学号姓名性别出生日期籍贯民族班号身份证号
    2021112601张三2000-01-01北京2101XXXXX111
    2021112602李四2000-01-02陕西2102XXXXX222
    2021112603王五2000-01-03四川2103XXXXX333
  • 关系数据库基本术语

    • Table

      • 表,也称为关系,是一个二维的数据结构,由表名,构成表的各个列(如学号,姓名等)及若干行数据(各个学生的具体信息)组成。每个表有一个唯一的表名。
    • 关系Relation

      • 一个关系逻辑上对应一张二维表,可以为每个关系取一个名称进行标识。
      • 关系可以有三种类型,即基本关系,查询表视图表
        • 基本关系通常又称为基本表基表,是实际存在的表,它是实际存储数据的逻辑表示
        • 查询表是查询结果对应的表。
        • 视图表是由基本表或其他视图表导出的表,是虚表不对应实际存储的数据。
    • Column

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

      • 表中的一列即为一个属性,给每个属性起一个名称即属性名。与之同义的术语是“列”。
      • 表中属性的个数称为关系的。列的值称为属性值;属性值的取值范围称为值域
    • Row

      • 表中的Row),也称作元组Tuple)或记录Record)。表中的数据是按行存储的。表中的一行数据即为一个元组或一条记录,其每行由若干字段值组成,每个字段值描述该对象的一个属性或特征。
    • 元组Tuple

      • 表中的一行即为一个元组
        • 如上表中(2021112601,张三,男,2000-01-01,北京,汉,2101,XXXXX111)为一个元组。
    • 分量Component

      • 元组中的一个属性值,称为分量
    • 码或键Key

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

      • 如果在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码超键
      • 每个关系至少有一个默认的超码超键,即该关系的所有属性的集合,也是这个关系的最大超码或超键。
      • 在上表2.1中(学号,姓名),(学号,姓名,性别,出生日期),(学号,姓名,性别,出生日期,籍贯,民族,班号,身份证号)都是该表的超码或超键。
    • 候选码或候选键Candidate Key

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

      • 一个关系的候选码候选键是这个关系的最小超码超键

      • 表2.1中学生基本信息中学号和身份证号都是候选键,因为给定学号或身份证号,都可以确定一个学生的全部基本信息。

      • 有些情况下,需要几个属性(即属性组或属性集合)才能唯一确定一条记录。如下表,仅仅确定学号或课程号,都不能唯一确定某个学生具体一门课程的成绩。所以,学生成绩表的主键是由学号和课程号两个属性组成的属性集合,即(学号,课程号)。

      • 中文字段名数据类型宽度
        学号字符型10
        课程号字符型6
        开课学期字符型5
        成绩数值型
    • 主码或主键Primary Key

      • 在一个关系的若干个候选码候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码候选键为该关系的主码主键
    • 全码或全键All-Key

      • 一个关系模式的所有属性集合是这个关系的主码主键,则称这样的主码主键全码全键
    • 主属性Primary Attribute)和非主属性Nonprimary Attribute

      • 关系中包含在任何一个候选码中的属性称为主属性码属性,不包含在任何一个候选码中的属性称为非主属性非码属性
    • 外码或外键Foreign Key

      • 当关系中的某个属性(或属性组)不是这个关系的主码候选码,而是另一关系的主码时,称该属性(或属性组)为这个关系的外码外键
    • 参照关系Referencing Relation)和被参照关系Referenced Relation

      • 参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系。以外码作为主码的关系称为被参照关系;外码所在的关系称为参照关系。被参照关系与参照关系是通过外码相联系的,这种联系通常是一对多的联系。
    • Domain

      • 域表示属性的取值范围。
    • 数据类型Data Type

      • 用于限制(或容许)该列存储的数据。每个字段表示同一类信息,具有相同的数据类型。
    • 关系模式Relation Schema

      • 在关系数据库中,关系模式是型,关系是值,即关系模式是对关系的描述。
      • 关系模式是静态的稳定的,而关系是动态的,随时间不断变化。
    • 关系数据库Relation Database

      • 关系数据库是以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
      • 关系数据库对关系的要求
        • 每一个属性都是不可分解的。即不允许表中有表。
        • 每一个关系仅仅有一种关系模式,即每一个关系模式中的属性的数据类型以及属性的个数是相对固定的。
        • 每一个关系模式中的属性必须命名,在同一个关系模式中,属性名必须是不同的。
        • 同一个关系中不允许出现候选码候选键值完全相同的元组。
        • 在关系中元组的顺序(即行序)是无关紧要的,可以任意交换。
        • 在关系中属性的顺序(即列序)是无关紧要的,可以任意交换。

二,关系操作集合

1,基本的关系操作

  • 查询Query)操作和插入Insert),删除Delete),修改Update)操作两大部分。
  • 查询操作可以分为选择投影连接笛卡尔积等。其中,选择,投影,并,差,笛卡尔积是5种基本操作,其他操作均可以使用基本操作来定义和导出。
  • 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合set-at-a-time)的方式。

2,关系数据语言的分类

  • 关系操作是通过关系语言来实现的。关系语言的特点是高度非过程化,即:用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择由DBMS的优化机制来完成;用户也不必求助于循环和递归来完成数据的重复操作
  • 关系操作的能力可以用两种方式来表示:
    • 代数方式
      • 代数方式主要有关系代数,它是通过对关系的操作来表达查询要求的方式。
    • 逻辑方式
      • 逻辑方式主要有关系演算,它是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量,分为元组关系演算域关系演算关系代数元组关系演算域关系演算三种语言在表达能力上是完全等价的。
  • 结构化查询语言(Structured Query Language,SQL)介于关系代数和关系演算之间。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询,数据定义语言(DDL),数据操纵语言(DML)和数据控制语言(Data Control Language,DCL)于一体的关系数据语言。是关系数据库的标准语言。
  • 关系数据语言可以分为3类:关系代数语言,关系演算语言以及兼具两者双重特点的语言(如SQL)。共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用也可以嵌入高级语言中使用。

3,关系代数

  • 关系代数是关系操作语言的一种传统表示方式,是以集合代数为基础发展起来的。任何一种操作都是将一定的操作符作用于一定的操作对象上,得到预期的操作结果,因而操作包含三大要素:操作对象,操作符,操作结果。
  • 关系代数操作中,操作对象和操作结果均为关系。关系代数直接应用关系的运算来表达操作目的,而代数用到的运算符包括集合运算符和专门的关系运算符两类。
  • 关系代数操作经过有限次复合的式子称为关系代数操作表达式,简称为关系代数表达式

三,关系的完整性约束

  • 数据库的数据完整性是指数据库中数据的正确性相容性一致性。包含两个方面:

    • 与现实世界中应用需求的数据的正确性,相容性和一致性。
    • 数据库内数据之间的正确性,相容性和一致性。
  • 关系模型中有三类完整性约束,分别是实体完整性约束参照完整性约束用户定义完整性约束

1,实体完整性约束(Entity Integrity Constraint)

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

2,参照完整性约束(Referential Integrity Constraint)

  • 参照完整性约束就是定义外码主码之间的引用规则,它是对关系间引用数据的一种限制。
  • 参照完整性的定义:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值只允许两种可能,即要么取空值(F的每个属性值均为空值),要么等于S中某个元组的主码值。

3,用户定义完整性约束(User-defined Integrity Constraint)

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

4,关系模型完整性约束的检验

  • 在对关系数据库执行插入删除更新操作时,需要检验是否满足上述三类完整性约束。
1,执行插入操作
  • 检查实体完整性约束,检查插入行在主码属性上的值是否已经存在,若不存在,可以执行插入操作;否则不可以执行插入操作。
2,执行删除操作
  • 一般只需要对被参照关系检查参照完整性约束。如果是删除被参照关系中的行,检查被删除行在主码属性上的值是否正在被相应的参照关系的外码引用,若不在被引用,可以执行删除操作;若正在被引用,有三种可能的做法,既不执行该删除操作(拒绝删除)。或将参照关系中相应行在外码属性上的值改为空值(若它允许空值)后再执行删除操作(空值删除),或将参照关系中相应的一行删除(级联删除)
3,执行更新操作
  • 是上述两种情况的综合。

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

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

1,数据冗余

  • 数据冗余是指同一数据被反复存储的情况。

2,更新异常

  • 数据冗余将导致存储空间的浪费和潜在数据不一致性及修改麻烦等问题。

3,插入异常

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

4,删除异常

  • 数据的删除异常是指不应该删去的数据被删去的情形。

5,数据依赖

  • 数据依赖是可以作为关系模式的取值的任何一个关系所必须满足的一种约束条件,是通过一个关系中各个元组的某些属性值之间的相等与否体现出来的相互关系。这是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

二,函数依赖与关键字

  • 函数依赖是指关系中属性间的对应关系,定义如下:
    • R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X➡Y。其中**,X称为决定因素**。
  • 函数依赖根据其不同性质可分为完全函数依赖部分函数依赖传递函数依赖

三,范式与关系规范化过程

  • 关系数据库中的关系满足一定的要求,不同程度的要求称为不同的范式Normal FormNF)。满足最低要求的称为第一范式,简称1NF,这是最基本的范式;在第一范式的基础上进一步满足一些新要求的称为第二范式2NF);以此类推,第三范式3NF)及其改进形式BCNFBoyce-Codd Normal Form)。
  • 一个低一级范式的关系模式通过模式分解Schema Decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化Normalization)。

1,第一范式

  • 设R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。
  • 第一范式是一个不含重复组的关系,其中不存在嵌套结构。不满足第一范式的关系为非规范关系。
  • 存在的问题:冗余高,插入和删除操作异常。

2,第二范式

  • R为任一给定关系,若R1NF,且其所有非主属性都完全函数依赖于候选关键字,则R第二范式
  • 存在的问题:插入,删除操作异常及修改麻烦等问题。

3,第三范式

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

4,BCNF

  • 用于解决3NF有时出现的插入及删除操作异常等问题。
  • R为任一给定关系,XY为其属性集,F为其函数依赖集,若R3NF,且其F中所有函数依赖X➡Y(Y不属于X)中的X必包含候选关键字,则RBCNF
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值