美文网首页
二、关系数据库

二、关系数据库

作者: silasjs | 来源:发表于2019-12-13 00:17 被阅读0次

    二、关系数据库

    1.关系数据库概述

    关系数据库的产生历史:

    1. 1970年IBM的E.F.Codd提出了关系模型,奠定了关系数据库的理论基础。
    2. 20世纪70年代末,关系理论研究和软件系统的研制取得了重大突破。
    3. 1981年,出现了比较成熟的关系数据库管理技术,证实了关系数据库的优点:高级的非过程语言接口、较好的数据独立性。
    4. 20世纪80年代后,网状模型和层次模型与底层实现的紧密结合,关系模型具有坚实的理论基础,称为主流数据模型。

    2.关系数据库模型

    1. 关系数据模型的组成要素

      • 数据模型的组成要素:
        • 数据结构
        • 数据操作
        • 数据约束
      • 关系数据模型的组成要素:
        • 关系数据结构
        • 关系操作集合
        • 关系完整性约束
    2. 关系数据结构

      • 表(table)
        • 也称为关系,是一个二维的数据结构,由表名、列、若干行数据组成。
        • 每个表有唯一的表名,表中每一行数据描述一条具体的记录值。
      • 关系(relation)
        • 一个关系逻辑对应一张二维表,可以为每一个关系取一个名称进行表示。
        • 关系 = 表
        • 关系的三种类型:
          1. 基本关系(基本表、基表)<实际存在的表>
          2. 查询表
          3. 视图表<导出的虚表>
      • 列(column)
        • 也称为字段(field)或属性(attribute)
      • 属性(attribute)
        • 属性的个数称为关系的元或度
        • 列的值称为属性值,其取值范围称为值域。
      • 行(row)
        • 也称为元组(tuple)或记录(record)
        • 表中的数据按行存储
      • 分量(component)
        • 元组(行)中的一个属性值,称为分量。
      • 码或键(key)
        • 属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码或键。
      • 超码或超键(super key)
        • 在码中去除某个属性,它仍然是该关系的码。
      • 候选码或候选键(candidate key)
        • 在码中不能从中移去任何一个属性,否则它就不再是该关系的码或键。
        • 候选码或候选键是这个关系的最小超码或超键。
      • 主属性(primary attribute)或非主属性(nonprimary attribute)
        • 包含在任何一个候选码中的属性称为主属性或码属性。
      • 主码或主键(primary key)
        • 在若干个候选码中指定一个唯一标识关系的元组(行)
      • 全码或全键(all key)
        • 一个关系模式的所有属性集合是这个关系的主码或主键,这样的主码或主键称为全码或全键。
      • 外码或外键(foreign key)
        • 某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主码。
      • 参照关系(referencing relation)和被参照关系(referenced relation)
        • 参照关系也称为从关系,
        • 被参照关系也称为主关系,
        • 它们是指以外码相关联的两个关系。
      • 域(domain)
        • 表示属性的取值范围
      • 数据类型(data type)
        • 每个列都有相应的数据类型,它用于限制(或容许)该列中存储的数据。
      • 关系模式(relation schema)= 表头
        • 关系模式是型(type),关系是值(value),即关系模式是对关系的的描述。
        • 关系模式是静态的,稳定的
        • 关系是动态的,随时间不断变化的
      • 关系数据库(relation database)
        • 所有关系的集合,构成一个关系数据库。
        • 以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。
        • 关系数据库对关系的限定(要求):
          1. 每一个属性都是不可分解的(不允许表中有表)
          2. 每一个关系仅仅有一种关系模式
          3. 每一个关系模式中的属性必须命名,属性名不同
          4. 同一个关系中不允许出现候选码或候选键值完全相同的元组
          5. 在关系中,元组的顺序(即行序)是无关紧要的,可以任意交换。
          6. 在关系中,属性的顺序(即列序)是无关紧要的,可以任意交换。
    3. 基本的关系操作(特点:集合操作方式

      • 查询(query)
        • 选择
        • 投影
        • 笛卡尔积
        • 连接
      • 插入(insert)
      • 删除(delete)
      • 修改(update)
    4. 关系数据语言的分类

      • 关系代数语言
      • 关系演算语言
        • 元组关系演算
        • 域关系演算
      • SQL:结构化查询语言

      共同特点:具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用,也可以嵌入高级语言中使用。

    5. 关系代数的运算符

      • 任何一种操作都包含三大要素:
        • 操作对象
        • 操作符
        • 操作结果
    6. 传统的集合运算

      并(union)
      R3 = R1 ∪ R2
      两个关系必须有相同的属性个数

      表R1

      s_no s_name
      1912001 钟岳
      1912002 王海燕

      表R2

      s_no s_name
      1912001 钟岳
      1912003 李小飞

      并运算符操作后,得到表R3

      s_no s_name
      1912001 钟岳
      1912002 王海燕
      1912003 李小飞

      差(difference)
      R3 = R1 - R2
      两个关系必须有相同的属性个数

      表R1

      s_no s_name
      1912001 钟岳
      1912002 王海燕

      表R2

      s_no s_name
      1912001 钟岳
      1912003 李小飞

      差运算符操作后,得到表R3

      s_no s_name
      1912002 王海燕

      交(intersection)
      R3 = R1 ∩ R2
      两个关系必须有相同的属性个数

      表R1

      s_no s_name
      1912001 钟岳
      1912002 王海燕

      表R2

      s_no s_name
      1912001 钟岳
      1912003 李小飞

      交运算符操作后,得到表R3

      s_no s_name
      1912001 钟岳

      笛卡尔积(cartesian product)
      R3 = R1 × R2

      学生表R1

      s_no s_name
      1912001 钟岳
      1912002 王海燕

      课程表R2

      c_no c_name
      1 操作系统
      2 数据库

      笛卡尔积后获得表R3

      s_no s_name c_no c_name
      1912001 钟岳 1 操作系统
      1912001 钟岳 2 数据库
      1912002 王海燕 1 操作系统
      1912002 王海燕 2 数据库
    7. 专门的关系运算

      选择(select):σF(R)
      select 关系名 where 条件

      s_no s_name s_sex
      1912001 钟岳
      1912002 王海燕
      1912003 李小飞

      select table_name where s_sex = "男"

      s_no s_name s_sex
      1912001 钟岳
      1912003 李小飞

      投影(projection):πA(R)
      projection 关系名 (属性名1, 属性名2, 属性名n)

      s_no s_name s_sex
      1912001 钟岳
      1912002 王海燕
      1912003 李小飞

      projection table_name (s_name, s_sex)

      s_name s_sex
      钟岳
      王海燕
      李小飞
    8. 关系的完整性约束

      数据库的数据完整性是指数据库中数据的正确性相容性一致性

      • 实体完整性约束
        • 主码的组成不能为空,主属性不能是空值NULL
      • 参照完整性约束
        • 定义外码和主码之间的引用规则
        • 要么外码等于主码中某个元组的主码值,要么为空值。
      • 用户定义完整性约束
        • 域完整性约束(针对某一应用环境的完整性约束)、其他。

      执行插入操作

      1. 检查实体完整性约束
      2. 检查参照完整性约束
      3. 检查用户定义完整性约束

      执行删除操作

      一般只需要对被参照关系检查参照完整性约束。

      执行更新操作

      上诉两种情况的综合。

    3.关系数据库的规范化理论

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

      1. 数据冗余:指同一数据被反复存储的情况
      2. 更新异常:数据冗余造成的,多个内容更改使操作错误
      3. 插入异常
      4. 删除异常
    2. 函数依赖与关键字

      函数依赖:关系中属性间的对应关系

      R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X→Y。其中X称为决定因素

      对于关系R中的属性XY,如果X不能函数决定Y,记作X/→Y。(这个斜杠和箭头的重叠符号好难写)

      • 函数依赖的分类:
        • 完全函数依赖:设R为任一给定关系,XY为其属性集,若X→Y,且对X中的任何真子集X',都有X'/→Y,则称Y完全函数依赖于X
        • 部分函数依赖:设R为任一给定关系,XY为其属性集,若X→Y,且X中存在一个真子集X',满足X'→Y,则称Y部分函数依赖于X
        • 传递函数依赖:设R为任一给定关系,XYZ为其不同属性子集,若X→YY/→XY→Z,则有X→Z,则称Z传递函数依赖于X

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

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

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

      第一范式1NF

      R为任一给定关系,如果R中的每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。

      第二范式2NF

      R为任一给定关系,若R1NF,且其所有非主属性都完全函数依赖候选关键字,则R为第二范式。

      第三范式3NF

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

      第三范式的改进形式BCNF(3.5NF)

      R为任一给定关系,XY为其属性集,F为其函数依赖集,若R3NF,且其F中所有函数依赖X→YY不属于X)中的X必包含候选关键字,则RBCNF

      如何转换(拆拆拆)

      • 1NF -> 2NF
        • 找到候选关键字,看其余的属性是否完全函数依赖候选关键字,
        • 是的,与候选关键字一同抄下来形成一个表格,
        • 不是的,抄下来,形成第二个表格,并且将候选关键字里能够唯一决定表格2的属性组抄在第一列
      • 2NF -> 3NF
        • 找到表格中的传递函数依赖关系的三个属性组,设为x、y、z
        • 将这三个属性组拆成两个表格
        • 第一个表格为x,y
        • 第二个表格为y,z
      • 3NF -> BCNF
        • 列出表格中的所有函数依赖关系
        • 每个关系拆出一个表格

    相关文章

      网友评论

          本文标题:二、关系数据库

          本文链接:https://www.haomeiwen.com/subject/umpxnctx.html