回顾

数据模型的三要素

  • 数据结构(静态特性)
    • 关系数据模型--关系
  • 数据操作(动态特性)
    • 关系数据模型--关系操作
  • 完整性约束(制约与依存)
    • 关系数据模型--三类完整性约束

7.1关系数据结构--关系

现实世界的实体以及实体间的各种联系均用关系来表示

  • 是一组具有相同数据类型的值的集合
  • 例如:
    • 整数
    • 实数
    • 介于某个取值范围的整数
    • 指定长度的字符串集合
    • {‘男’,‘女’}

笛卡尔积

基数

关系

关系是笛卡尔积的有一定意义的、有限的子集

关系的性质

  • 每一列中的值是同类型的数据,都来自同一个域。
  • 不同的列可以有相同的域,每一列称为一个属性,用属性名标识。
  • 元组中的每个分量是不可分的数据项
  • 关系中的各个元组是不同的,即不允许有重复的元组。
  • 分量的次序是无关紧要的。

关系模式

  • 对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。

关系模式和关系的区别和联系

  • 关系模式描述的是关系的静态结构信息,是对一个关系的“型”的描述,是相对固定的。关系是在关系模式约束之下的若干实体的集合,实体的数量是随时间变化的,但这种变化必定在关系模式的约束范围内。

7.2 完整性约束

三类完整性约束

实体完整性

  • 是指对关系中的每一个元组,其主键属性对应的各个分量不能为空值(NULL)。
  • 例如
    • 学生选课的关系:Reports(Sno,Cno,Grade)中,Sno和Cno共同组成为主关键字,则Sno和Cno两个属性都不能为空。
  • 注:实体完整性规则针对基本关系

参照完整性

  • 几点说明
    • 被参照关系和参照关系不一定是不同的关系
      • 例:Courses中的Cno与Pre_Cno
    • 被参照关系的主键和参照关系的外键必须定义在同一个(或一组)域上
    • 外键并不一定要与相应的主键同名
      • 例:Teachers中的Tno与Department中的Dheader
    • 当外键与相应的主键属于不同关系时,往往取相同的名字,以便于识别

用户定义完整性

  • 用户根据具体应用而针对某一具体数据附加的约束条件,也称为域完整性。
  • 域完整性限制了某些属性中出现的值,把属性限制在一个有限的集合中。
  • 例如
    • 如果属性类型是整数,那么它就不能是101.5或任何非整数。
  • 说明:现在的商品化RDBMS提供了定义和检查这类完整性约束的机制

7.3 关系操作--关系代数

关系操作

  • 对关系进行操作,且其操作的对象和结果都是关系(集合)。
  • 主要有查询操作(选择、投影、连接、除、并、交、差等)和更新操作(增加、删除、修改等)

关系操作的表示方式

  • 关系代数
    • 用代数运算来表达关系的查询要求和条件
  • 关系演算
    • 用谓词来表达关系的查询要求和条件
    • 按照谓词变元的基本对象不同,可分为元组关系演算和域关系演算
  • SQL(Structure Query Language)
    • 是介于关系代数和关系演算之间的关系数据语言
  • 关系代数是一种抽象的查询语言,是关系数据操作语言的传统表达方式
  • 关系代数的运算对象是关系,运算结果也是关系
  • 可分为两类:
    • 传统的集合运算:并、交、差、笛卡尔积
    • 专门的关系运算:投影、选择、连接、除法

定义

传统的集合运算--二目运算

例题

例题4:求并、交、差

广义笛卡尔积

专门的关系运算

选择运算

投影运算

连接运算

除法运算

象集

除法运算

7.4 查询优化

11

11

总结

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