数据库系统中文版

Chapter 1 Main Phases of Relational Database Design

| 关于   «  1.2. 关系数据模型 / 关系数据库图 (RDD)   ::   目录   ::   1.4. 关系上的基本运算  »

1.3. 关系完整性约束

约束的含义是什么?___________________________

约束是指必须在所有有效关系实例上成立的条件。这些约束通过防止错误和不一致来维护数据库的正确性。

使用完整性约束的优势 ________________________________________

1- 它们通过防止无效数据被输入到数据库中,确保数据的 准确性 。

2- 它们通过确保数据在不同表和字段之间保持一致性来维护数据的 一致性 。

这些优势导致了一个 可靠的数据库设计 。

完整性约束类型 ______________________________

存在四种主要类型的完整性约束:

1• 键约束。

2• 实体完整性约束。

3• 引用完整性约束。

4• 语义完整性约束。

本节详细说明了每种类型。

1.3.1. 键约束(超键、候选键、主键、次级外键、代理键)

1- 这些被称为 唯一性约束 ,因为它确保关系中的每个元组都是唯一的。

2- 关系可以有多个键或候选键(最小超键),我们从这些键中选择一个作为主键,在选择候选键作为主键时没有任何限制,但建议使用属性数量较少的候选键。下表展示了所有不同的键类型,随后是代表每种类型的图表。

_images/KeysTypes.png

用于解释不同键类型的示例:

_images/PKCKSKDrawing.png
_images/PKvsCK.png
_images/SuperKey.png
_images/SKvsCK.png
_images/FK.png
_images/CompKey.png
_images/surroKey.png

1.3.2. 实体完整性约束

1- 实体完整性约束规定:对于每个关系(即现实世界中的实体,例如院系数据库中的学生实体),主键值不能为空或不能重复。这是因为主键值用于标识关系中的每一行,如果主键具有空值或重复值,则无法用于标识这些行。

2- 实体完整性约束是 针对单个实体(关系) 应用的,每个实体都应有一个主键。

注意: 关系(表)中的其他属性也可能被约束为不允许空值,即使它们不是主键的成员。(例如,学生表中的学生姓名不能为空,但表中可能有多个学生具有相同的姓名)。

1.3.3. 引用完整性约束

1-参照完整性约束是在两个关系/表之间指定的(不像实体完整性约束那样在单个关系上指定),用于维护两个关系中元组之间的一致性。

2- 此约束通过外键强制执行:当关系 R1(tabel1)中外键的属性与关系 R2(table 2)的主键具有相同的域(域:属性的值集)时,则称 R1 的外键引用或指向 R2 的主键。

3- 关系 R1 中元组的外键值可以取关系 R2 中任意元组的主键值,或者取 NULL 值,但不能为空。

_images/RefIntegrityConstraints.png

注意: 必须维护所有关系操作(数据库事务)中的参照完整性约束。

如果任何操作试图违反这些约束,则应采取适当的特定措施。这些措施将在本章后面讨论。

1.3.4. 语义完整性约束

1- 称为 域约束 ,是与属性或数据项的域相关联的信息。这些约束是对适用于数据项内容的业务规则的物理翻译。

2- 它定义了属性的域或值集,并确保属性所取的值必须来自其域的原子值(不可分割)(例如 NULL、Check)。

3- 这种基于应用语义的约束无法通过模型表达。

4- 例如:每位员工每月允许工作的最大小时数为 85 小时。

   «  1.2. 关系数据模型 / 关系数据库图 (RDD)   ::   目录   ::   1.4. 关系上的基本运算  »

关闭窗口