SQL数据库_实验09

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

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

姓名:学号:

专业:网络工程班级: 1

同组人:无实验日期:2012/4/13

【实验目的与要求】

1.熟练掌握实体完整性的实现。

2.熟练掌握参照完整性的实现。

3.熟练掌握域完整性的实现。

【实验内容与步骤】

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

9.1.实体完整性的实现

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

写出相应过程:

在cp表上右击鼠标,点击修改,然后选择列名,右击鼠标,点击设置主键。

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

给出测试结果:

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

给出相应的SQL语句:

alter table xss

add constraint xsskey primary key(客户编号);

alter table cpxsb

add constraint cpxsbkey primary key(产品编号,客户编号);

给出测试结果:

9.2.参照完整性的实现

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

给出相应的过程:

(1)新建数据库关系图,添加cp表和cpxsb表,创建外间关系,将insert和update规范

中的更新规则和删除规则都设置为无操作。

(2)sql语句

alter table cpxsb

add constraint cpxsbkey1 foreign key(产品编号)references cp(产品编号) on delete no action

on update no action;

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

将cp中产品编号为100004的一行删除,提示拒绝删除

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

给出相应的SQL语句:

alter table cpxsb

add constraint cpxsbkey2 foreign key(客户编号)references xss(客户编号) on delete cascade

on update cascade;

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

删除xss表中客户编号为00002的数据,在cpxsb中客户编号为00002的数据也随之删除。

删除客户编号为00002后的xss表。

在xss删除中删除数据后的cpxsb表

思考:外键参照关系中CASCADE(级联)和NO ACTION方式的作用各是什么?

on delete cascade和on update cascade表示当删除和更新主表中的关联数据时,级联删除和更新从表中的相应的元祖。

on delete no action和on update no action表示当删除和更新主表中关联的数据时,造成与从表的数据不一致,而拒绝删除。

9.3.域完整性的实现

1.Unique约束

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

给出相应的SQL语句:

alter table cp

add constraint cp1 unique(产品名称);

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

在cp表中插入和MP3产品名称相同的记录。

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

给出相应的SQL语句:

alter table cp

add constraint cp2 check(价格>0);

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

在cp表中插入价格为-3的一条记录。

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

给出相应的SQL语句:

alter table cp

add constraint check_kc1 check(库存量>=5);

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

在cp表中插入库存量为3的一个记录:

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

给出相应的SQL语句和运行结果截图:

alter table cp

drop constraint check_kc1;

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

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

数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,保证了数据的安全性。

9.4.完成以下实验练习

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

给出相应的SQL语句:

alter table xss

add constraint xss1 check(地区in('镇江','无锡','上海','南京','厦门测试:试着在XXS表中插入一条记录,其“地区”字段的值为福州。

给出测试结果:

插入地区字段为福州的记录:

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

给出相应的SQL语句:

相关文档
最新文档