实验9 数据完整性约束实现

实验九 数据完整性约束实现

【实验目的与要求】

1. 熟练掌握实体完整性的实现。 2. 熟练掌握参照完整性的实现。 3. 熟练掌握域完整性的实现。

【实验内容与步骤】

实验准备:对于CPXS 数据库,若在CP 表、CPXSB 表和XSS 表上已有约束,请先删除之。

9.1. 实体完整性的实现

(1) 对CP 表,定义主键约束(用企业管理器实现)。

写出相应过程:

测试:试着对CP 表插入一条与原表中数据行具有相同主键值的数据。

给出测试结果:

(2)对CPXSB 表、XSS 表,定义主键约束(用SQL 语句实现,写出相应语句)。

给出相应的SQL 语句:

给出测试结果:

在XSS 中插入一条客户编号为’000005’的记录

9.2. 参照完整性的实现

(1)利用企业管理器建立CP 表与CPXSB 之间的参照关系,当对主表CP 表进行更新和删除操作时,从表CPXSB 采用NO ACTION方式,写出其过程。

给出相应的过程:

测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。

(2)利用SQL 语句建立CPXSB 与XSS 表之间的参照关系,当对主表XSS 表进行更新和删除操作时,从表CPXSB 采用CASCADE (级联)方式,写出其过程。

给出相应的SQL 语句:

Foreign key (客户编号) references CPXSB(客户编号) On delete cascade On update cascade

测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,

给出测试结果。

XSS 表中的客户编号为000002的记录已被删除

思考:外键参照关系中CASCADE (级联)和NO ACTION方式的作用各是什么? 1.No Action 是不允许该操作执行。

2.CASCADE 是删除或者修改被参照表的一个元组造成了与参照表的不一致,则删除或者修改参照表中的所有造成不一致的元组。

9.3. 域完整性的实现 1.Unique 约束

(1)在CP 表的“产品名称”列定义一个唯一约束。

给出相应的SQL 语句:

alter table cp add unique(产品名称);

测试:试着在在CP 表中插入一条具有与原表中某记录相同“产品名称”值的数据。

给出测试结果:

(2)在CP 表的价格列上定义大于等于0的检查(CHECK )约束。

给出相应的SQL 语句:

alter table cp add constraint c1 check(价格>0);

测试:试着在CP 表中插入一条记录,其“价格”字段的值小于0(如: -2),给出测试结果:

(3)定义一个大于等于5的规则check_kcl,并将其绑定到CP 表的库存量列,

给出相应的SQL 语句:

alter table cp add constraint check_kcl check(库存量>=5);

测试:试着在CP 表中插入一条记录,其“库存量”字段的值小于5(如:2) ,给出测试结果:

(4)解除(3)中绑定,删除该规则,请写出相关SQL 语句。

给出相应的SQL

语句和运行结果截图:

测试:试着在CP 表中插入一条记录,其“库存量”字段的值小于5(如:2) ,给出测试结果:

思考:比较(3)和(4)的测试结果,理解自定义完整性(约束) 的作用?

可以检验插入元组或者修改属性的值满不满足条件

9.4. 完成以下实验练习

(1) 设定XSS 表中的地区值只能是“镇江”,“无锡”,“上海”,“南京”,“厦门”中的任意一个,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

