database-theory-2

database-theory-2

Charles Lv7

关系数据库

关系模型的基本概念

  • 域(Domain)

  • 定义:一组具有相同数据类型值的集合。例如,整数,实数,{0,1}等。

  • 元组和分量

    • 定义:给定一组域D1 , D2 ,…, Dn,这些域中可以有相同的。 D1 , D2 ,…, Dn的笛卡尔积(Cartesian Product)为: D1×D2×…×Dn = {(d1 , d2 , … , dn) | di∈Di , i=1,…,n}。 笛卡尔积的每个元素(d1 , d2 , … , dn)称作一个n元组 (n-tuple)或简称元组。元组的每一个值di叫做一 个分量(component)。
  • 关系的定义:笛卡尔积D1×D2×…×Dn的子集叫做在域D1 , D2 ,…, Dn上的关系,用R(D1 , D2 ,…, Dn )表示。R是关系的名字,n是关系的度或目(Degree)。

    当n=1时称为单元关系,

    当n=2时称为二元关系,依此类推。

  • 关系的性质

    • 列是同质的(Homogeneous)即每一列中的分量来自同一域,是同一类型的数据;

    • 不同的列可出自同一域,每列必须有不同的属性名;

    • 列的顺序无所谓,即列次序可以互换;

    • 任意两个元组不能完全相同;

    • 行的顺序无所谓,即行次序可以互换;

    • 每一分量必须是不可再分的数据。满足这一条件的关系称作满足第一范式(1NF)的。

关系数据模型

关系模型的数据结构
  • 关系模型的数据结构—关系

    • 实体及实体之间的联系均用单一的数据结构—“关系”来表示。
  • 几个基本概念

    • 关系、域、n目关系、元组、属性。

    • 码(Key,键)

      • 候选码(Candidate key):关系中的某一属性组,若它的值唯一地标识了一个元组,并具有最小性,则称该属性组为侯选码。

      • 主码(Primary key,首码,码):若一个关系有多个侯选码,则选定其中一个为主码。

    • 主属性与非主属性

      • 码中的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性。
    • 关系数据库(关系数据库的型和值的概念)

      • 关系模式的集合构成关系数据库模式—关系数据库的型;

      • 关系的集合则构成具体的关系数据库—关系数据库的值。

关系模型的语义约束
  • 实体完整性

  • 参照完整性

  • 用户定义完整性

    • 用户针对具体的应用环境定义的完整性约束条件。
  • 实体完整性(Entity Integrity)

    • 要有属性或属性组合作为主码,主码值不可为空或部分为空。或定义为若属性A是关系R的主属性,则属性A不能取空值。

    • 空值的含义是:不知道或不存在的值。

  • 参照完整性(Referential integrity)

    • 外部码

      • 设F是基本关系R的一个或一组属性,但不是R的码。如果F与基本关系S的主码Ks相对应,则称F是关系R的外部码(Foreign Key),并称R为参照关系(Referencing Relation),S为被参照关系(Referenced Relation)或目标关系(Target Relation)。R和S不一定是不同的关系。
      • 目标关系S的主码Ks和参照关系的外部码F必须定义在一个域上。
    • 参照完整性

      • 如果关系R的外部码Fk与关系S的主码Pk相对应,则R中的每一个元组的Fk值或者等于S中某个元组的Pk 值,或者为空值。
关系模型的数据操作概述
  • 关系数据操作方式的特点是集合操作,“一次一集合”方式。操作的对象与结果都是集合。

  • 关系数据操作的基础是“关系运算”。关系运算方式有两种:代数方式,逻辑方式。

关系代数

  • 关系代数是三种关系运算中的基础方法,有9种:

    • 常规集合运算:并、差、交、广义笛卡儿积(乘) ;

    • 特有的关系运算:选择、投影、连接、自然连接、求商。

选择运算

image-20231105142105350

投影运算

image-20231105142133629

连接运算

image-20231105142201192

自然连接

image-20231105142222144

  • 复合连接:类似于自然连接,是连接运算结果不包含连接属性的自然连接。
  • 半连接:在R与S的连接运算结果中只保留R的属性列所得到的元组集合。

外连接

  • 定义:为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接。
  • 外连接 = 自然连接 + 失配的元组。
  • 外连接的形式:左外连接、右外连接、全外连接
    • 左外连接 = 自然连接 + 左侧表中失配的元组。
    • 右外连接 = 自然连接 + 右侧表中失配的元组。
    • 全外连接 = 自然连接 + 两侧表中失配的元组。

