数据库完整性+T-SQL

数据库完整性

定义

数据库的完整性(integrity)是指数据的正确性(correctness)和相容性(compat-abiity)。
数据库的完整性是防止不合语义或不正确的数据进入数据库
完整性体现了是否真实地反映现实世界

意义

用合适的完整性约束来规范数据,方便查找和操作,也方便后期的维护和优化。

数据模型(关系)

结构
操作
完整性

DBMS的完整性机制

提供了定义完整性约束条件的机制

提供了完整性检查的方法

违约处理

实体完整性(区分记录)

关系模型的实体完整性

Primary key

定义实体完整性

单一属性可以在列级和表级定义主码

多属性只能在表级定义主码

DBMS实体完整性检查和违约处理

检查

检查记录中主码值是否唯一的一种方法是进行全表扫描

该方法缺点:耗时

违约处理

拒绝操作

参照完整性(Foreign key)

定义参照完整性

create table sc(
    //列级定义参照完整性
    sno char(9) foreign key (sno) references student(sno),
    cno char(4),
    grade smallint,
    //表级定义实体完整性
    primary key(sno,cno),
    //表级定义参照完整性
    foreign key (cno) references student(cno)
)

参照完整性检查和违约处理

如上代码:student表为被参照表,sc为参照表

被参照表(例如Student) 参照表(例如SC) 违约处理
可能破坏参照完整性 <—— 插入元组 拒绝
可能破坏参照完整性 <—— 修改外码值 拒绝
删除元组 ——> 可能破坏参照完整性 拒绝/级联删除/设置为空值
修改主码值 ——> 可能破坏参照完整性 拒绝/级联删除/设置为空值
违约处理

拒绝执行(默认处理)

级联操作

设置为空值

create table sc(
    //显式说明参照完整性的违约处理示例
    //列级定义参照完整性
    sno char(9),
    cno char(4),
    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时,级联
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值