关系数据库

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

关系

  1. 域:是一组具有相同关系数据类型的值的集合

  2. 笛卡尔积:域上的一种集合运算

    1. 元组:笛卡尔积中每一个元素\((d_1,d_2,d_3\cdots ,d_n)\)称之为一个\(n\)元组
    2. 分量:笛卡尔积元素\(d_1,d_2,d_3 \cdots,d_n\)中的一个值\(d_i\)称之为一个分量
    3. 基数:一个域允许的不同取值个数称之为基数
  3. 关系:\(D_1 \times D_2 \times \cdots \times D_n\)的子集称之为域\(D_1,D_2,\cdots ,D_n\)上的关系,表示为\(R(D_1,D_2,\cdots ,D_n)\)。其中\(R\):关系名,\(n\):关系的目或度

    1. 候选码:若关系中的某一属性组能唯一地标识一个元组,而其子集不能,则称该属性组为候选码
    2. 主码:若一个关系有多个候选码,则选定其中一个为主码
    3. 主属性:候选码的主属性称之为主属性
    4. 不包含在任何候选码中的属性称之为非主属性或者非码属性

    注意:

    • 笛卡尔积可表示为一张二维表,表中的每行对应一个元组,表中的每列的值来自用一个域
    • \(D_i(i=1,2,3 \cdots,n)\)为有限集,其基数为\(m_i(i=1,2,3\cdots,n)\),则\(D_1 \times D_2 \times \cdots \times D_n\)的基数\(M\)\(\prod_{i = 0}^{n}m_i\)
    • 一般情况下,候选码只包含一个属性,但在极端的情况下,关系模式的所有属性都是这个关系的候选码,称之为全码。
    • 关系可以有三种类型:基本类型(通常称之为基本表或者基表)、查询表和视图表。

基本关系的6条性质

  1. 列是同质的
  2. 不同的列可出自同一个域,其中的每一列称之为一个属性,不同的属性要给予不同的属性名
  3. 列的顺序无所谓,列的次序可以任意交换
  4. 任意两个元组的候选码不能相同
  5. 行的顺序无所谓,行的次序可以人以交换
  6. 分量必须取原子值,及每一个分量都必须是不可分的数据项(这是规范条件中最基本的一条)(理解:不能表中有表)

关系模式

  1. 关系模式:对关系的描述、静态的、稳定的。

    关系可以形式化第表示为:\(R(U,D,DOM,F)\),俗称为五元组。\(R\):关系名,\(U\):组成改关系的属性名集合,\(D\)\(U\)中属性所来自的域,\(DOM\):属性向域的映像集合,\(F\):属性间数据的依赖关系集合

  2. 关系:关系模式在某一时刻的状态或内容,动态的、随时间不断变化的。

基本关系的6条性质

关系数据库的型也称为关系数据库模式,是对关系数据库的描述;关系数据库的值是这些关系模式在某一时刻对应关系的集合,通常称之为关系数据库。

注意:关系模式、关系、关系数据库模式、关系数据库之间的联系

关系操作

基本关系操作

​ 常用的关系操作:查询、插入、删除、修改

  1. 查询可以分为:选择、投影、连接、除、并、差、交、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作,交、除、连接是3种复合操作。
  2. 数据更新:插入、删除、修改
  3. 关系操作的特点:集合操作方式,即操作的对象和结果都是集合,也称为一次一集合的方式。

关系数据语言

  1. 关系代数语言:用对关系的运算来表达查询要求。 代表:ISBL
  2. 关系演算语言:用谓词来表达查询要求
    1. 元组关系演算语言:谓词变元的基本对象是元组变量。 代表:APLHA, QUEL
    2. 域关系演算语言:谓词变元的基本对象是域变量。 代表:QBE
  3. 具有关系代数和关系演算双重特点的语言。 代表:SQL(Structured Query Language)