求商运算

image-20231105142528996

关系运算

元组关系演算

  • 元组演算表达式的形式:{ t |$\phi$ (t)},

其中 t 为元组变量, $\phi$ (t) 是元组关系演算公式,由原子公式和运算符组成;

image-20231105142742874

域关系演算

  • 域关系演算表达式的形式:

{ (x1,x2,…,xk)|$\phi$( x1 ,x2 , … , xk )}

其中$x_i$代表域变量, $\phi$ 为域关系演算公式,由原子公式和运算符组成。

  • 把谓词演算应用到关系运算中就是关系演算。

    • 以元组为变量,简称元组演算;

    • 以域为变量,简称域演算。

image-20231105143216856

三类关系运算的安全约束及等价性

  • 传统的集合运算是二目运算。除笛卡儿积外,要求参加运算的两个关系必须是同类关系,即两个关系具有相同的度“n”,且相对应的属性值必须取自同一个域。

  • 投影(Projection)

    • 定义:从关系R(U)中取若干属性列并删去重复行,组成新的关系。记作:

      $\Pi_A$® = { t[A] | t$\in$R , A$\in$U }

  • 连接(Join)

  • 定义:关系R和S在属性X和Y上的连接(X、Y是连接属性,即X、Y包含同等数量的属性,且相应的属性均具有共同的域),是从两个关系的广义笛卡儿积RxS中选取给定属性(X和Y)间满足$\theta$比较条件的元组。

  • 关系运算中把不产生无限关系和无穷验证的运算称为安全运算;其运算表达式称为安全表达式;对其所采取的限制称为安全约束。

  • 关系代数是安全运算,关系演算则不一定是。所以对关系演算要进行安全约束。

关系数据语言概述

  • 数据库数据语言从功能上一般分为以下几种:

  • 数据定义(描述)语言(Data definition or description language),包括模式DDL,外模式DDL,内模式DDL;

  • 数据操纵语言(Data Manipulation Language)DML

    • 数据库有四种基本操作:检索、插入、修改、删除

    • DML有联机交互方式和宿主语言方式。

      • 联机交互方式下的DML称为自含式语言,可独立使用,适用于终端直接查询;

      • 宿主语言方式下的DML称为嵌入式语言,依附于宿主语言,是嵌入高级语言的程序中,以实现数据操作。

  • 数据控制语言(Data Control Language)DCL,完成数据库的安全性控制、完整性控制、并发控制等。

  • 关系数据语言的特点

    • 一体化

      • 将数据的定义、查询、更新、控制等功能融为一体,只给用户提供一种称之为“查询语言”的语言。便于用户学习与使用。
    • 非过程化

      • 用户只需提出“干什么”,而“怎样干”由DBMS解决。所以语言操作简单,易学、易用。
    • 面向集合的存取方式

      • 操作对象是一个或多个关系,操作的结果也是一个新关系。
    • 既可独立使用又可与主语言嵌套使用

    • 关系数据语言优越性的根源:

    • 关系模型采用了最简单、最规范化的数据结构,这使DML大大简化;

    • 关系数据语言是建立在关系运算的数学基础上,可实现关系的垂直方向和水平方向的任意分割和组装操作,使得关系语言可随机地构造出用户需要的各种各样的新关系。

    • 关系数据语言的分类

      • 关系数据语言的核心是查询,所以又称为查询语言。而查询往往表示成一个关系运算表达式,因此关系运算是设计关系数据语言的基础,关系运算的分类也决定了关系语言的分类。
      • ISBL(Information System Base Language),关系代数语言的代表。英格兰底特律的IBM英国科学中心研究。应用于实验系统PRTV上。
      • QUEL(Query Language),基于元组演算的语言。美国加利福尼亚大学研制。用于Ingres数据库。
      • QBE(Query By Example),基于域演算的表格显示语言。用于QBE数据库。
      • SQL(Structured Query Language),介于关系代数与关系演算之间的语言,标准的关系数据语言。
  • Title: database-theory-2
  • Author: Charles
  • Created at : 2023-07-20 12:59:06
  • Updated at : 2023-11-05 14:34:13
  • Link: https://charles2530.github.io/2023/07/20/database-theory-2/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments