• 关系模型之基本概念


    关系模型简述

    提出

    • 最早由E.F.Cod在1970年提出
    • 是从表( Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行
      数学化严格定义基础上,引入集合理论与逻辑学理论提出的
      *是数据库的三大经典数据模型之一,也是现在大多数商品化数据库系统所
      仍然使用的数据模型
    • 标准的数据库语言(SQL语言)是建立在关系模型基础之上的,数据库领域
      的众多理论也都是建立在关系模型基础之上的

    研究内容

    • 形象地说,一个关系( relation)就是一个 Table
    • 关系模型就是处理 Tablel的,它由三个部分组成
      • 描述DB各种数据的基本结构形式( Table/ Relation
      • 描述 Table与 Table之间所可能发生的各种操作(关系运算)
      • 描述这些操作所应遵循的约束条件(完整性约束)
        就是要学习: Table1如何描述,有哪些操作、结果是什么、有哪些约束等?

    三要素

    • 基本结构:Realtion/Table
    • 基本操作:Relation Operator
    • 完整性约束:实体完整性,参照完整性和用户自定义完整性

    关系模型与数据库语言的关系

    • 关系运算:关系代数和关系演算;关系演算:元组演算和与域演算.
    • 关系代数示例:
    • 元组演算示例:
    • 域演算示例:

    关系的定义

    表的基本要素构成

    1. 列的取值范围"域(Domain)"
      • 一组值的集合,这组值具有相同的数据类型
      • 如整数的集合、字符串的集合、全体学生的集合
      • 再如,由8位数字组成的数字串的集合,由0到100组成的整数集合
      • 集合中元素的个数称为域的基数( Cardinality)
    2. 元组及所有可能的元组:笛卡儿积
    • 一组域D1×D2×...×Dn ={(d1,d2,...dn|di∈Di,i=1,...,n)}
    • 笛卡尔积的每个元素(d1,d2,...dn称作一个n-元组(n-tuple)
    • 元组(d1,d2,...dn)的每一个值di叫做一个分量(component)
    • 元组(d1,d2,...dn)是从每一个域任取一个值的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
    • 若Di的基数为mi,则笛卡尔积的基数,即元组的个数为
          m1</sub.× m2 ×...× mn

    关系

    • 一组域D1,D2,...,Dn的笛卡尔积的子集
    • 笛卡尔积中具有某一方面意义的那些元组被称作一个关系( Relation)
    • 由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名
      字,该名字即为属性名。
    • 关系模式:

    关系模式与关系

    • 同一关系模式下,可有很多的关系
    • 关系模式是关系的结构,关系是关系模式在某一时刻的数据
    • 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的

    关系特性

    列是同质:即每一列中的分量来自同一域,是同一类型的数据

    不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予
    不同的属性名。

    • 关系模式RA:D1,A2:D2,…An:Dn)中,A(=1,n)必须是不同的,而
      D(=1,n)可以是相同的
    • 例,我们定义一个域为 Person=所有男人、女人和儿童的集合={李基,张
      鹏,王芳,刘玉,李健,张睿,张峥},则下述“家庭”关系的三个列将来自同
      一个域 Person,因此需要不同的属性名“丈夫”“妻子"“子女”以示区分
    • 列位置互换性:区分哪一列是靠列名
    • 行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)
      关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分
    • 如下面两个关系是完全相同的关系

    元组

    *理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有
    相同的两个元素);现实应用中,表( Table)可能并不完全違守此特性。

    • 元组相同是指两个元组的每个分量都相同。

    属性

    • 属性不可再分性:有被称为关系第一范式
    • 主属性与非主属性
      • 包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性
      • 如“选课”中的S#,C#为主属性,而 Sname, Cname, Grade!则为非
        主属性
      • 最简单的,候选码只包含一个属性
      • 最极端的,所有属性构成这个关系的候选码,称为全码(AlI-Key).
        • 比如:关系“教师授课”(T#,C#)中的候选码(「T,C护就是全码。

    • 候选码/候选键
      • 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
      • 例如:“学生(S, Sname,Sage, Sclass)”,S#就是一个候选码,在此关系中,任何两个元组的S#是一定不同的,而这两个元组的 Sname,Sage, Sclass都可能相同(同名、同龄、同班),所以S#是候选码。
      • 再如:“选课(S#,C, Sname, Cname, Grade)”,(S#,C胡)联合起来是一
        个候选码
    • 主码/主键
      *当有多个候选码时,可以选定一个作为主码。
      *DBMS以主码为主要线索管理关系中的各个元组。
      *例如可选定属性S作为“学生”表的主码,也可以选定属性组( Sname,Address)作为“学生”表的主码。选定 EMPID为 Employee的主码。
    • 外码/外键
      • 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
      • 例如“合同”关系中的客户号不是候选码,但却是外码。因它与“客户”关系中的候选码“客户号”相对应。
      • 两个关系通常是靠外码连接起来的。

    小结

    关系完整性

    实体完整性

    • 关系的主码中的属性值不能为空值;
    • 空值:不知道或无意义的值;
    • 意义;关系中的元组对应到现实世界相互之间可区分的一个个个体,这些个体是通过主码来唯一标识的;若主码为空,则出现不可标识的个体,这是不容许的。

    参照完整性

    用户自定义完整性

    • 用户针对具体的应用环境定义的完整性约束条件
    • 如S#要求是10位整数,其中前四位为年度,当前年度与他们的
      差必须在4以内
    • 再如:

    DBMS对关系完整性的支持

    • 实体完整性和参照完整性由DBMS系统自动支持
    • DBMS系统通常提供了如下机制:
      • (1)它使用户可以自行定义有关的完整性约束条件
      • (2)当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性

    回顾

  • 相关阅读:
    Cglib的动态代理
    idea中隐藏.idea文件夹和.iml文件
    JDBC工具类创建及使用
    JDBC的配置及使用入门
    mybatis的入门
    动态代理的具体实现
    【Flask】WTForms基本使用
    【Flask】Flask-Migrate基本使用
    【Flask】Flask-Sqlalchemy使用笔记
    【Flask】Sqlalchemy 子查询
  • 原文地址:https://www.cnblogs.com/Zigzag37/p/15265207.html
Copyright © 2020-2023  润新知