数据库系统概论——用户定义完整性 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_name
为CS
可以通过检查且budget
小于10000则不能通过检查
鸣谢
数据库系统概论(第5版)
数据库系统概念(原书第6版)
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解
发布评论