第章 完整性约束 V.pptx
文本预览下载声明
电子科技大学 计算机学院
胡旺
scuhuwang@126.com
2017年6月21日星期三
《数据库原理及应用》
第4章 完整性约束
本章内容
完整性约束是加在数据库模式上的一个具体条件,它规定什么样的数据能够存储到数据库系统中。
例如:
学生的年龄必须是整数,取值范围为14--29;
学生的性别只能是“男”或“女”;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
完整性概述
数据完整性和安全性是两个不同概念
数据的完整性是为了防止数据库中存在不符合语义的数据,防止错误数据的输入和输出所造成的无效操作和错误结果。
数据的安全性是防止非法用户的非法操作所造成的对数据库的恶意破坏。
完整性概述
完整性约束条件定义机制
完整性约束条件:数据模型的组成部分,约束数据库中数据的语义
DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中
完整性检查机制
检查用户发出的操作请求是否违背了完整性约束条件
违约反应
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性
完整性概述
控制机制
按照完整性约束条件作用的对象分:
类型约束
属性约束
关系变量约束
数据库约束
按照完整性约束条件声明时的位置分:
列级约束
表级约束
两种状态
静态: 对静态对象的约束是反映数据库状态合理性的约束
动态: 对动态对象的约束是反映数据库状态变迁的约束,新旧值之间满足的约束
完整性约束分类
Primary Key约束:实体完整性规则?
列级约束
CREATE TABLE RecipeMaster{
Rno VARCHAR(10) PRIMARY KEY,
DGno VARCHAR(10),
Rdatetime DATETIME
}
表级约束:单属性主键
CREATE TABLE Medicine{
Mno VARCHAR(10),
Mname VARCHAR(50) NOT NULL,
Mprice DECIMAL(18,2) NOT NULL,
Munit VARCHAR(10),
Mtype VARCHAR(10),
PRIMARY KEY(Mno)
}
完整性约束定义
PK约束
表级约束:多属性组合主键
CREATE TABLE RecipeDetail{
Rno VARCHAR(10),
Mno VARCHAR(10) NOT NULL,
Mamount DECIMAL(18,0),
PRIMARY KEY(Rno,Mno)
}
UNIQUE约束定义和PRIMARY KEY约束定义不能在同一属性上
PRIMARY KEY子句中的每个属性的取值都必须是NOT NULL
完整性约束定义
PK约束
列级约束
CREATE TABLE Dept{
DeptNo VARCHAR(10) PRIMARY KEY,
DeptName VARCHAR(50) UNIQUE,
ParentDeptNo VARCHAR(10),
Manager VARCHAR(10)
}
索引对象约束
CREATE UNIQUE INDEX deptname_index ON dept(DeptName)
UNIQUE与Primary Key
在一个关系中,PRIMARY KEY只有一个,而UNIQUE可以声明多个
PRIMARY KEY要求属性取值不能为NULL,而UNIQUE允许属性取空值,允许多个空值同时存在
在定义了UNIQUE,PRIMARY KEY 约束的属性上建立索引是十分必要的,它可以使约束的检查执行起来更有效
完整性约束定义
UNIQUE约束
NOT NULL列级约束
CREATE TABLE Diagnosis{
DGno VARCHAR(10) PRIMARY KEY,
Pno VARCHAR(10) NOT NULL,
Dno VARCHAR(10) NOT NULL,
Symptom VARCHAR(100),
Diagnosis VARCHAR(100),
DGtime DATETIME,
Rfee DECIMAL(18,2) NOT NULL
}
NOT NULL域对象约束
CREATE DOMAIN fee DECIMAL(18,2) NOT NULL;
完整性约束定义
NOT NULL约束
CHECK表级约束
CREATE TABLE Doctor{
Dno VARCHAR(10),
Dname VARCHAR(50) NOT NULL,
Dsex VARCHAR(2),
Dage INT,
Ddeptno VARCHAR(10),
Dlevel VARCHAR(50),
Dsalary DECIMAL(18,2),
PRI
显示全部