关系数据库

关系数据库应用数学方法来处理数据库中的数据,它是支持关系模型的数据库系统

“A Relational Model of Data for Shared Data Banks”论文1983年把它列为1958年以来的四分之一世纪中具有里程碑意义的25篇论文之一

关系数据结构以及形式定义

  • 关系模型的三个组成部分

    关系数据结构
    关系操作集合
    关系完整性集合

  • 关系

    关系模型的数据结构非常简单,只包含单一的数据结构——关系,在用户看来关系数据模型中数据的逻辑结构是一张二维表

    关系模型是建立在集合代数基础上的,

    • 域domain

      域是指一组具有相同数据类型数据的集合,比如整数、男女、小于25个字节的字符串

      由于域的值可以相同因此在域上添加一个名字,称为属性

    • 笛卡尔积

      笛卡尔积是域上的一种集合运算,所有域上的所有取值的集合就是笛卡尔积

      定义:给定一组域D1、D2...Dn,允许其中域相同,那么笛卡尔积就是:D1D2D3 = {(d1,d2...dn)} | di属于Di , i=1,2...n}

      每一个元素(d1,d2...dn)叫做一个n元组或者是元组
      元素中每一个值di叫做分量
      一个域允许不同取值个数称为这个域的基数

      例如,给出3个域:
      D1=导师集合SUPERVISOR={张清玫,刘逸}
      D2=专业集合SPECIALITY={计算机专业,信息专业}
      D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
      那么笛卡尔积的基数为223=12

    • 关系

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

      R为关系名称
      n为关系的目或度

      关系也是一个二维表,每行对应一个元组,每列对应一个域,每列称为属性

      有意义的子集的关系被取名为SAP

      • 候选码

        若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)

      • 主码

        若一个关系有多个候选码,则选定其中一个为主码

      • 主属性

        候选码的属性称为主属性

      • 非主属性

        不包含在候选码中的属性称为非主属性或非码属性

      • 全码

        所有属性都是这个关系模式的候选码

    • 关系类型

      • 基本类型

        通常又被为基本表或基表,是实际存在的表,它是实际存储数据的逻辑表示

      • 查询表

        查询结果对应的表

      • 视图表

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

    • 关系限定和扩展

      由于关系可以是一个无限集合

      • 关系必须是有限集合

      • 添加属性名来取消关系属性的有序性

        每一个列是同一类型的数据来自同一域
        不同列可以来自同一个域,不同属性要给予不同属性名
        列的顺序无所谓,次序可以任意
        行的顺序无所谓,次序可以任意
        元组中候选码不能相同
        分量必须是原子的,不能够再分

  • 关系模式

    关系模式型,关系是值,关系模式是对关系的描述

    关系是元组的集合因此关系模型必须指出这个元组集合的结构、属性、属性的域、属性与域之间的映像关系

    可以表示为R(U,D,DOM,F)
    R为关系,U为关系的属性名集合,DOM为属性向域的映像集合,F为属性间数据依赖关系集合

    关系通常可以简化为R(U)或者R(A1,A2...An)
    A1,A2...An为属性名

    关系模式是关系模型在某一个时刻的状态或内容,关系模式是静态的、稳定的而关系是动态的

  • 关系数据库

    关系数据库的型称为关系数据库模式,是对关系数据库的描述

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

  • 关系数据库的存储结构

    • 逻辑模型

      表示关系数据的逻辑迷行

    • 物理模型

      一个表对应一个操作系统文件,也可以是若干个大的文件自己划分文件空间、组织表、索引等存储结构

关系操作

操作的对象和结果都是集合,这种操作方式也称为一次一集合,非关系数据库模型的数据操作称为一次一记录

  • 查询操作

    • 选择select
    • 投影project
    • 连接join
    • 除divide
    • 并union
    • 差except
    • 交intersection
    • 笛卡尔积
  • 插入、修改、删除操作

  • 关系数据语言分类

    • 关系代数语言ISBL

    • 关系演算语言

      • 元组关系演算语言ALPHA、QUEL
      • 域关系演算语言QBE
    • 具有关系代数和关系演算特点的SQL

      SQL是结构化查询语言,是集查询、数据定义语言DDL、数据操纵语言DML、数据控制语言DCL一体的关系数据语言

关系完整性

  • 实体完整性

    若属性(指一个或一组属性)A是基本关系R的主属性,那么A不能取空值,所谓空值就是不存在或无意义的值

    实体完整性规则:
    实体完整性规则是针对基本关系而言的
    现实世界中实体是可区分的
    主码可作为唯一性标识
    主码中的属性即主属性不能取空值

  • 参照完整性

    若属性或属性组F是基本关系R的外码,它与基本关系S的主码K,相对应,基本关系R和S不一定是不同的关系。

    参照完整性规则:
    可以为空值
    是S中的某个元组的主码

  • 用户定义的完整性

    某一个应用涉及数据必须满足的语义要求,比如学生不能没有姓名这就是用户定义的完整性

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询

  • 关系代数三大要素

    • 运算对象
    • 运算符
    • 运算结果
  • 运算符类型

    • 集合运算符

      将关系看成元组

      前提条件:
      设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性来自同一个域,t是元组变量,t∈R表示t为R的一个元组

      • 并 ∪

        R ∪ S = { t | t∈R ν t∈S }
        由属于R和S中的元组组成

      • 差 -

        R-S = { t | t∈R Λ t∉S }

        属于R中但是不属于S中的元组

      • 交 ∩

        R ∩ S = { t | t∈R Λ t∈s }
        属于R又属于S中的元组组成

        也可以使用差集表示
        R∩S = R-(R-S)

      • 笛卡尔积 x

        R * S =

    • 专门的关系运算符

      将关系看成元组或者元组中的一列属性

      前题条件:
      关系模式为R(A1,A2...An),它的关系设为R。t∈R表示t是R的一个元组。t[Ai]表示元组t中相应于属性Ai的分量
      若A={Ai1,Ai2...Aik},其中Ai1,Ai2...Aik是A1,A2...Ak中一部分,A称为属性列或属性组。t[A] = (t[Ai1],t[Ai2]...t[Aik])表示元组t在属性列A上的分量集合,(上横线 + A)表示 {A1,A2...An}中去掉{Ai1,Ai2...Aik}后剩余的属性组
      R为n目关系,S为m目关系,tr∈R,ts∈S,(上横线 + tr ts)称为元组的连接或元组的串接
      给定一个关系R(X,Z),X和Z为属性组当t[X] = x时,x在R中的象集定义为Zx = { t[Z] | t∈R, t[X] = x },表示R中属性组X上为x的元组在Z上分量集合

      • 选择 ☌

        选择又称为限制,它是在关系R中满足条件的元组,记作
        ☌F(R)={ t | t∈R Λ F(t) = '真‘ }
        例子:
        ☌Sdept='IS'(Student)表示在Student中sdept属性等于IS的元组
        ☌Sage<20(Student)表示Student中sage小于20的元组

        F表示条件,它是一个逻辑表达式,逻辑取值为真或者假,

        X1θY1,θ是比较运算符可以是>、<、= 、<=、>=、<>、逻辑非¬、逻辑与∧、逻辑或∨

        X1和Y1是属性名、常量或者简单函数

      • 投影 Π

        从关系R上选择若干属性组成新的关系,记作
        ΠA(R) = { t[A] | t∈R }
        A为R中的属性列

        例子:
        ΠSname,sdept(Student)表示选择Stduent中sname的属性列和sdept的属性列,并且去掉这些属性列中重复的元组

      • 连接 ∞

        也称θ连接,从两个关系的笛卡尔积中选取属性间满足条件的元组。

        R∞S={trts | tr∈R Λ ts ∈S Λ tr[A]θts[B]},它的时候是从R中的A属性组上值与S中B属性值满足比较关系的元组

        • 等值连接

          θ为“=”时的θ连接

        • 自连接

          是特殊的等值联结,要求
          两个关系中比较的分量必须是同名的属性组,如果属性有多个那么多个属性列都得相等
          在结果中把重复的属性列去掉

        • 外连接

          如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接

          • 悬浮元组

            两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组

          • 左外连接

            左外连接只保留左边关系R中的悬浮元组

          • 右外连接

            右外连接只保留右边关系S中的悬浮元组

      • 除 ÷

        设关系R除以关系S结果为T,那么T中包含在R但不在S中的属性和值,且T的元组与S的元组所有组成是R

        计算过程:
        先求投影、找出象集相等的元组

    • 运算符优先级

      • 括号最高
      • 单目运算符级别最高 选择、投影、除
      • 笛卡尔积和连接
      • 并和差
  • 重命名

    ☌S(A1,A2...An)(R)
    将关系R重命名为S
    将关系各属性命名为A1、A2..An
    关系演算

posted @ 2021-04-26 19:33  -code-  阅读(438)  评论(0)    收藏  举报