第 2 章 关系模型介绍

2.1 关系数据库的结构

关系数据库由表的集合构成,每张表被赋予一个唯一的名称。

关系:表;元组:行;属性:列。

关系实例:一个关系的特定实例。

:关系的每个属性都存在一个允许取值的集合。

原子域:域中元素不可再分。

空值:特殊的值,表示值未知或并不存在。(尽量避免使用)

2.2 数据库模式

数据库模式:数据库的逻辑设计;

数据库实例:在给定时刻数据库中数据的一个快照。

2.3 码

一个关系中不可以有两个元组在所有属性上取值完全相同。

超码:若干属性的集合,这些属性组合在一起可以唯一标识出一个元组。

候选码:最小超码。

主码:被选中作为在一个关系中区分呢不同元组的主要方式的候选码。也成为主码约束。

主码应该选择其值从不变化或极少变化的属性。

外码约束:从 r1 关系的 A 属性集到 r2 关系的主码 B 的外码约束,表明在任何数据库实例中,r1 中每个元组对 A 的取值也必须是 r2 中某个元组对 B 的取值。

A 属性集被称为从 r1 引用 r2 的外码。 r1 关系为引用关系,r2 关系为被引用关系

引用完整性约束:要求引用关系中的任意元组在指定属性上出现的取值也必然出现在被引用关系中至少一个元组的指定属性上。

外码约束是引用完整性约束的一个特例。

2.4 模式图

image-20240101161218636

每个关系显示为一个框,关系名用灰色显示在顶部,并且在框内列出各属性。

主码属性用下划线标注。外码约束用从引用关系的外码属性指向被引用关系的主码属性的箭头表示。使用双箭头表示不是外码约束的引用完整性约束。

2.5 关系查询语言

查询语言:用户用来从数据库中请求获取信息的语言。

  • 命令式查询语言:执行特定的计算序列,更新状态变量;
  • 函数式查询语言:计算被表示为函数的求值,函数没有副作用,不更新程序状态;
  • 声明式查询语言:只需描述信息,而不给出获取信息的具体步骤。

2.6 关系代数

关系代数由一组运算组成,这些运算接受一个(一元)或两个(二元)关系作为输入,并生成一个新的关系作为其结果。

  • 选择运算:选出满足给定谓词的元组;
  • 投影运算:返回其参数关系但是滤掉了特定的属性;
  • 关系运算复合:关系运算的结果也是关系。关系代数运算的结果与其输入具有相同的类型,因此可以将关系代数运算复合在一起成为关系代数表达式
  • 笛卡尔积运算:有关系 r1(R1) 和 r2(R2),则 r1 X r2 就是这样一个关系 r(R):它的模式 R 是 R1 和 R2 的拼接。关系 r 包含所偶遇这样的元组 t:对于 t 存在 r1 中的一个元组 t1 和 r2 中的一个元组 t2,满足 t 和 t1 在 R1 的属性上取值相同,并且 t 和 t2 在 R2 的属性上取值相同;
  • 连接运算:本质上是从两个关系的笛卡尔积中选择符合指定谓词的元组;
  • 集合运算:交集、并集、差集(两个关系必须有相同的元数,且满足相容关系);
  • 赋值运算:将一个关系代数表达式中的一部分赋值给临时的关系变量,便于编写表达式;
  • 更名运算:为关系代数表达式的结果命名,可以实现对同一关系的不同次引用使用不同的名称,避免表达式歧义;
  • 等价查询:使用关系代数通过不同方式编写的多种查询,当其结果相同时,则称这些查询互相等价;数据库系统中查询优化器通常根据表达式所计算的结果,选择计算该结果的高效方式,而不是严格按照关系代数中的指定步骤查询。

第 3 章 SQL 介绍

3.1 SQL 查询语言概览

SQL 语言有几个部分:

  • 数据定义语言 (DDL):定义关系模式、删除关系以及修改关系模式;
  • 数据操纵语言 (DML):查询信息以及在数据库中插入、删除、修改元组;
  • 完整性:SQL DDL 包含定义完整性的命令;
  • 视图定义:SQL DDL 包含定义视图的命令;
  • 事务控制:SQL 包括定义事务的开始点和结束点的命令;
  • 嵌入式 SQL 和动态 SQL:定义 SQL 语句如何嵌入通用编程语言;
  • 授权:SQL DDL 包括定义对关系和视图的访问权限的命令;

待续

第 4 章 中级 SQL

第 5 章 高级 SQL