数据库原理

本文最后更新于:2021年3月11日 下午

数据库原理

1. 数据库系统概述

1. 数据

  1. 数据的定义
  2. 数据的性质
  3. 数据的分类形式
  1. 数据:是数据库中存储的基本对象,是描述现实世界中各种具体事务或抽象事物的符号,可以是数字,可以是文字、声音、图形、图像、视频等,它们经过处理后存储在数据库中。
  2. 数据的性质:
    1. 数据和其语义环境密切相关。
    2. 关系模型中,数据通过来给出数据的语义。
    3. 现实生活中的数据往往不是孤立存在的,它们之间是有联系的。
  3. 数据的一种分类形式:
    1. 结构化数据:二维表。
    2. 半结构化数据:HTML文档,一般是自描述的,数据的结构和内容混在一起,没有明显区分。
    3. 非结构化数据:所有格式的文档,文本,图片,报表,图像,音频,视频等。

2. 数据库

  1. 数据库的定义
  2. 数据库的特点
  3. 数据库的基本操作
  4. 对数据库的要求
  1. 数据库技术本质是一种数据管理技术。

  2. 数据管理,顾名思义就是对数据的管理,具体来说是指使用电子计算机对数据进行分类、组织、存储、检索和维护。

  3. 数据库(Database,简称DB):是持久存储在计算机中、有组织的、可共享的大量数据的集合。

  4. 数据库的特点:

    1. 数据库中的数据按一定数据模型组织、描述和存储:模型是现实世界的抽象,数据模型是数据特征的抽象,是用来在计算机世界中对数据进行建模的。
    2. 可以被各种用户共享。
    3. 较小的冗余度:同文件管理系统相比,具有更小的冗余度。
    4. 较高的独立性:应用程序独立于数据的逻辑结构或物理结构,即当数据的物理结构或逻辑结构改变时,应用程序不需要改变。
    5. 易于扩展。
  5. 数据库基本操作:

    1. 数据查询
    2. 数据插入
    3. 数据修改
    4. 数据删除
    5. 数据插入、修改、删除统称数据的更新。
  6. 实际应用对数据操作的要求

    1. 并发访问:并发访问可能导致数据不正确,因此必须对并发访问进行控制。
    2. 面临故障:断电、硬盘损坏等,发生故障可能会导致数据库中的数据不正确,因此遇到故障时必须对故障进行恢复,保证数据库中的数据是正确的。
    3. 数据库的安全性:防止非法用户登录数据库,并防止合法用户对数据库进行非法操作。
    4. 数据的完整性:保证数据库中的数据符合语义。
  7. 以上要求加上查询条件的多样性和复杂性,使得数据查询和更新很复杂。开发专门的软件系统管理数据,这种软件系统就是数据库管理系统,即DBMS。

3. 数据库管理系统

  1. 数据库管理系统的概念
  2. 数据库管理系统的主要功能
  3. 数据库系统的定义
  1. 数据库管理系统(Database Management System,简称DBMS):是位于用户和计算机操作系统之间的数据管理软件,专门来管理数据,是计算机系统的基础软件。主要有:ORACLE、MySQL、SQLServer、DB2。
  2. 数据库管理系统的主要功能:
    1. 数据定义:定义数据库中各种数据对象和它们的结构。
    2. 数据操纵:实现对数据库的基本操作。
    3. 事务管理和运行管理:存在并发访问、发生故障等问题,要确保数据的一致性、安全性和完整性。
    4. 数据存储和查询处理:确定数据的物理组织和存取方式,提供数据的持久存储和有效访问。
    5. 数据库的建立和维护:提供实用程序完成数据批量装载,介质故障恢复,数据库的重组织和性能监控等。
    6. 其他功能:数据导入导出、和其他软件通信等。
  3. 数据库系统:由数据库、DBMS(及其开发工具)、应用系统和数据库管理员(DBA)组成。
    • DBA的主要职责:负责维护数据库的日常运行并监控数据库的使用。
    • 数据最终在物理磁盘上存储。