alter table xss add constraint c2 check(地区='厦门' or 地区='镇江' or 地区='无锡

' or 地区='上海' or 地区='南京');

测试:试着在XXS 表中插入一条记录,其“地区”字段的值为福州。

给出测试结果:

(2) 用户要求:在输入XSS 表中的数据时,若“地区”列没有提供数据,系统应自动取值“厦门”,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

通过表格直接设置,对应的语句是:[地区] [char](10) NULL CONSTRAINT

[DF_XSS_地区] DEFAULT ('厦门'),

测试:试着在XXS 表中插入一条记录,其“地区”字段的值为空。而后查询插入的数据。

给出测试结果:

插入一条地区为空的数据:

发现变成这样了:

(3) 用户要求:CPXSB 表中的“数量”列的取值只能为1—20之间的整数,且在用户没有输入数据时自动取值1,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

通过表格设置,对应的语句:

[数量] [int] NULL CONSTRAINT [DF_CPXSB_数量] DEFAULT ((1)),

范围的对应的语句是:alter table CPXSB add constraint B1 check(数量 between 1 and 20);

测试:试着在CPXSB 表中插入一条记录,其“数量”字段的值为45。

给出测试结果:

测试:试着在CPXSB 表中插入一条记录,其“数量”字段的值为空。而后查询插入的数据。

给出测试结果:

插入一条数量为空的数据:

出现的结果为:

实验九 数据完整性约束实现

【实验目的与要求】

1. 熟练掌握实体完整性的实现。 2. 熟练掌握参照完整性的实现。 3. 熟练掌握域完整性的实现。

【实验内容与步骤】

实验准备:对于CPXS 数据库,若在CP 表、CPXSB 表和XSS 表上已有约束,请先删除之。

9.1. 实体完整性的实现

(1) 对CP 表,定义主键约束(用企业管理器实现)。

写出相应过程:

测试:试着对CP 表插入一条与原表中数据行具有相同主键值的数据。

给出测试结果:

(2)对CPXSB 表、XSS 表,定义主键约束(用SQL 语句实现,写出相应语句)。

给出相应的SQL 语句:

给出测试结果:

在XSS 中插入一条客户编号为’000005’的记录

9.2. 参照完整性的实现

(1)利用企业管理器建立CP 表与CPXSB 之间的参照关系,当对主表CP 表进行更新和删除操作时,从表CPXSB 采用NO ACTION方式,写出其过程。

给出相应的过程:

测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。

(2)利用SQL 语句建立CPXSB 与XSS 表之间的参照关系,当对主表XSS 表进行更新和删除操作时,从表CPXSB 采用CASCADE (级联)方式,写出其过程。

给出相应的SQL 语句:

Foreign key (客户编号) references CPXSB(客户编号) On delete cascade On update cascade

测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,

给出测试结果。

XSS 表中的客户编号为000002的记录已被删除

思考:外键参照关系中CASCADE (级联)和NO ACTION方式的作用各是什么? 1.No Action 是不允许该操作执行。

2.CASCADE 是删除或者修改被参照表的一个元组造成了与参照表的不一致,则删除或者修改参照表中的所有造成不一致的元组。

9.3. 域完整性的实现 1.Unique 约束

(1)在CP 表的“产品名称”列定义一个唯一约束。

给出相应的SQL 语句:

alter table cp add unique(产品名称);

测试:试着在在CP 表中插入一条具有与原表中某记录相同“产品名称”值的数据。

给出测试结果:

(2)在CP 表的价格列上定义大于等于0的检查(CHECK )约束。

给出相应的SQL 语句:

alter table cp add constraint c1 check(价格>0);

测试:试着在CP 表中插入一条记录,其“价格”字段的值小于0(如: -2),给出测试结果:

(3)定义一个大于等于5的规则check_kcl,并将其绑定到CP 表的库存量列,

给出相应的SQL 语句:

alter table cp add constraint check_kcl check(库存量>=5);

测试:试着在CP 表中插入一条记录,其“库存量”字段的值小于5(如:2) ,给出测试结果:

(4)解除(3)中绑定,删除该规则,请写出相关SQL 语句。

给出相应的SQL

语句和运行结果截图:

测试:试着在CP 表中插入一条记录,其“库存量”字段的值小于5(如:2) ,给出测试结果:

思考:比较(3)和(4)的测试结果,理解自定义完整性(约束) 的作用?

可以检验插入元组或者修改属性的值满不满足条件

9.4. 完成以下实验练习

(1) 设定XSS 表中的地区值只能是“镇江”,“无锡”,“上海”,“南京”,“厦门”中的任意一个,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

alter table xss add constraint c2 check(地区='厦门' or 地区='镇江' or 地区='无锡

' or 地区='上海' or 地区='南京');

测试:试着在XXS 表中插入一条记录,其“地区”字段的值为福州。

给出测试结果:

(2) 用户要求:在输入XSS 表中的数据时,若“地区”列没有提供数据,系统应自动取值“厦门”,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

通过表格直接设置,对应的语句是:[地区] [char](10) NULL CONSTRAINT

[DF_XSS_地区] DEFAULT ('厦门'),

测试:试着在XXS 表中插入一条记录,其“地区”字段的值为空。而后查询插入的数据。

给出测试结果:

插入一条地区为空的数据:

发现变成这样了:

(3) 用户要求:CPXSB 表中的“数量”列的取值只能为1—20之间的整数,且在用户没有输入数据时自动取值1,请问如何解决该问题?请写出一种具体的解决方法。

给出相应的SQL 语句:

通过表格设置,对应的语句:

[数量] [int] NULL CONSTRAINT [DF_CPXSB_数量] DEFAULT ((1)),

范围的对应的语句是:alter table CPXSB add constraint B1 check(数量 between 1 and 20);

测试:试着在CPXSB 表中插入一条记录,其“数量”字段的值为45。

给出测试结果:

测试:试着在CPXSB 表中插入一条记录,其“数量”字段的值为空。而后查询插入的数据。

给出测试结果:

插入一条数量为空的数据:

出现的结果为:


相关文章

  • 数据库计算机专业实验
  • 实验一 SQL SERVER2000的基本使用 [实验目的] 熟悉SQL SERVER2000的基本使用 [实验学时] 2学时(1周) [实验类型] 综合型 [实验环境] SQL Server2000 [实验人数] 1人/组 [实验内容及要 ...查看


  • 数据库原理实验指导书(Mysql)
  • 数据库原理实验指导书 实验项目列表 实验一:数据库的定义实验 一.实验目的: 1.理解MySQL Server 6.0 服务器的安装过程和方法: 2.要求学生熟练掌握和使用SQL .T-SQL .SQL Server Enterpriser ...查看


  • 数据库定义实验
  • 数据库安全性与完整性实验 一.实验目的与要求 使学生加深对数据库安全性和完整性的理解.并掌握SQL Server中有关用户角色及操作权限的管理方法.熟悉通过SQL语句对数据库进行完整性分析. 报告 题 目: 数据库定义实验 专 业: 网络工 ...查看


  • 数据库定义实验一
  • 实验一 :数据库的定义实验 1. 实验目的 熟练掌握使用SQL 企业管理器创建数据库.表.索引和约束的方法,学会利用企业管理器查看或修改数据库属性和表结构,加深对数据库模式.表结构和数据完整性约束等概念的理解. 2. 实验内容 利用SQL ...查看


  • SQL实验报告总结
  • <数据库系统概论(第四版)> 体 会 学号: 姓名: 班级: 教师: 学 期实 验 总 结 与 心 得 [实验名称] 数据库的创建 [实验内容] 1.新建sql注册表. 2.新建数据库.主数据文件:逻辑文件名为student_d ...查看


  • 数据库原理实验指导书 (1)
  • <数据库原理实验指导书> 河南科技大学电子信息工程学院 赵海霞 目录 实验规则 .......................................................................... ...查看


  • 数据库心得体会
  • 数据库总结 学号: 班级: 姓名: 摘要 创建.修改数据表,包括主键.外键及约束创建.修改数据表,包括主键.表的数据的输入.修改.删除,Insert .Update .Delete 表的数据的输入.修改.删除,Insert .Update ...查看


  • 数据挖掘实验二数据立方体与联机分析处理
  • 实验二.数据立方体与联机分析处理 学院 计算机科学与软件学院 班级姓名学号 • 实验目的: (1)熟悉 VC++编程工具和基本数据立方体构建.联机分析处理算法. (2)建立一致的高质量的关系型数据库. (3)在建立的数据库基础上建立基本数据 ...查看


  • 图书馆数据库
  • 一.课程设计的内容 一个图书借阅管理数据库要求提供以下服务: (1)可随时查询书库中现有书籍的种类.数量与存放位置.所有各类书籍均可由书号唯一标识. (2)可随时查询书籍借还情况.包括借书人单位.姓名.借书证号.借书日期和还书日期.任何人可 ...查看


热门内容