• 《数据库系统概论》第二章笔记


    本章主要讲解关系模型的基本概念,即关系模型的数据结构、关系操作和关系的完整性。
    书上后面介绍关系代数和关系演算的两小节,省略了。实际应用中都用SQL的。

    2.1 关系数据结构及形式化定义

    2.1.1 关系

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

    以下介绍几个基本概念:

      • 一组具有相同数据类型的值的集合。可以理解为某列的值域,就是一个域
    • 笛卡儿积
      • 笛卡儿积是域上的一种集合运算。可以简化地理解为:多个列的全组合。
    • 关系
      • D1,D2,...,Dn的笛卡尔积的子集,称为域D1,D2,...,Dn上的关系
      • 表示为R(D1,D2,...,Dn),R表示关系的名字,n表示关系的目或度。

    关系能够唯一标识一个元组的最小属性组,称为候选码。“最小”指其子集不能标识

    若一个关系有多个候选码,则选定其中一个为主码(primary key)。

    候选码的各个属性称为主属性,其他称为非主(码)属性

    极端情况下,关系模式的所有属性是这个关系的候选码,称为全码

    关系有三种类型:

    • 基本关系(基本表、基表)
      • 是实际存在的表,是实际存储数据的逻辑表示;
    • 查询表
      • 是查询结果对应的表;
    • 视图表
      • 是由基本表或者其他视图表到处的表,是虚表,不对应实际存储的数据。

    基本关系的6条性质:

    • 列是同质的,即每一列中的分量,来自同一个域
    • 不同列可出现同一域,称其中的每一列为一个属性,不同的属性要给予不同的属性名
      • 比如,老师,学生,都来自人这个域,但是有不同的属性名
    • 列的顺序无所谓
    • 任意两个元组的候选码不能取相同的值
    • 行的顺序无所谓
    • 分量必须取原子值,即每一个分量都必须是不可分的数据项(也即第一范式)

    2.1.2 关系模式

    关系的描述称为关系模式。可简记为:关系名(属性名1,属性名2,...,属性名n)

    关系是关系模式在某一时刻的状态或内容。

    关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。

    2.1.3 关系数据库

    在一个给定的应用领域中,所有关系的集合构成了一个关系数据库。

    关系数据库也有型和值之分:

    • 关系数据库的型也称为关系数据库的模式,是对关系数据库的描述。包括:
      • 若干域的定义
      • 在这些域上定义的若干关系模式
    • 关系数据库的值是这些关系模式在某一时刻对应的关系的集合

    2.2 关系操作

    2.2.1 基本的关系操作

    常用的关系操作包括两大部分:

    • 查询(query)
    • 插入(insert)、删除(delete)、修改(update)

    查询操作可分为:

    • 选择(select)
    • 投影(project)
    • 连接(join)
    • 除(divide)
    • 并(union)
    • 差(except)
    • 交(intersection)
    • 笛卡儿积,等

    其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可用基本操作来定义和导出

    以下介绍几个操作:

    投影

    • 关系R上的投影,指从R中选出若干属性组组成新的关系。

    笛卡儿积

    • 两个关系的所有元组的全组合(ab,a来自关系A,b来自关系B)

    这里的笛卡儿积严格地讲是广义的笛卡儿积,因为这里笛卡儿积的用来组合的元素是元组,而不是单个域的值。

    连接

    • 指从两个关系的笛卡儿积中选取属性间满足一定条件的元组

    分类:

    • 非等值连接
      • 属性间满足的条件不是=。如 <
    • 等值连接
      • 属性间满足的条件是=
      • 即内连接(inner join)
    • 自然连接
      • 是一种特殊的等值连接。
      • 它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。

    等值连接会舍弃掉不相等的元组,称为悬浮元组

    如果把悬浮元组也保留在结果关系中,而在其他属性上填空值(null),这种连接称为外连接

    只保留左边关系(左表)的悬浮元组,称为左外连接(left outer join 或 left join)

    只保留右边关系(右表)的悬浮元组,称为右外连接(right outer join 或 right join)

    除运算

    定义:

    • 设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

    感觉除运算看定义有点讲不清,看个例子就明白了。

    除运算

    2.2.2 关系数据语言的分类

    早期的关系操作能力通常用代数或逻辑方式来表示,分别称为关系代数和关系演算。

    还有一种介于关系代数和关系演算之间的结构化查询语言(SQL)。

    因此关系数据语言可分为三类:

    • 关系代数语言
      • 用关系的运算来表达查询要求
    • 关系演算语言
      • 用为谓词来表达查询要求
    • 具有关系代数和关系演算双重特点的语言(例如SQL)

    2.3 关系的完整性

    关系模型中有三类完整性约束:

    • 实体完整性
    • 参照完整性
    • 用户定义的完整性

    实体完整性

    规则定义:

    • 若属性A是基本关系R的主属性,则A不能取空值(null)

    作用:

    • 保证关系数据库中每个元组都是可区分的,唯一的。

    参照完整性

    概念介绍:

    • 外码
      • 如果F是基本关系R的一个或一组非码属性,K是基本关系S的主码。如果F与K相对应,则称F是R的外码
    • 参照关系
      • 其中的基本关系R为参照关系
    • 被参照关系(目标关系)
      • 其中的基本关系S为被参照关系或目标关系

    规则定义:

    外码的值必须满足:

    • 或者取空值
    • 或者等于被参照关系中某一元组的主码值

    参照完整性定义了外码与主码之间的引用规则。

    用户定义完整性

    实体完整性和参照完整性

    • 是关系模型所要求的必须满足的约束条件。

    用户定义的完整性

    • 是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

    例如:学生表中,要求学生不能没有姓名,学生成绩取值范围为1~100,等

    关系模型应提供定义和检查这类完整性的机制,以便用统一的系统方法处理它们,而不需由应用程序承担这一功能。

  • 相关阅读:
    13之容器资源需求、资源限制及Metricserver(Heapster)
    04K8S之pod控制器
    08K8S之k8s认证和serviceaccount
    07K8S之Statefulset控制器
    [Database] Mongodb 分片集群
    IIS 配置.svc的MIME映射
    当前标识(IIS APPPOOL\ASP.NET v4.0)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 解决方案
    Kubernetes Dashboard 安装
    存储服务 使用S3存储桶上传文件以及使用CLI来访问S3服务
    Django使用pdfkit生成PDF文件提供下载
  • 原文地址:https://www.cnblogs.com/wchaos/p/9637880.html
Copyright © 2020-2023  润新知