4. 数据模型

  1. 数据模型的概念
  2. 数据模型的三个构成要素
  3. 概念模型
  4. 数据模型
  1. 数据模型是数据库技术的核心概念。

  2. 所有DBMS都基于某种数据模型实现,所有数据库应用都建立在某种数据模型之上。

  3. 数据模型是一种形式机制,用于数据建模,描述数据、数据之间的联系、数据的语义、数据上的操作和数据的完整性约束条件。

  4. 数据模型的层次(两个不同的层次)

    1. 概念模型:也称信息模型,按用户的观点来对现实世界进行数据建模。
    2. 数据模型:按计算机系统的观点对信息世界进行数据建模。
    • 从现实世界到概念模型/信息世界是第一层抽象,从概念模型/信息世界到数据模型/机器世界是第二层抽象。
  5. 概念模型

    1. 从现实世界到计算机世界的跨度较大,需要一个中间层次,这就是信息世界。
    2. 概念模型就是对现实世界进行建模,是数据库设计人员了解了现实世界后在大脑中的第一次抽象。
    3. 概念模型通常和计算机世界无关。
    • 一方面能够方便、直接表达现实世界;另一方面还应该很简单,易于用户理解。
    1. 实体—联系(Entity—relationship)模型(最常用的概念模型)
      1. E-R模型基于:现实世界有一些称为实体的基本对象和这些对象之间的联系组成。
      2. 实体:往往由若干属性刻画。
      3. 联系:可以由属性,也可以没有属性。
  6. 数据模型

    1. 数据模型是实际DBMS所支持的模型。
    2. 数据模型的三个要素:
      1. 数据结构:描述数据库中的对象和对象之间的联系,是对系统静态特性的描述;刻画了数据模型的静态特性。有层次模型,网状模型和关系模型。
      2. 数据操作:查询和更新(包括插入、删除、修改);刻画了数据模型的动态特性。
      3. 完整性约束:是一组规则,保证数据的正确、有效和相容;刻画了数据模型的约束条件。

5. 常见数据模型

  1. 常见数据模型
  2. 关系模型的特点
  3. 关系模型的三个要素
  1. 常见数据模型主要有:层次模型、网状模型、关系模型、面向对象模型、对象-关系模型。

  2. 层次模型、网状模型:因为数据结构和数据操作复杂已被淘汰。

  3. 网状模型:数据结构简单,采用非过程化的数据语言,成为主流模型。

  4. 面向对象模型:采用面向对象的方法设计数据库,多用于多媒体应用以及复杂的很难在关系数据库中模拟和处理的关系。

  5. 对象关系模型:为解决面向对象与关系数据库互不匹配而引入的。

  6. 关系模型的特点:

    • 具有坚实的数据基础
    • 简洁的数据表示形式
    • 支持非过程语言
  7. 关系模型的三个要素:

    • 关系模型的数据结构:
      1. 关系模型只有一种数据结构–关系。现实世界中的对象和对象之间的联系都用关系表示。
      2. 关系模型要求关系必须是规范化的:关系的每个属性只能取原子值,换句话说,表中不能包含子表。
    • 关系模型的操作:
      1. 关系代数
      2. 关系演算
      3. 结构化查询语言SQL
    • 关系模型的完整性约束(包括有):
      1. 实体完整性:是对主码取值的约束;实体完整性规则要求在主码上不能取重复值。
      2. 参照完整性:是对外码的约束;如:选修表中的学号是外码,参照完整性规则要求选修表中的学号只能是学生表中已经存在的一个学号。
      3. 用户自定义完整性:和具体应用有关的约束。

6. 数据库系统结构

  1. 数据库的内部结构
  2. 三级模式和两级映像结构
  3. 数据独立性的概念
  4. 如何保证物理独立性和逻辑独立性?
  1. 数据库系统的外部结构(用户角度):

    • 单用户系统
    • 主从式系统
    • 分布式系统
    • 客户服务器系统
    • 浏览器-服务器系统
  2. 数据库系统的内部结构(3模式2映像):

    • 外模式
    • 模式
    • 内模式
    • 外模式-模式映像
    • 模式-内模式映像
  3. 美国国家标准协会于1978年将数据库内部结构标准为3级模式2级映像结构:

    1. 面向用户/程序员的外模式
    2. 面向建立和维护数据库的模式
    3. 面向系统程序员的内模式
    4. 定义外模式和模式之间对应关系为外模式-模式映像
    5. 定义模式和内模式之间的对应关系的模式-内模式映像
  4. 在数据库体系结构中,外模式面向具体的应用程序,定义在模式之上,但独立于存储模式和存储设备;模式出于中间层,和具体应用没有关系,和物理存储也没有关系;内模式依赖于全局逻辑结构,但独立于数据库的用户视图,也独立于具体的存储设备。

  5. 模式(schema):也称逻辑模式、概念模式。

    • 模式是数据库中全体数据的总体逻辑结构描述,是所有用户的公共数据视图
    • 模式处于数据库系统模式结构的中间层
    • 模式的定义包括:数据项的名字、类型、取值范围、数据之间的联系、数据有关安全性和 完整性的要求
  6. 外模式(external schema):也称子模式或用户模式

    • 介于模式和应用之间,是特定数据库用户的数据视图,是与某一具体应用相关的数据局部逻辑结构的描述。
    • 理想的,所有应用都建立在一个外模式上,实际上,DBMS都允许应用程序直接访问模式。
  7. 内模式(internal schema):也称存储模式或物理模式

    • 内模式是数据物理结构和存储方式的描述,定义数据在数据库内部的表示方式。(如:文件记录的存储方式(顺序存储、按照B树结构存储、按照Hash方法存储)、索引的组织方式、数据是否压缩存储、数据是否加密、记录是否跨页)
    • 内模式到物理存储器的映射通常由操作系统实现。
  8. 以逻辑模式为框架组成的数据库为概念数据库,以外模式为框架组成的数据库为用户数据库,以内模式为框架组成的数据库为物理数据库。只有物理数据库真实存在与计算机外存中,其他两种数据库是通过两种映射由物理数据库映射而成。

  9. 外模式-模式映射:外模式-模式映像定义外模式与模式之间的对应关系

    • 每一个外模式都有一个对应的外模式-模式映像,建立外模式中的数据对象与模式中的数据对象之间的对应关系。
    • 外模式-模式映像可以保证外模式的相对稳定性,为数据的逻辑独立性提供了保证。
      • 当逻辑改变时,即数据的逻辑结构改变,数据库管理员可以修改有关的外模式-模式映像使外模式保持不变,建立在外模式之上的应用程序就不需要改变。
  10. 模式-内模式映射:定义数据全局逻辑结构与存储结构之间的对应关系

    • 模式-内模式映像可以保证模式的相对稳定性,从而保证数据的物理独立性。
    • 数据的存储结构(内模式)改变时,数据库管理员可以修改模式-内模式映像,使得模式不变,这为数据的物理独立性提供了保证。
  11. 数据独立性保证了应用程序的独立性和稳定性,除非应用需求发生改变,一般应用程序不需要修改,从而使得数据的定义和描述从应用程序中分离出去,体现了以数据为中心的思想。

    • 物理独立性
    • 逻辑独立性

2. 实体-联系模型

1. 实体

  1. 实体和实体集
  2. 属性和属性的分类
  3. 超码、候选码、主码
  1. 实体:客观存在并且可以相互区分的任何事物,可以是实际对象,也可以是抽象概念。

  2. 属性:实体所代表的事物具有的某种特性,每个实体都可以用一组属性来刻画。

    • 对于同一个实体,刻画它的属性集可以有不同的选择,和具体的应用有关。
  3. 实体集:具有相同属性的实体的集合。

    • 实体和实体集都有型和值之分。

    • 实体和实体集的型都用其属性名的列表表示。

      • 学生实体(集)的型可以用学生(学号、姓名、性别…)表示。
    • 实体的值是该实体诸属性值的列表。

      • (201606198,江涛,男)
    • 实体集的值是该实体集中所有实体值得集合。

      • {(学生实体1),(学生实体2)…}
  4. 超码:能够唯一确定实体集中每个实体的属性集称为该实体集的超码。

  5. 候选码:真子集都不是超码的极小超码是候选码。

  6. 主码:数据库设计者选中的用来区分同一实体集中不同实体的候选码。

  7. 不需要特别强调时:用“码”表示主码或候选码,而超码是码的超集。

  8. 注意:

    • 在数据库文献当中,对于单个属性的集合,常常不适用集合记法,而直接使用属性名,如{学号}—>学号。
    • 码是语义概念,需要根据实际情况来确定。
  9. 属性分类:

    • 简单属性:不能划分成更小部分的属性。
    • 单值属性:特定的实体在该属性上只能取单个值得属性。
    • 基本属性:不能通过其他属性值推导出来,值必须保存在系统中得属性。
    • 复合属性:和简单属性对应,可以划分成更小部分的属性。
    • 多值属性:特定的实体在该属性上能取多个值得属性。
    • 派生属性:可以从其他相关属性或实体计算得到,因此派生属性又称计算属性。

