数据库系统概论笔记(第五章)

第五章.数据库完整性


1. 数据库的完整性指:数据的正确性、相容性
其中正确性可以理解为精确性,相容性可以理解为可靠性。

  • 分为实体完整性、参照完整性、用户定义的完整性

2. 实体完整性:主属性不能为空

  • 定义:在create table中用primary key
  • 违约处理:主码不唯一则拒绝;主码各属性有空则拒绝

3. 参照完整性:**外码为空值或参照关系的主码的有效值

  • 定义:在create table中用foreign key定义哪些列是外码,references指定参照哪些表的主码
  • 违约处理:(1)拒绝(默认)(2)cascade级联操作 (3)设置为空值

4. 用户定义的完整性:列值非空(not null)、列值唯一(unique)、check短语

5. 触发器:定义在关系表上的一类由事件驱动的特殊过程
触发器被保存在数据库服务器
任何用户对表的 增(insert)、删(delete)、改(update) 操作均由服务器自动激活相应的触发器

6. 定义触发器
例子:当对表sc的grade属性进行修改,若分数增加了10%,则将此次操作记录到另一个表:sc_u(sno,cno,oldgrade,newgrade)

create trigger sc_t
afer update of grade on sc  //afer表示修改完成之后
referencing                 //referencing指出引用的变量
    old row as oldtuple
    new row as newtuple    
for each row                //指明执行频率
when (newtuple.grade>=1.1*oldrow.grade)    //条件
    insert into sc_u(sno,cno,oldgrade,newgrade)
    values(oldtuple.sno, oldtuple.cno, oldtuple.grade, newtuple.grade);

7. 删除触发器
格式:

drop trigger <触发器名> on <表名>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值