计算机科学与技术学院实验报告(电子版)
课程: 数据库系统概论
实验名称 姓 名 实验地点 一、实验内容: 1. 使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN子句、触发器); 2. 分析当操作违反了完整性约束条件时系统的处理方法。 数据完整性控制 指导老师 2011XXXXXX 201305014 班 级 成绩 XX 级科技一班 XXX 科技楼102 学 号 实验日期 二、实验目的: 掌握通过SQL对数据进行完整性控制的方法。 三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况): 安装有SQL Server数据库管理系统的计算机 四、程序清单与测试数据: 一、完整性: 1>实体完整性: CREATE TABLE sc( sno char(9) NOT NULL, cno char(4) NOT NULL, grade tinyint NULL, PRIMARY KEY (sno,cno ) 2>参照完整性: CREATE TABLE SC (Sno CHAR(10) NOT NULL, Cno CHAR(4) NOT NULL, Grade NUMERIC(5,2), PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno)REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/ ) 3>用户定义的完整性: 1.不允许取空值 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, PRIMARY KEY (Sno, Cno), Grade SMALLINT NOT NULL, /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了 * / ); 2. 用CHECK短语指定列值应该满足的条件 Student表的Ssex只允许取“男”或“女”。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) , /*性别属性Ssex只允许取'男'或'女' */ Sage SMALLINT, Sdept CHAR(20) ); 3、列值唯一 二、CHECK短语: 三、CONSTRAIN子句: CREATE TABLE sldfj (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) ) 四、触发器: 1、建立触发器: 2、修改触发器: 3、删除触发器: 五、分析当操作违反了完整性约束条件时系统的处理方法: 一、实体完整性的检查和违约处理 1、检查主码是否唯一,如果不唯一则拒绝插入或修改。 2、检查主码各个属性值是否为空值,只要有一个为空值就拒绝或修改。 二、参照完整性的检查和违约处理 对于被参照表student和参照表sc进行检查和违约处理。 1、在参照表sc表中插入元组,可能破坏参照完整性,系统将进行删除处理; 2在参照表sc表中修改外码值,可能破坏参照完整性,系统也将进行删除处理。 3、在被参照表student中删除元组,可能破坏参照完整性,系统将进行拒绝/级连删除/设置为空值的处理。 4、在被参照表student中修改主码值,可能破坏参照完整性,系统将进行拒绝/级连修改/设置为空值的处理。 三、用户定义完整性检查和违约处理 当往表中插入元组或修改属性值时,RDBMS就检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。 被参照表(例如Student) 可能破坏参照完整性 参照表(例如SC) 插入元组 违约处理 拒绝 可能破坏参照完整性 删除元组 修改外码值 可能破坏参照完整性 值 可能破坏参照完整性 值 拒绝 拒绝/级连删除/设置为空修改主码值 拒绝/级连修改/设置为空 五、实验结果、分析、体会等: 通过这次实验,对实体完整性、用户定义完整性、参照完整性进行了操作,练习了使用CHECK短语、CONSTRAIN子句定义完整性可以实现多个完整性控制;通过对触发器的定义,修改和删除,实现了各个表之间的联级控制。对于违反了完整性的操作一般采用默认方式,即拒绝执行,对违反参照完整性的操作,用户根据应用记定义来定义合适的处理策略,以保证数据库的正确性,数据库的安全性有了更深的理解!