数据库原理数据的完整性实验报告.

  • 格式:doc
  • 大小:548.50 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

***大学计算机科学与信息学院软件工程系上机实验报告

《数据库原理》实验报告

题目实验8 数据的

完整性姓名***班级***日期***

实验环境:SQL Server 2000

一、实验目的

熟悉通过SQL对数据进行完整性控制,通过实验加深对数据完整性的理解。

相关知识

触发器是实施复杂完整性的一种机制。触发器不需要专门的语句调用,当对它所保护数据进行修改时由DBMS自动激活,以防止对数据进行不正确,未授权或不一致的修改。

创建触发器的语法为:

CREATE TRIGGER < 触发器> ON <表名>

[WITH ENCRYPTION]

FOR {[DELETE][,][INSERT][,][UPDATE]}

[WITH APPEND]

[NOT FOR REPLICATION]

AS

其中:

1)WITH ENCRYPTION 为加密选项。

2)DELETE 选项为创建DELETE 触发器。DELETE触发器的作用是当对表执行DELETE操作时触发器被激

活,并从指定表中删除元组,同时将删除的元组放入一个特殊的逻辑表(delete表)中。触发器的动作可以检查delete表中的数据,以确定下一步该如何处理。

3)INSERT选项为创建INSERT触发器。INSERT触发器在对指定表中执行插入数据操作时激活,激活后

将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted 表)中,触发器会根据INSERT表中的值决定如何处理。

4)UPDATE选项为创建UPDATE触发器。UPDATE触发器仅在对指定表中进行更新数据操作时激活。UPDATE

触发器激活后把将要被更新的原数据移入delete表中,再将要被更新后的新数据的备份送入inserted表中,UPDATE触发器对delete和inserted表进行检查,并决定如何处理。

5)NOT FOR REPLICATION 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不

能被执行。

一个触发器只适用于一个表,每个表最多只能有三个触发器,它们分别是INSERT、UPDATE和DELETE 触发器。触发器仅在实施数据完整性和处理业务规则时使用。

二、实验内容

本实验的内容为使用SQL对数据进行完整性控制(关系数据库的三类完整性、CHECK短语、CONSTRAINT 子句、触发器)。用实验证实,当操作违反了完整性约束条件时,系统如何处理的。认真完成以下题目,按要求填写实验报告,记录所有实验用例。

(1)打开SQL Server 2000的查询分析器,用DDL语句建立如下三个表。

表student1:

字段名类型长度含义约束

Sno Char 10 学号主码(约束名:STU_PK)

Sname Char 20 姓名非空(约束名:STU_U1)

Ssex Char 2 性别‘男’或’女’ (约束名:STU_C1)

Sage Int 年龄18 到 30(约束名:STU_C2)

Sdept Char 10 所在系

表course1:

字段名类型长度含义约束

Cno Char 10 课程号主码(约束名:COU_PK)

Cname Char 20 课程名唯一(约束名:COU_C1)

Cpno Char 2 先行课

Ccredit Int 学分

表SC1:

字段名类型长度含义约束

Sno Char 10 学号主码(约束名:SC_PK)

外码(参照student1的Sno,约束名:

SC_FK1)

Cno Char 20 课程号主码(约束名:SC_PK)

外码(参照course1的Cno,约束名:SC_FK2)

Grade Char 2 成绩

create table student1(

Sno char(10),

Sname char(20)

constraint STU_U1 NOT NULL,

Ssex char(2)

constraint STU_C1 CHECK(Ssex in('男','女')), Sage int

constraint STU_C2 check(Sage between 18 and 30), Sdept char(10)

constraint STU_PK PRIMARY KEY(Sno));

create table course1(

Cno char(10),

Cname char(20)

constraint COU_C1 UNIQUE,

Cpno char(2),

Ccredit int

constraint COU_PK PRIMARY KEY(Cno));

create table SC1(

Sno char(10),

Cno char(10),

Grade CHAR(2),

constraint SC_PK PRIMARY KEY(Sno,Cno),

constraint SC_FK1FOREIGN KEY(Sno)REFERENCES student1(Sno),

constraint SC_FK2FOREIGN KEY(Cno)REFERENCES course1(Cno),

);

(2)插入如下数据,什么原因导致某些数据不能正确插入?

Sno Sname Ssex Sage Sdept