数据库实验3

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

浙江大学实验报告

课程名称:数据库系统原理实验类型:上机

实验项目名称:SQL数据完整性

实验目的和要求

熟悉通过SQL进行数据完整性控制的方法。

一、实验内容和原理

1. 定义若干表,其中包括primary key, foreign key 和check的定义。

2. 让表中插入数据,考察primary key如何控制实体完整性。

3. 删除被引用表中的行,考察foreign key 中on delete 子句如何控制参照完整性。

4. 修改被引用表中的行的primary key,考察foreign key 中on update 子句如何控制参照完整性。

5. 定义一个asseration, 并通过修改表中数据考察断言如何控制数据完整性。

6. 定义一个trigger, 并通过修改表中数据考察触发器如何起作用。

7. 完成实验报告。

二、实验平台

数据库管理系统:SQL Server 或MySQL

四、操作方法与实验步骤及结果

1.定义若干表,其中包括primary key, foreign key 和check的定义。

如下图所示,建立了三个表分别为classroom,department 和course,其中主键分别被定义为building,dept_name,然后又定义了course中的的dept_name为外键。在course的定义中还有一个定义check的语句。

2.让表中插入数据,考察primary key如何控制实体完整性。

向department中插入主键为null的数据是报错,从而控制了实体完整性。

但当插入数据其他属性为0(不为主键)时,可以进行成功的插入操作。

插入后的结果显示如下。

3.删除被引用表中的行,考察foreign key 中on delete 子句如何控制参照完整性。

首先建立两个表school和students,并向其中插入数据,显示结果如下。

在先前定义了students表school_name为school中这一属性的外键,下面将

进行删除的操作。

删除school中一项学校名字是‘huzhou’的数据,结果如下,可以看出students表中的这行也被删去,从而控制了参照完整性。

4.修改被引用表中的行的primary key,考察foreign key 中on update 子句如何控制参照完整性。

仍利用上一部分的表,进行更新的操作,将school中的一项更新,结果如下图所示,students中的也同样被更新。

5. 定义一个asseration, 并通过修改表中数据考察断言如何控制数据完整性。

在MySQL中,可能是我没有找到相关的资料或者对其语言应用并不熟悉,并没有找到asseration的定义,在网上查找资料后发现MySQL中constraint可以起到与asseration相同的作用,细微在差别在于约束的范围不同,在本次实验中可以忽略不计。所以下面进行有关constraint的定义。

如图,定义一个constraint,对room表中seats属性进行约束。当输入限制以外的部分是报错名结果如下。

6.定义一个trigger, 并通过修改表中数据考察触发器如何起作用。

如图定义了两个表,图中查看两个表的内容。

定义一个触发器

在test1进行删除操作时在test2中删除相同元素,运行后结果如下。成功地进行了操作。

五、心得与体会

本次实验,定义若干表,其中包括primary key, foreign key 和check的定义。

向表中插入数据,考察primary key如何控制实体完整性。删除被引用表中的行,考察foreign key 中on delete 子句如何控制参照完整性。修改被引用表中的行的primary key,考察foreign key 中on update 子句如何控制参照完整性。定义一个asseration, 并通过修改表中数据考察断言如何控制数据完整性。定义一个trigger, 并通过修改表中数据考察触发器如何起作用。

圆满的完成了实验任务,熟悉了MySQL的操作,进一步熟悉和运用了sql 语法,为今后实验打下基础,受益匪浅。

相关文档
最新文档