国开《数据库基础与应用》第四章 4-2-4:表级完整性约束
4-2-4:表级完整性约束
列级完整性约束的定义只针对所在的列,而表级完整性约束的定义可以针对该表中定义的任何一个列或若干个列,当需要涉及到多个列的完整性约束的定义时,则必须使用表级完整性约束的定义方式。
<表级完整性约束>的定义被分为以下4种情况。
(1)主码约束。表示为:PRIMARY KEY(<列名>,...)。注明一个或同时多个列为该表中的主码。如在选课表的定义中,在所有列的定义之后,可以使用表级主码约束的定义:primary key(学生号,课程号),这样就把选课表中的学生号和课程号两列共同定义为选课表的主码。
(2)单值约束。表示为:UNIQUE(<列名>,...)。注明一个或同时若干个列为单值约束。如unique(长途区号,电话号码),就是一个表中的单值约束的定义,它定义了长途区号和电话号码两列为该表的单值约束。
(3)外码约束。表示为:FOREIGN KEY(<列名>,...) REFERENCES<父表名>(<列名>,...)。它注明一个或同时多个列为外码,并给出对应的父表及父表中被参照的主码。如在一个选课表的定义中,使用的表级完整性外码约束的定义为:foreign key (学生号) references 学生(学生号),这样就定义了选课表中的学生号为外码,对应学生表中的主码学生号。
(4)检查约束。表示为:CHECK(<逻辑表达式>)。定义表中一个或一些列上的取值必须满足的约束条件。如假定在职工表中采用的表级完整性检查约束的定义为:check(工龄<年龄)。
表级完整性约束共有4种,列级完整性约束共有6种。在表级完整性约束中缺少列级的默认值约束和空值/非空值约束。