数据库八股文——关系模型的基本概念

关系、关系模式、关系实例的定义

一个 关系 对应一张 表格

引入关系的目标是更数学化,规范化的描述一张表格

例如对于下面的表格:

① 关系的属性和属性值

关系中的每一列中的数据都属于某个域中(域是属性的取值范围),并有一个独特的名字称为属性名,关系中具体的值是属性值。ID 是属性名,该列的域为无符号整数域,10101为属性值。

域是一个集合,集合的个数成为域的基数。

② 关系的元组

关系的每一行称为属于关系的一个元组,关系包含的元组集合是所有域笛卡尔积的子集。元组的每一个值叫做一个分量。(12121, Wu, Finance, 90000) 为一个元组

③ 关系的度/目

关系的属性个数称为关系的度/目。上述关系是一个四度关系。

关系模式

关系可用 R(A1:D1, A2:D2, ..., An:Dn) 来表示,这种描述又被称为关系模式。

其中 R 是关系的名字,A 是属性,D 是属性所对应的域,n 是关系的度或目, 关系中元组的数目称为关系的基数。

上述表格的描述为:table_name(ID: unsigned int, name: string, dept_name: string, salary: int)

关系实例

关系模式是在关系模式下的一组元组,或者称一个确定的表格。

上述表格就是在关系模式 table_name(ID: unsigned int, name: string, dept_name: string, salary: int) 下的一个关系实例

关系的特性

  • 列的同质性: 每一列的属性值属于同一个域
  • 行/列的互换等价性:关系中区分行和列通过元组值与属性名,和顺序无关
  • 元组的不重复性:不能存在两个完全一致的元组
  • 属性不可再分性(关系第一范式):属性不能再分成子属性,一个元组的各个分量的值只能为一个

关系的重要概念——码

超码 Super Key

能够唯一标识一条记录的属性或属性集

标识性 + 非空性

超码:(学号, 课程名),(学号,课程名,成绩),(学号,课程名,性别,姓名)

候选码 Candicate Key

能够唯一标识一条记录的最小属性集(不含多余属性)

标识性 + 非空性 + 最小性

候选码:(学号, 课程名),(课程名, 姓名)

主码 Primary Key

人为选择的候选码中的一个

标识性 + 非空性 + 最小性 + 唯一性

主码:(学号, 课程名)

主属性/非主属性

出现在候选码中的属性/不出现在候选码中的属性

主属性:{学号,课程名,姓名}

非主属性:{成绩,性别}

外码 Foreign Key

关系 R 中的一个属性组,它不是 R 的候选码,但它与另一个关系 S 的候选码相对应,则成这个属性组 R 的外码

两个关系通常是靠外码连接起来的

超码,候选码,主码的关系

关系中的数据约束

实体完整性约束——主码约束

一个关系的主码不能取空值、重复值。

一个复合主码中的每一个属性均不能取空值。

只有关系才有实体完整性约束,对于查询结果(例如 SQL 语句的输出),不需要满足该约束。

参照完整性约束——外码约束

一个关系的外码可以取空值。

一个关系的外码如果是有效值,则必须包含于其对应另一个关系的主码的实际取值集合。

用户完整性约束

用户针对具体的应用环境定义的完整性约束条件。

例如要求年龄在 0 ~ 100 之间,工资在 3000 ~ 6000 之间等。

其他约束

自增长约束、默认值约束、检查约束等。


数据库八股文——关系模型的基本概念
https://dmx20070206.github.io/2024/12/15/DataBase1/
Author
DM-X~X~X
Posted on
December 15, 2024
Licensed under