zoukankan      html  css  js  c++  java
  • 关系模型之基本概念

    关系模型简述

    提出

    • 最早由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将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性

    回顾

  • 相关阅读:
    PHP保留小数的相关方法
    ASP.NET Core MVC 之过滤器(Filter)
    ASP.NET Core MVC 之控制器(Controller)
    ASP.NET Core MVC 之视图组件(View Component)
    ASP.NET Core MVC 之局部视图(Partial Views)
    标签助手(TagHelper)
    ASP.NET Core MVC 之布局(Layout)
    ASP.NET Core MVC 之视图(Views)
    ASP.NET Core MVC 之模型(Model)
    九卷读书:淘宝从小到大的发展 -重读《淘宝技术这十年》
  • 原文地址:https://www.cnblogs.com/thrseven/p/15265207.html
Copyright © 2011-2022 走看看