关系的完整性

  1. 实体完整性规则:若属性A(指一个或者一组属性)是基本关系R的主属性,则属性A不能去空值。所谓的空值是指“不知道”或者“不存在”或者“无意义”的值。

    实体完整性规则说明如下:

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

    ​ 实体完整性和参照完整性:关系模型必须满足的完整性约束条件,称为关系的两个不变性。

    外码:设\(F\)是基本关系\(R\)的一个或者一组属性,但是不是关系\(R\)的码;\(K_s\)是基本关系\(S\)的主码。如果\(F\)\(K_s\)相对应,则称\(F\)\(R\)的外码,并称基本关系\(R\)为参照关系(Referencing Relation)基本关系\(S\)称为被参照关系(Referenced Relation)或目标关系(Target Relation).

    注意:

    1. 参照关系和被参照关系可以是一个关系。例如:学生中的班长学号参照学生好

    2. 参照关系参照被参照关系,参照关系中的外码是被参照关系中的主码

      参照完整性规则:若属性(或者属性组)\(F\)是基本关系\(R\)的外码,它与基本关系\(S\)的主码\(K_s\)相对应,则对于\(R\)中的每一个元组在\(F\)上的值必须:

      • 或者取空值(\(F\)的每个属性值均为空值)
      • 或者等于\(S\)中某个元组的主码值。

      注意:如果外码是主属性,不可以取空值,否则违反了实体完整性。

  3. . 用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束

关系代数

关系代数是一种抽象的查询语言,是用于对关系的运算来表达的。
传统的集合运算时二目运算:并、差、交、笛卡尔积
专门关系运算符:选择、投影、连接、删除

传统的集合运算

这关系\(R,S\)具有相同的目\(n\),且相应的属性取自同一个域,\(t\)时元组变量,\(t\in R\)表示\(t\)\(R\)的一个元组。

  1. 并(union)

    关系\(R\)与关系\(S\)的并记作:\(R\cup U=\{t|t\in R \vee t\in S\}\),其结果还是\(n\)目关系,由属于\(R\)或者属于\(S\)的元组组成

  2. 差(expect)

    关系\(R\)与关系\(S\)的差记作:\(R - U=\{t|t\in R \wedge t\notin S\}\),其结果还是\(n\)目关系,由属于\(R\)而不属于\(S\)的所有元组组成。一般用于否定查询

  3. 交(intersection)

    关系\(R\)与关系\(S\)的交记作:\(R\cap U=\{t|t\in R \wedge t\in S\}\),其结果还是\(n\)目关系,由属于\(R\)并且属于\(S\)的元组组成。关系的交可以用差来表示:\(R\cap S = R - (R-S)\)

  4. 笛卡尔积(cartesian product)

    这里的笛卡尔积应该是广义上的笛卡尔积,因为这是笛卡尔积的元素是元组。
    两个分别为\(n\)目和\(m\)目的关系\(R\)\(S\)的笛卡尔积是一个\((n+m)\)列的元组的集合。若\(R\)\(K_1\)个元组,\(S\)\(K_2\)个元组,,则关系\(S\)和关系\(R\)的笛卡尔积有\(K_1 \times k_2\)个元组,记作:\(R \times S = \{ t_r^\frown {t_s} |t_r \in R \wedge t_s \in S\}\)

专门的关系运算

补充知识

  • 设关系模式为\(R(A_1,A_2,A_3,\cdots,A_n)\),它的一个关系设为\(R\)\(t \in R\)表示\(t\)\(R\)的一个元组。\(t[A_i]\)则表示元组\(t\)中相应于属性\(A_i\)的一个分量。
  • \(A=\{ A_{i1},A_{i2},A_{i3},\cdots ,A_{ik} \}\),其中\(A_{i1},A_{i2},A_{i3},\cdots ,A_{ik}\)\(A_1,A_2,A_3,\cdots,A_n\)中的一部分,则\(A\)称为属性列或者属性组。\(t[A]=(t[A_{i1}],t[A_{i2}],t[A_{i3}],\cdots ,t[A_{ik}])\)表示元组\(t\)在属性列\(A\)上诸分量的集合。\(\overline{A}\)则表示\(\{A_1,A_2,A_3,\cdots,A_n\}\)中去掉\(\{ A_{i1},A_{i2},A_{i3},\cdots ,A_{ik} \}\)后剩余的属性组。
  • 给定一个关系\(R(X,Z)\)\(X\)\(Z\)为属性组。当\(t[X]=x\)时,\(x\)\(R\)中的象集定义为:\(Z_x=\{t[Z]|t\in R,t[X] = x \}\)。它表示\(R\)中属性组\(X\)上值为\(x\)的诸元组在\(Z\)上分量的集合。
  1. 选择操作:又称之为限制操作,是从关系\(R\)中选取是逻辑表达式\(F\)为真的元组,是从行的角度进行的运算,记作:\(\sigma _F(R)=\{t|t\in R \wedge F(t)='真' \}\)。其中\(F\)是选择条件,是逻辑表达式。

  2. 投影:从关系\(R\)中选择出若干属性列组成新的关系,是从列的角度进行运算,但是投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。记作:\(\prod _A(R)=\{t[A]|t\in R \}\),其中\(A\)\(R\)中的属性列。

  3. 连接:也称为\(θ\)连接。它是从两个关系的笛卡尔积中选取属性满足一定条件的元组,记作:\(R \Join_{AθB} S=\{ t_r^\frown {t_s}|t_r\in R\wedge t_s\in S \wedge t_r[A]θt_s[B] \}\)。连接操作\(=\)先笛卡尔积,再选择。

    • 等值连接:\(θ\)\(“=”\)的连接运算,它是从关系\(R,S\)的广义笛卡尔积中选取\(A,B\)属性值相等的元组
    • 自然连接:是一种特殊的等值连接。两个关系中进行比较的分量必须是相同的属性组,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
    • 外连接:如果把悬浮元组(被舍弃的元组)也保存在结果中,而在其他属性上填空值(NULL),那么这种连接称之为外连接。
    • 左外连接:如果只保留左边关系\(R\)中的悬浮元组称之为左外连接
    • 右外连接:如果只保留右边关系\(S\)中的悬浮元组称之为右外连接
  4. 除运算:设关系\(R\)除以关系\(S\)的结果为关系\(T\),则\(T\)包含所有在\(R\)但不在\(S\)中的属性及其值,且\(T\)的元组与\(S\)的元组的所有组合都在\(R\)中,是同时从行和列的角度进行运算。一般用来查询全部。

    下面用象集来定义除法:
    给定关系\(R(X,Y)\)\(S(Y,Z)\),其中\(X,Y,Z\)为属性组。\(R\)中的\(Y\)\(S\)中的\(Y\)可以有不同的属性名,但必须来自同一个域。
    \(R\)\(S\)的除运算得到一个新的关系\(P(X)\)\(P\)\(R\)中满足下列条件的元组在\(X\)属性列上的投影:元组在\(X\)上分量值\(x\)的象集\(Y_x\)包含\(S\)\(Y\)上的投影的集合。记作:\(R\div S=\{t_r[X]|t_r \in R\wedge \prod_Y(S)\subseteq Y_x \}\)。其中\(Y_x\)\(x\)\(R\)中的象集,\(x=t_r[X]\)
    例如:设关系\(R,S\)分别为图2.9中的\((a)\)\((b)\)\(R\div S\)的结果为图2.9\((c)\)

    在关系R中,A可以取四个值\({a_1,a_2,a_3,a_4}\),其中\(a_1\)的象集为 \({(b_1,c_2),(b_2,c_3),(b_2,c_1)}\);\(a_2\)的象集为 \({(b_3,c_7),(b_2,c_3)}\)\(a_3\)的象集为 \({(b_4,c_6)}\)\(a_4\)的象集为 \({(b_6,c_6)}\)
    \(S\)\((B,C)\)上的投影为\({(b_1,c_2),(b_2,c_1),(b_2,c_3) }\)只有\(a_1\)的象集包含了\(S\)\((B,C)\)属性组上的投影,所以\(R÷S ={a_1}\)

posted @ 2021-04-06 14:51  h星宇  阅读(485)  评论(0编辑  收藏  举报