2、关系数据库

关系数据库

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

  • 关系数据库系统是支持关系模型的数据库系统。

    (1)全部数据及其联系都被组织成关系的形式。每个关系模式都要用DDL语句形式定义。关系是关系模型基本的数据结构。
    (2)关系模型提供完备的DML,以支持对数据库的各种数据操作。关系DML按其表示查询的方式分为关系代数和关系演算两类。关系DML的存取方式面向集合,而且非过程性级别较高。数据操作是关系模型的重要组成部分,从关系概念模式中通过关系运算可以推导多个关系外模式;各种各样的数据查询实质上是基于一个或多个关系上的数据操作。
    (3)为了防止错误数据的出现,维护数据与现实世界的一致性,关系模型包含三类完整性约束规则,其中用户自定义的完整性约束规则可用语句来定义。

  • 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

关系模型的基本概念

  • 关系模型的数据结构非常单一,只包含单一的数据结构——关系。

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

  • 在用户看来,关系模型中数据的逻辑结构是一张二维表。

  • 1、域

    域是一组具有相同数据类型的值的集合。

    • {A,B,C},{广东,上海,北京}等都可以是域.
    • 每个域有域名,域中的数据个数称为域的基数.如:
      D1={王伟,李丽,张立强},表示姓名的集合.
      D2={男,女},表示性别的集合.
      D3={165,176,182},表示身高的集合.
      D1,D2,D3都是有限集.
  • 2、笛卡尔积

    给定一组域D1,D2,…,Dn,这些域中可以有相同的。则称 D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}为 D1,D2,…,Dn这组域的笛卡尔积。
    每一个元素(d1,d2,…,dn)称为一个n元组(n-tuple)或
    元组
    (Tuple) 。元组的个数称为笛卡尔积的基数。元素中的每一个值di称为元组分量,di必是Di中的一个值。n表示参与笛卡尔积的域的个数,称为目、元数或度。

    求基数(元组个数)和度数(域的个数):

image-20220616201530680image-20220616201612238
  • 笛卡儿积可表示为一个二维表,表中每行对应一个元组,每列对应一个域。

  • D1×D2×… ×Dn子集叫作在域D1,D2,…,Dn上的关系,表示为:
    R(D1,D2,…,Dn)

    这里R表示关系的名字,n是关系的目或度(Degree)
    笛卡尔积中每个元素是关系中的元组,用t表示。
    当n=1时,称为单元关系,
    当n=2时,称为二元关系。

  • 属性(Attribute)

    关系是笛卡尔积的有限子集,也是一个二维表。表的每行对应一个元组,表的每列对应一个域。 由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。 n目关系必有n个属性。

  • 候选码(Candidate Key)

    若关系中的某一属性组的值能唯一地标识一个元组,且其任何子集都不具备这一功能,则称该属性组为候选码。

  • 主码(primary Key)

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

  • 主属性(Prime Attribute)

    候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非码属性(Non-key Attribute)

  • 全码(All Key)

    若关系中的所有属性组是这个关系模式的候选码,称为全码。

    注:All-key关系模型的所有属性组组成该关系模式的 候选码,称为全码。即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码

  • 关键词简称为键。键由一个或几个属性组成
    关系中能够惟一标识元组的属性组合称为该关系的超键(Super key),其中可能含有多余的属性
    不含多余属性的超键称为候选键/码(Candidate key);用户可以从候选键中选定一个作为主键/码(Primary key)。如果不加说明,键是指主键/码。
    如果关系R的某个属性(组合)A不是R的主键,而是另一个关系S的候选键,则称A为R的外键/码(Foreign key)

  • 关系可以有三种类型:

    • 基本关系(基本表、基表)

      实际存在的表,是实际存储数据的逻辑表示

    • 查询表

      查询结果对应的表。

    • 视图表

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

image-20220616202711480
  • 关系模型的基本概念

    把关系看成是一个集合,集合中的元素是元组,每个元组的属性均相同。如果一个关系的元组个数是无限的,称无限关系;反之,称有限关系。

  • 基本关系的性质

    列是同质的,即每一列中的分量是同一类型的数据,来自同一个域
    不同的列可出自同一个域,称其中的每一列为一个属性 ,不同的属性要给予不同的属性名;
    列的顺序无所谓,即列的次序可以任意交换;
    任意两个元组不能完全相同

    • 因此一个关系模式至少存在一个候选码

    行的顺序无所谓,即行的次序可以任意交换

    • 关系是元组的集合,集合的元素是无序的
    • 关系模式是属性的集合

    分量必须取原子值,即每一个分量都是不可分的数据项。

    • 不允许表中有表

关系模型及其形式定义

  • 在数据库中要区分型和值;

  • 关系数据库中,关系模式是型,关系是值

  • 关系实质上是一个二维表,表的每一行为一个元组,每一列为一个属性。

  • 一个元组就是该关系所涉及的属性集的笛卡儿积的一个元素。

  • 关系是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。关系模式应能刻划出关系必须满足的一些完整性约束条件

  • R为关系模式名,U是一个属性集,D是U中属性的值所来自的域,Dom是属性向域的映射集合,F是属性间的依赖关系

    例:Student关系模式的定义
    Student(U,D,dom,F)
    U={sno,name,age}
    D={CHAR,INT}
    Dom={dom(sno)=dom(name)=CHAR,dom(age)=INT}
    F={sno→name, sno→age}
    关系模式通常简写为R(U),或R(A1,A2,…,An)