2. 联系

  1. 联系:是多个实体之间的相互关联。
  2. 联系集:相同类型联系的集合。
  3. 形式化定义:设$E_1,E_2,…,E_n$是$n(n \geq 2)$个实体集,它们不必相互不同。联系集$R$是${(e_1,e_2,…,e_n)|e1 \in E_1, e_2 \in E_2,…,e_n \in E_n}$的图个子集,其中$(e_1,e_2,…,e_n) \in R$是一个联系,$n$是联系的度(元),联系集$R$的型可以用$(R_1,R_2,…,R_n)$表示。
  4. 联系的类型:
    • 一对一:如果$E_1$中的每个实体最多与$E_2$的一个实体相关联,并且$E_2$中的每个实体也最多与$E_1$中的一个实体相关联,则称$E_1$和$E_2$之间的联系为1对1联系。
    • 一对多:如果$E_1$中的每个实体都可以与$E_2$的任意多个实体相关联,并且$E_2$中的每个实体最多与$E_1$中的一个实体相关联,则称$E_1$到$E_2$之间的联系为一对多联系或者$E_2$到$E_1$的多对一联系。
    • 多对多:如果$E_1$中的每个实体都可以与$E_2$的任意多个实体相关联,并且$E_2$中的每个实体可以与$E_1$中的多个实体相关联,则称$E_1$和$E_2$之间的联系为多对多联系。
  5. 联系也可以有属性:经常出现在多对多联系中,这种属性与联系的实体都相关。

3. 实体-联系图

  1. 实体集:矩形框

    • 实体集名写在框内,并用无向边把实体集和它的属性连接起来。
  2. 联系:菱形框

    • 联系名写在菱形框内,如果联系具有属性,则用无向边将联系和它的属性连接起来。

    • 联系的处理:

      1. 联系R是1对1的,则每条无向边旁均用1标记。
      2. 联系R是实体集$E_2,…,E_n$到$E_1$的多对1联系,则R与$E_1$之间的无向边用1标记,其余的无向边用小写字母m,n,p等标记,或都用"*"标记。
      3. 联系R是多对多的,则每条无向边都用小写字母m,n,p等标记,或都用“*”标记。
      4. 另一种方法:使用有向边表示该实体出于一端,无向边表示该实体集处于多端。
  3. 特殊情况下,同一个实体内部也存在联系。如职工实体集,经理也是职工,不过是有行政职务的职工,和普通职工之间存在领导和被领导的联系,这种联系属于同一实体内部的联系。有时候多个实体之间也会存在联系,比如供应商,零件,和工程之间。如果联系R涉及多个实体集,则用无向边将表示联系的菱形框和表示实体集的椭圆形框连接起来。

  4. 属性:椭圆形框,属性名写在框内。

    • 简单属性、单值属性、基本属性、复合属性:单实边椭圆。
    • 多值属性:使用双边椭圆框。
    • 派生属性:使用虚边椭圆。
    • 用无向边将复合属性与成分属性连接起来。码的属性用下横线标识。

4. 弱实体集

  1. 弱实体集:如果一个实体集的任何属性都不足以形成该实体集的码,则称该实体集为弱实体集。
    • 存在码的实体集称为强实体集。
  2. E-R图中,弱实体集用双边矩形表示,和强实体集之间的联系用双边菱形表示。与弱实体集关联的强实体集被称为标识实体集或属主实体集。强实体集和弱实体集之间的联系被称为标识性联系。
  3. 弱实体集:
    1. 标识实体集:弱实体集必须与另一个称作标识实体集或者属主实体集的强实体集相关联才有意义。
    2. 标识性联系:标识实体集与弱实体集相关联的联系被称为标识性联系。
    3. 分辨符:如果一个属性可以唯一确定存在依赖于同一个强实体的弱实体,则称属性集为弱实体集的分辨符。
    4. 弱实体集的码:弱实体集的表示实体集的码和该弱实体集的分辨符共同形成弱实体集的码。
    5. 部分码:弱实体集的分辨符。
    6. 可以与多个标识实体集关联:有的弱实体集还可以与多个表示实体集关联,该弱实体集的码由诸标识实体集的码和弱实体集的分辨符的组合。
    7. 另一种处理弱实体集的方法:把它作为其标识实体集的一个多值复合属性,例如:可以把家属作为职工的一个多值属性。
    8. 不好的设计方法:将强实体集的码添加到弱实体集的属性集当中,将弱实体集转化成强实体集。

