阅读 108

关系数据库

关系数据库

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

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

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

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

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

  • 关系

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

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

    • 关系必须是有限集合

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

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

    • 基本类型

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

    • 查询表

      查询结果对应的表

    • 视图表

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

    • 候选码

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

    • 主码

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

    • 主属性

      候选码的属性称为主属性

    • 非主属性

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

    • 全码

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

    • 域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

    • 关系类型

    • 关系限定和扩展

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

    • 关系模式

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

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

      可以表示为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

      • 笛卡尔积

    • 插入、修改、删除操作

    • 关系数据语言分类

      • 元组关系演算语言ALPHA、QUEL

      • 域关系演算语言QBE

      • 关系代数语言ISBL

      • 关系演算语言

      • 具有关系代数和关系演算特点的SQL

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

    关系完整性

    • 实体完整性

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

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

    • 参照完整性

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

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

    • 用户定义的完整性

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

    关系代数

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

    • 关系代数三大要素

      • 运算对象

      • 运算符

      • 运算结果

    • 运算符类型

      • 括号最高

      • 单目运算符级别最高 选择、投影、除

      • 笛卡尔积和连接

      • 并和差

      • 选择 ☌

        选择又称为限制,它是在关系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属性值满足比较关系的元组

      • 除 ÷

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

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

      • 悬浮元组

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

      • 左外连接

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

      • 右外连接

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

      • 等值连接

        θ为“=”时的θ连接

      • 自连接

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

      • 外连接

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

      • 并 ∪

        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 = { tr ts | tr∈R Λ ts∈S }

      • 集合运算符

        将关系看成元组

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

      • 专门的关系运算符

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

        前题条件:
        关系模式为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上分量集合

      • 运算符优先级

      • 重命名

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


      文章分类
      后端
      文章标签
      版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
      相关推荐