关系数据库

  • 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库

  • 关系数据库也有型和值之分。

  • 关系数据库的型称为关系数据库模式(Relational Database Schema),是对关系数据库的描述。包括若干域的定义以及在这些域上定义的若干关系模式。

  • 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称为关系数据库。

  • 关系模型给出了关系操作的能力的说明,但不对RDBMS语言给出具体的语法要求,也就是说,不同的RDBMS可以定义和开发不同的语言来实现这些操作。

关系操纵

  • 关系操作包括:

    查询
    更新

    增加(Insert)
    删除(Delete)
    修改(Update)

  • 常用的关系操作

    查询:选择、投影、连接、除、并、交、差
    数据更新:插入、删除、修改
    查询的表达能力是其中最主要的部分
    选择、投影、并、差、笛卡尔积是5种基本操作

  • 特点:

    关系操作采用集合操作方式。即操作的对象和结果都是集合。
    称为一次一集合——set-at-a-time的方式。

  • 关系代数语言

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

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

    • 元组关系演算语言

      谓词变元的基本对象是元组变量
      代表:ALPHA, QUEL

    • 域关系演算语言

      谓词变元的基本对象是域变量
      代表:QBE

  • 具有关系代数和关系演算双重特点的语言

    代表:SQL(Structured Query Language)

  • 共同特点:

    语言具有完备的表达能力;
    非过程化的集合操作语言;
    功能强;
    能够嵌入到高级语言中使用。

关系的完整性

  • 关系模型的完整性规则是对关系的某种约束条件,是关系数据库的数据和操作必须遵循的规则。

  • 关系数据库的数据和操作必须遵循的规则

    实体完整性(Entity Integrity)
    参照完整性(Referential Integrity)
    用户自定义完整性(User-Defined Integrity)

    前两项完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应由关系系统自动支持。

实体完整性

  • 实体完整性规则 若属性A (指一个或一组属性)是基本关系R的主属性,则属性A不能取空值。

    即关系模式R的主属性值不可为空
    指所有主属性均不可取空值,不仅仅是主码不可为空

image-20220616213103756

(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
(2) 现实世界中的实体都是可区分的,即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识
(4) 主码中的属性即主属性不能取空值。

参照完整性

关系间的引用

image-20220616213402095

外码

  • 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key)。
  • 基本关系R为参照关系\引用关系
  • 基本关系S为被参照关系(被引用关系)或目标关系。关系R和S不一定是不同的关系。
  • 显然,目标关系S的主码Ks和参照关系R的外码F必须定义在同一个(一组)域上。
image-20220616213708412image-20220616213817501image-20220616213931628
  • 说明:

    关系R和S不一定是不同的关系
    目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
    外码并不一定要与相应的主码同名
    当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别

参照完整性

  • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

    或者取空值(F的每个属性值必须取空值);
    或者等于S中某个元组的主码值。

image-20220616214959197image-20220616215104252

用户自定义完整性

image-20220616215216720

关系代数

概述

关系代数是一种抽象的查询语言,是用对关系的运算来表达查询的。其主要特点为:

关系为运算对象的一组运算集合。
集合操作为基本运算
运算结果仍是关系

关系代数的运算符:

1、传统的集合运算符:
并(∪)、交(∩)、差(-)、广义笛卡儿积(×)
2、专门的关系运算符:
选择(σ)、投影(π)、连接(∞)、除(÷)
3、算术比较符:
大于(>)、小于(<)、等于(=)、不等于(<>)、小于等于(≤)、大于等于(≥)
4、逻辑运算符:
与 ∧ 、或 ∨ 、非 ¬

传统的集合运算

image-20220616215539065image-20220616215639882

image-20220616215657716image-20220616215713387

image-20220616215727339image-20220616215740716

广义笛卡尔积

image-20220616215754906image-20220616215851839

专门的集合运算

image-20220616220125256image-20220616220145492image-20220616220426313image-20220616220438832

选择

image-20220616221225698image-20220616221254547image-20220616221325938image-20220616221349028

投影

image-20220616221428628image-20220616221443211image-20220616221520177image-20220616221545408

连接

θ连接
image-20220616221953463image-20220616222722707
等值连接
image-20220616223547548
自然连接
image-20220616223652441

等值连接与自然连接

image-20220616223733441
外连接
  • 在R和S做自然连接过程中,如果把该舍弃的元组也保存在新关系中,在新增加的属性上填上空值(NULL),那么这种连接就叫做外连接。如果只要保存R中要舍弃的元组就叫做左外连接;如果只保存S中要舍弃的元组要叫右外连接。
image-20220616223958935

image-20220616224051534image-20220616224637717image-20220616224807967image-20220616225108275image-20220616225408243

关系代数的基本运算

image-20220616225454006

关系代数实例

image-20220616225649295image-20220616225702648image-20220616225717689

版权声明:本文为hello_now原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。