3. 关系数据模型

1. 关系

  1. 笛卡尔积
  2. 关系
  1. 域:具有相同类型的值的集合,可以是有限集也可以是无限集。
    • 如果域D是有限集,则称D中元素的个数为D的基数,记位|D|。
  2. 笛卡尔积:给定n个域$D_1,D_2,…,D_n$(不必互不相同)上的笛卡尔积记作:$D_1 \times D_2 \times … \times D_n $且$D_1 \times D_2 \times … \times D_n = {(d_1,d_2,…,d_n)|d_1 \in D_1 \and d_2 \in D_2 \and … \and d_n \in D_n }$。每个元素$(d_1,d_2,…,d_n)$称为一个n-元组(简称元组),而$d_i$为元组的第$i$个分量。若$D_1,D_2,…,D_n$均为有限集,其基数为$|D_1| \times |D_2| \times … \times |D_n|$。
  3. 关系的形式化定义:域$D_1,D_2,…,D_n$上的关系r是笛卡尔积$D_1 \times D_2 \times … \times D_n$的任意子集。n个域上的关系称为n-元关系,“元”又称为目或度。
  4. 关系除了用集合的方式来表示,还可以用二维表的形式表示,并且二维表的形式更加直观。
    • 使用二维表表示时:每个表都有一个唯一的名字(关系名),表的每一列对应的分量称为属性,表的第一行是表头,给出各列的属性名,其余每行对应于一个元组,每个元组都代表一个实体或联系。
    • 关系的直观表示让我们可以对关系增加一些语义:通过属性名解释关系元组的语义,可以通过属性的语义定义关系的码,定义关系的完整性约束。
    • 二维表表示关系可以按照任意行/列次序显示关系或者说行/列的顺序不重要。
  5. 关系数据库中,任何有意义的关系都要满足一定的约束条件,这些约束都是语义约束。除了语义约束外,对关系的限制主要考虑两点:
    1. 在关系数据库中,只考虑有限关系。
    2. 关系的每个属性都必须是原子的。

2. 关系的码

  1. 关系也存在超码、候选码和主码三种类型的码。
  2. 码:设K是关系R的属性集,如果K能唯一地表示一个元组,而其真子集不能,则K是R的码。
  3. 超码:设K是R的码,$K \subseteq X$,则X是关系R的超码。
  4. 主码:通常,当一个关系具有多个码时,应当选择其中的一个作为唯一识别关系元组的码,称为主码。
    • 主码用于表示由多个码中选出的作为唯一识别关系元组的码,而所有的码又称为候选码。
    • 码中的属性称为主属性,而不在任何码中出现的属性称为非主属性。

3. 关系模型

  1. 关系有型和值之分:
    • 关系的型(=关系模式):
      1. 关系模式看作类型。
      2. 关系的型用关系模式刻画。
    • 关系的值:
      1. 关系就是具有特定类型的“变量”。
      2. 关系的值即关系在某一时刻的快照,又称关系实例。
  2. 关系模式概念对应于程序设计语言中类型概念,是对关系型的描述,可以用R(U,D,DOM,F)表示。
    • R:关系模式名
    • U:关系模式的各属性
    • D:属性对应的域
    • DOM:U到D的映射
    • F:属性间的数据依赖集定义
  3. 实际关系数据库中进行某个关系的定义时给出各个属性的数据类型、取值范围、完整性约束。
  4. 注意:
    • D和DOM是定义表时才考虑。
    • 目前还不用考虑属性间的数据依赖F。
    • 关系模式可以简记为$R(A_1,A_2,…,A_n)$,或R(U)。

4. 从E-R模型到关系模型

  1. E-R模型中的要素包括:属性、实体集、联系集。
  2. E-R模型中的基本、单值和简单属性随着实体集处理。
  3. 派生属性的处理:派生属性的值可以通过计算得到,不需要在数据库中存储,因此在转换时,忽略派生属性。
    • 如年龄是一个派生属性,在向关系模型转换时忽略它。
  4. 复合属性的处理:忽略复合属性的本身,而直接考虑它的成分属性。
    • 向关系模型转换时,忽略地址,我们直接使用省、城市、街道、邮码作为关系模型的属性。
  5. 多值属性的处理:为每个多值属性M创建一个关系$R_M$.
    1. 如果多值属性M是实体集E的属性,K是E的主码,则关系$R_M$的属性由M和K组成。
    2. 如果多值属性M是联系集R的属性,并且R涉及实体集$E_1,E_2,…,E_n$,他们的主码分别是$K_1,K_2,…,K_n$,则关系$R_M$的属性由M和$K_1,K_2,…,K_n$组成。
  6. 实体集处理:
    • 通常情况下:弱实体集和强实体集之间的标识性联系和弱实体集一并转换乘关系模式。方法:将强实体集的码加入到弱实体集中去。
    • 如果联系是一对一:可以和任意一端实体集转换得到的关系模式合并。方法:在实体集转换得到的关系模式中增加另一端实体集的码。
    • 一对多:和多端实体集转换得到的关系模式合并。方法:在多端实体集转换的关系模式中,增加一端实体集的码。
    • 多对多:该联系集转换成独立的关系模式,该关系模式的属性由它所关联的实体集的码和联系本身的属性构成,实体集的码联合起来构成该关系模式的码。

5. 关系的完整约束性

  1. 完整性约束是一组规则,用于限定数据库中的数据和现实生活中的数据是一致的。
  2. 关系的完整性约束:
    • 实体完整性
    • 参照完整性
    • 用户自定义的完整性
  3. 空值:“缺失的值”。允许元组在某些属性上取空值非常简单,商品化的DBMS都支持。空值不能参与运算,比较结果只能是“不知道”。
  4. 实体完整性规则:关系R的所有元组在主码上的值必须唯一,并且在主码的任意属性上都不能取空值。///是对关系主码取值的基本限制,又称主码约束。
  5. 外码:如果FK是关系R的属性集,并且不是R的码,但是FK与关系R‘的主码K’对应,则称FK是关系R的外码。
    • 其中R是参照关系,R‘是被参照关系(R与R’不一定是不同关系),并称FK参照R‘的主码K’。
  6. 参照完整性规则:如果属性FK是关系R的外码,它参照关系S的主码$K_S$,如果R的任何元组在FK上的值等于S的某个元组在主码$K_S$上的值,或者为空值。///对外码取值的限制。
  7. 用户自定义规则:反映特定数据库所涉及的数据必须满足的语义约束条件。由于不存在一般性规则,这些约束条件必须由用户根据实际问题的语义指定。

6. 关系代数的五种基本运算

  1. 基本运算符:选择、投影、并、差、笛卡尔积。
  2. 附加的运算符:交、除、连接、自然连接。
  3. 选择运算:设R是一个关系,F是一个公式,涉及(1)运算对象,他们是常量或属性名;(2):算术比较运算符$<、\leq、=、\geq、>、\neq$;(3):逻辑运算符$\bigwedge、\bigvee、 \neg \ $。
    • $\sigma_F®$:得到的是R中使得公式F为真的元组t的集合。元组t使得公式F为真,指当我们将F中所有的属性名用t的对应属性值替换时,公式F为真。$\sigma_F®={t|t \in R \bigwedge F(t) }$。
    • 选择的结果仍然形成一个新的关系,它与R具有相同的属性。
  4. 投影运算:设R是一个n元关系,$A_1,…,A_k \ (k \leq n)$都是R的属性。关系R在属性$A_1,…,A_k$上的投影记作$\pi_{A_1,…,A_k}®$,它是满足如下条件的k-元组$(a_1,…,a_k)$的集合:存在R中的元组u,对于$1 \leq i \leq k$,u在属性$A_i$上的值等于$a_i$。设u是R的元组,$u[A_1,…,A_k]$表示u在属性$A_1,…,A_k$上的值形成的k元组,则$\pi®={t|(\exists u)(u \in R \bigwedge t=u[A_1,…,A_k])}$。
    • 可能会出现重复行,投影运算会删除重复行。
  5. 并运算:要求参与运算的两个关系R和S具有相同的属性,并且对应的属性含义相同,$R \cup S = {t|t \in R \or t \in S }$。
  6. 差运算:要求参与运算的两个关系R和S具有相同的属性,并且对应的属性含义相同,$R-S={t|t \in R \and t \notin S}$。
  7. 笛卡尔积运算:设R和S分别为n元和m元关系。R和S的笛卡尔积表示$R \times S$,他是一个(m+n)-元关系,其每个元组前n个分量是关系R的一个元组,后m个分量是关系S的一个元组。如果属性A同时出现在R和S中,则$R \times S$中分别用R.A和S.A表示,以示区别。设$u=(u_1,…,u_n),\ v=(v_1,…,v_m)$。$u$和$v$的串接定义为$\overbrace{uv} = (u_1,…,u_n,v_1,…,v_m)$。于是$R \times S = {t|(\exists u)(\exists v)(u \in R \and v \in S \and t= \overbrace{uv})}$。

7. 附加的关系运算

  1. 交运算:设R和S是具有相同属性的关系,记作$R \cap S$。$R \cap S = {t|t \in R \and t \in S} = R-(R-S)$。
  2. 除运算:设R是n元关系,S是m元关系,其中n>m,并且$S \neq \phi$。设S的所有属性都在R中;设R的属性为$A_1,…,A_{n-m},A_{n+m_1},…,A_n$,S的属性为$A_{n-m+1},…,A_n$;关系$R \div S$是$A_1,…,A_{n-m}$上的关系。关系$R \div S$是满足如下条件的(n-m)-元组$(a_1,…,a_{n-m})$的集合:
    • 对于S中的每个元组$(a_{n-m+1},…,a_n)$,元组$(a_1,…,a_{n-m},a_{n-m+1},…,a_n)$中,令$X={A_1,…,A_{n-m}}, \ Y={A_{n-m+1},…,A_n }$,则R可以记为$R(X, Y)$,S记为$S(Y)$,$R(X,Y) \div S(Y)=P(X)$。

8. 关系代数表达查询

4. 关系数据库标准语言SQL

1. SQL概述

2. 数据类型

3. 模式的定义和删除

4. 表的定义和删除

5. 索引的创建和删除

6. SELECT语句介绍

7. 简单查询

8. 排序和分组

9. 连接查询

10. 嵌套查询

11. 集合查询

12. 数据更新

13. 视图

14. 嵌入式SQL

15. 不使用游标的SQL语句

16. 使用游标的SQL语句

5. 完整性

1. 完整性概述

2. 实体完整性

3. 参照完整性

4. 用户自定义的完整性

5. 触发器

6. 安全性

1. 安全性概述

2. 用户标识与鉴别

3. 自主存取权限

4. 强制存取控制

5. 视图与授权

6. 其他安全手段

7. 关系数据库设计理论

1. 问题提出

2. 函数依赖

3. Armstrong公理

4. 属性集的闭包

5. 函数依赖集的极小覆盖

6. 关系模型的范式

7. 保持无损连接的分解

8. 保持函数依赖的分解

9. 分解成高级范式

10. 在设计中使用规范化理论

8. 数据库设计

1. 数据库设计概述

2. 需求分析

3. 概念结构设计

4. 逻辑结构设计

5. 物理结构设计

6. 数据库的实施和维护

9. 查询处理与优化

1. 查询处理概述

2. 选择运算的实现

3. 连接运算的实现

4. 查询优化概述

5. 代数优化

10. 事物与并发控制

1. 事物

2. 并发控制概述

3. 封锁及封锁协议

4. 活锁与死锁

5. 并发调度的可串行化

6. 两阶段封锁

7. 多粒度封锁

11. 数据库恢复技术

1. 数据库恢复概述

2. 存储器的类型

3. 基于日志的恢复技术

4. 基于检查点的恢复技术

5. 介质故障恢复技术

6. 其他恢复技术

12. 补充说明

  1. 关系代数

    • 关系代数显式的定义了一些关系运算
    • 关系运算的运算对象和运算结果都是关系
    • 查询用关系代数表达事表示
    • 更新用关系代数表达式向关系变量的赋值表示
  2. 关系演算

    • 关系演算并不显式定义基本运算,而是用一个逻辑公式表示查询结果必须满足的条件
    • 元组关系演算
    • 域关系演算

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!