[DB]Database System Concepts Chapter 2

Introduction to the Relational Model

1 Structure of Relational Databases

一个关系型数据库包含一组表,每个表都有一个独特的名字。

instructor关系

通常来说,表中的一行代表着一组值之间的关系。

术语

  • tuple:一组值的序列

  • n个值的关系用一个n-tuple来表示(表中的一行)

  • relation - 一张表

  • tuple - 表中的一行

  • attribute - 表中的一列

  • relation instance - 某种关系的一个示例(某些特定的行)

  • domain - 某种关系某个attribute的可行值集合

    对于所有关系 r,r 的所有属性域都是原子的。域是原子的的意思是域的元素被视为不可分割的单位。

  • null value - 用来指示某个值未知或者不存在

2 Database Schema

  • database schema - 数据库的逻辑视图
  • database instance - 某个给定的数据库的某个确定时间的一个快照
  • relation - 对应编程中的变量
  • relation schema - 对应编程中的类型定义

对于下图中的department关系,其schema为:
$$
department(dept_name, building, budget)
$$

3 Keys

必须提供一种方法来区分一个关系中不同的tuple。

超键superkey

超键是一个或几个属性的集合,它们可以唯一标识一个关系中的某个tuple。
$$
if \space t_1 \neq t_2,then \space t1.K \neq t2.K
$$
其中$K$是某个关系$r$的所有属性集合$R$的一个子集。

如果$K$是一个超键,那么$K$的任何一个超集也是超键

候选键candidate keys

候选键的任何一个子集都不是超键。

对于一个关系,可以有多个候选键。

主键primary key

被选定的某个候选键,用来区分tuple。主键的值应该从不或者很少改变。

主键约束primary key constraints

键是整个关系的一个性质,而无关某个具体的tuple。任何两个不同的tuple,它们键的值不能相同。这代表这被建模的真实世界的一个约束(主键约束primary key constraints)

外键约束

考虑一下教师关系中的部门名属性。如果 instructor 中的元组的系名值与系关系中的系不对应,那是不合理的。因此,在任何数据库实例中,给定教员关系中的任何元组(如 ta),部门关系中一定有某个元组(如 tb),使得 ta 的部门名属性值与 tb 的主键(部门名)值相同。

从关系 r1 的属性集 A 到关系 r2 的主键 B 的外键约束规定,在任何数据库实例中,r1 中每个元组的 A 值也必须是 r2 中某个元组的 B 值。属性集 A 被称为来自 r1 并引用 r2 的外键。关系 r1 也被称为外键约束的引用关系,而 r2 被称为被引用关系。


[DB]Database System Concepts Chapter 2
https://erlsrnby04.github.io/2024/11/10/DB-Database-System-Concepts-Chapter-2/
作者
ErlsrnBy04
发布于
2024年11月10日
许可协议