王珊数据库·第五章

数据库完整性

实体完整性

实体完整性定义

在列定义主码

CREATE TABLE student(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2)
);

在表级定义主码

CREATE TABLE student(
Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY(Sno)
);

将多个属性同时定义为码,只能在表级定义

CREATE TABLE SC(
Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno)/*只能在表级定义主码*/
)

实体完整性检查以及违约处理

插入或对主码列进行更新操作时,关系数据库管理系统(RDBMS)按照实体完整性规则自动进行检查,包括:

检查主码是否唯一

检查主码各属性是否为空

若违规则拒绝插入或修改。

参照完整性

外码、参照关系、被参照关系的外码取值规则:要么为空,要么等于对应参照关系的某个主码值。

例如,关系SC中(Sno,Cno)是主码,Sno、Cno分别参照Student表的主码和Course表的主码,定义参照完整性如下:

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),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

用户自定义完整性

列值非空

NOT NULL

列值唯一

UNIQUE

检查一个列值是否满足一个条件表达式(CHECK)

例:Student表Ssex只允许取男女

CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK (Ssex ('男','女')),
Sage SMALLINT
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值