数据库完整性确保的是数据的正确性和相容性
若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。
所谓空值就是“不知道”或“不存在”或“无意义”的值。
实体完整性规则是针对基本关系而言的。
现实世界的实体是可以区分的,他们具有某种唯一性标识。
相应地,关系模型中以主码作为唯一性标识。
主码中的属性不能取空值。如果主属性取空值,就说明存在某个不可比标识的实体,与1.2相违背,因此这个规则称为实体完整性。
create table `student`(
Sno char(11) not null,
Cno char(11) not null,
Sname varchar(10)notnull,
primary key(Sno,Cno)
); -- 表级的主键定义
create table `Course`(
Cno char(11) not null primarykey,
Cname varchar(20)
); -- 列级定义主键
外键会拖垮查询效率,用程序级别实现
create table `student`(
Sno char(11) not null,
Cno char(11) not null,
Sname varchar(10)notnull,
primary key(Sno,Cno),
foreign key(Cno)references Course(Cno) -- 表级定义的参照完整性
);
被参照表 | 参照表 | 违约处理 |
---|---|---|
可能破坏参照完整性 | 插入元组 | 拒绝 |
可能破坏参照完整性 | 修改外键值 | 拒绝 |
删除元组 | 可能破坏参照完整性 | 拒绝/级联修改/设为控制 |
修改主键值 | 可能破坏参照完整性 | 拒绝/级联修改/设为控制 |
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno)
ON DELETE CASCADE /*级联删除SC表中相应的元组*/
ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/
FOREIGN KEY (Cno) REFERENCES Course(Cno)
ON DELETE NO ACTION
/*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/
ON UPDATE CASCADE
/*当更新course表中的cno时,级联更新SC表中相应的元组*/
);
**针对某一具体应用的数据必须满足的语义要求 **
constaint约束
constraint <Cname>
[primary key...
foreign key...
check...]
CREATE TABLE Student(
Sno NUMERIC(6)
CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
Sname CHAR(20)
CONSTRAINT C2 NOT NULL,
Sage NUMERIC(3)
CONSTRAINT C3 CHECK (Sage < 30),
Ssex CHAR(2)
CONSTRAINT C4 CHECK (Ssex IN ( '男','女')),
CONSTRAINT StudentKey PRIMARY KEY(Sno)
);
-- -----------修改约束条件
ALTER TABLE Student
DROP CONSTRAINT C1;
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999),
ALTER TABLE Student
DROP CONSTRAINT C3;
ALTER TABLE Student
ADD CONSTRAINT C3 CHECK (Sage < 40);
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...