数据库系统概论——用户定义完整性 & MySQL实现

数据库系统概论——用户定义完整性 & MySQL实现

用户定义的完整性指的是针对某一具体应用的数据必须满足的语义要求,由关系数据库管理系统定义和检验,不必由应用程序承担

属性上约束条件

只涉及单个属性

定义方法

CREATE TABLE时定义

  • 列值非空
not null
  • 列值唯一
unique
  • 检查列值是否满足表达式(取值范围约束)
check
  • 定义候选码
unique not null

检查和违约处理

当且仅当插入或修改属性值时,关系数据库管理系统检查属性上的约束条件是否被满足,若不满足则操作则拒绝执行

示例

限定building属性的列值唯一且非空,budget属性的列值非空

create table department
(dept_name varchar(20),
building varchar(15) unique not null,
budget numeric(12, 2) not null,
primary key (dept_name));

限定budget属性的列值在10000到100000之间

create table department
(dept_name varchar(20),
building varchar(15) unique not null,
budget numeric(12, 2) check(budget >= 10000 and budget <= 100000),
primary key (dept_name));

元组上的约束条件

可以设置不同属性之间的取值的相互约束条件

定义方法

CREATE TABLE时用CHECK子句定义

检查和违约处理

当且仅当插入或修改属性值时,关系数据库管理系统检查属性上的约束条件是否被满足,若不满足则操作则拒绝执行

示例

当系别为CS系时,预算不少于10000

create table department
(dept_name varchar(20),
building varchar(15) unique not null,
budget numeric(12, 2),
primary key (dept_name)
check (dept_name != 'CS' or budget >= 10000));

其中若dept_name不为CS可以通过检查,budget大于10000也可以通过检查,若dept_nameCS可以通过检查且budget小于10000则不能通过检查

鸣谢

数据库系统概论(第5版)
数据库系统概念(原书第6版)

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解

猜你喜欢

转载自blog.csdn.net/qq_44486439/article/details/107968826