同济大学计算机教研室,Y—相容-同济大学计算机基础教研室.PPT

Y—相容-同济大学计算机基础教研室

第6章 数据库保护机制 6.1 数据库的完整性 数据库的完整性指数据的正确性和有效性 。 数据库的完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓“垃圾进垃圾出”所造成的无效操作和错误结果。 数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库完整性是非常重要的。 6.1 数据库的完整性 数据库的完整性是由DBMS的完整性控制子系统实现的。其主要功能为: 1.完整性检查功能。检查用户发出的操作请求是否违背了完整性约束条件; 2.应对操作。如果发现用户操作违背了完整性规则,为保证数据的完整性而采取的动作。(如撤销用户操作) 6.1.1 完整性规则 完整性规则是指附加在数据库数据上的语义约束条件。 每一条完整性规则包括3个部分: (1)触发条件:确定什么操作使用规则进行检查; (2)约束条件: 确定要检查什么样的错误; (3)应对措施:确定如果查出错误该怎么处理。 完整性规则作用的对象可以是关系、元组和列。 6.1.2 SQL Server的完整性 本节介绍SQL Server的完整性控制策略。 SQL Server数据完整性有四种类型: 实体完整性、域完整性、 参照完整性、用户定义完整性 6.1.2 SQL Server的完整性 1. 实体完整性 构成主键的主属性不能取空值 。体现为: UNIQUE唯一性约束(不允许为null) PRIMARY KEY 约束(不允许为null) 例: CREATE TABLE 选课 (学号 CHAR(6) ,… … , PRIMARY KEY(学号,课号) , … ) 或 CREATE TABLE 学生 (学号 CHAR(6) UNIQUE,…) 6.1.2 SQL Server的完整性 2. 域完整性 属性列(字段)满足的约束条件。体现为: (1)对数据类型的约束:包括数据的类型、长度、单位、精度等。 (2)对数据格式的约束 例:规定学号的前两位表示入学年份,中间两位表示系的编号,后四位班级和序号,xxxxxxxx。 出生日期:YY-MM-DD 6.1.2 SQL Server的完整性 (3)对取值范围或取值集合的约束. ?例如:规定成绩的取值范围为0~100 ?域级check子句 (4)对空值的约束:有的列允许取空值,有的列不允许取空值。 (5)设置默认值default约束。 6.1.2 SQL Server的完整性 3. 参照完整性(外键完整性) 两个表之间满足的参照(引用)关系的约束。即:外键表中外键的取值参照主键表中主键的值 。 体现为: CREATE TABLE 选课 (…. , FOREIGN KEY(学号) REFERENCES 学生(学号) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION, …) 6.1.2 SQL Server的完整性 4. 用户定义完整性 用户定义完整性是针对应用业务需要而定义的完整性约束条件。体现为: (1) 表定义语句中的CHECK子句 (2) 触发器 (3) 规则(下节介绍) 6.1.3 使用规则和触发器实现完整性 一般不是很复杂的完整性约束都是在create table语句中定义。更复杂的完整性实现要用触发器和规则。 定义表时没有定义的约束,可以在以后通过创建触发器和规则来实现。 check约束优先于触发器约束和规则约束执行。 6.1.3 使用规则和触发器实现完整性 *1. 使用规则实现完整性 规则是独立于表的单独定义、存储的数据库对象。 6.1.3 使用规则和触发器实现完整性 @Birthday>=‘1980-01-01’ AND @Birthday<=GETDATE( ) @grade IN(‘a’,’A’, ’B’,’b’, ’C’,’c’, ’D’,’d’) @code LIKE ‘ [a-z]%[0-9] ’ 例1 创建sno_rule规则,使得学号只能是6位数字字符。 CREATE RULE sno_rule AS @sno LIKE ‘[0-9][0-9][0-9][0-9][0-9][0-9]’ 6.1.3 使用规则和触发器实现完整性 规则的绑定 创建好规则后,规则只是存储在数据库中的对象并没有发生作用,只有将规则绑定到相应表的属性列,才能实现完整性约束。 用存储过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值