数据库完整性.docx

上传人:b****3 文档编号:24789671 上传时间:2023-06-01 格式:DOCX 页数:12 大小:163.88KB
下载 相关 举报
数据库完整性.docx_第1页
第1页 / 共12页
数据库完整性.docx_第2页
第2页 / 共12页
数据库完整性.docx_第3页
第3页 / 共12页
数据库完整性.docx_第4页
第4页 / 共12页
数据库完整性.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据库完整性.docx

《数据库完整性.docx》由会员分享,可在线阅读,更多相关《数据库完整性.docx(12页珍藏版)》请在冰豆网上搜索。

数据库完整性.docx

数据库完整性

大连海事大学

数据库原理课程实验大纲

实验名称:

实验七完整性实验学时:

2

适用专业:

实验环境:

执笔者:

编写日期:

1实验目的

(1)掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。

(2)掌握完整性约束的运行检查机制。

(3)掌握参照完整性的级联删除和修改方法。

(4)掌握正确设计关系模式完整性约束的方法。

2实验内容

2.1掌握实体完整性约束的创建和使用方法

(1)创建表时定义由一个属性组成的主键(给约束命名)。

(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。

(3)删除以上两个主键约束。

(4)利用ALTERTABLE语句定义上述两个主键。

2.2掌握参照完整性约束的创建和使用方法

(5)创建表时定义一个列级参照完整性约束(给约束命名)。

(6)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。

(7)设计数据更新语句检查参照完整性约束是否起作用。

(8)删除上述完整性约束。

(9)利用ALTERTABLE建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。

(10)设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。

2.3掌握用户自定完整性约束的创建和使用方法

(11)定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?

(12)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?

(13)定义一个检查其值符合某个正则表达式的检查约束(使用SIMILARTO),并设计相应的更新语句检查该约束是否起作用?

(14)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?

(15)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。

3实验要求

(1)深入复习教材第五章数据库完整性约束内容。

(2)根据书上的例子,针对TPCH数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。

也可以按照附1所列示例做实验。

(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。

(4)思考题:

完整性约束的违约处理有哪几种方式?

4实验步骤

4.1掌握实体完整性约束的创建和使用方法

(1)创建表时定义由一个属性组成的主键(给约束命名)。

创建零件表part时定义主键。

/

CREATETABLEPART

(PARTKEYINTEGER,

MFGRCHAR(100),

TYPECHAR(25),

SIZEINTEGER,

NAMECHAR(55),

CONTAINERCHAR(10),

BRANDCHAR(10),

RETAILPRICEREAL,

COMMENTVARCHAR(23),

CONSTRAINTPARTYPRIMARYKEY(PARTKEY))

如图:

partkey为主键

(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。

创建零件供应关系表partsupp时定义主键。

CREATETABLEPARTSUPP

(PARTKEYINTEGER,

AVAILQTYINTEGER,

SUPPKEYINTEGER,

COMMENTVARCHAR(199),

SUPPLYCOSTREAL,

CONSTRAINTPARTSUPPYPRIMARYKEY(PARTKEY,SUPPKEY)

);

如图给点约束名PARTSUPPY.PARTKEY,和SUPPKEY为主键

(3)删除以上两个主键约束。

删除零件表和零件供应关系表的主键。

ALTERTABLEPARTSUPP

DROPCONSTRAINTPARTSUPPY;

利用约束名SUPPKEY删除约束

ALTERTABLEPART

DROPCONSTRAINTPARTY

利用约束名PARTY删除约束

 

(4)利用ALTERTABLE语句定义上述两个主键。

利用ALTERTABLE增加part和partsupp表的主键。

ALTERTABLEPART

ADDCONSTRAINTPARTYPRIMARYKEY(PARTKEY);

利用ALTER给表PART增加约束PARTY

ALTERTABLEPARTSUPP

ADDCONSTRAINTPARTSUPPYPRIMARYKEY(PARTKEY,SUPPKEY)

利用ALTER给表增加约束PARTSUPPY主键PARTKEY,SUPPKEY

4.2掌握参照完整性约束的创建和使用方法

(5)创建表时定义一个列级参照完整性约束(给约束命名)。

定义partsupp表的列级参照完整性约束。

CREATETABLEPARTSUPP

(PARTKEYINTEGER,

AVAILQTYINTEGER,

SUPPKEYINTEGER,

COMMENTVARCHAR(199),

SUPPLYCOSTREALNOTNULL,

CONSTRAINTPARTSUPPYPRIMARYKEY(PARTKEY,SUPPKEY)

);

 

(6)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。

定义lineitem的参照完整性约束。

CREATETABLElineitem(

orderkeyINTEGER,

partkeyINTEGER,

suppkeyINTEGER,

linenumberINTEGER,

quantityREAL,

extendedpriceREAL,

discountREAL,

taxREAL,

returnflagCHAR

(1),

linestatusCHAR

(1),

shipDATEDATE,

commitDATEDATE,

receiptDATEDATE,

shipinstructCHAR(25),

shipmodeCHAR(10),

commentVARCHAR(44)

CONSTRAINTLINETYPRIMARYKEY(ORDERKEY,PARTKEY,SUPPKEY),

CONSTRAINTFPARTFOREIGNKEY(PARTKEY)REFERENCESPART,

CONSTRAINTFPARTSUPPFOREIGNKEY(SUPPKEY,PARTKEY)REFERENCESPARTSUPP);

创建表时创建外码FPART和FPARTSUPP分别为PART和PARTSUPP表的主码

(7)设计数据更新语句检查参照完整性约束是否起作用。

设计INSERT、DELETE和UPDATE语句检查上述完整性约束是否有效。

INSERTINTOlineitem(orderkey,partkey,suppkey)

VALUES('4','2','4')

INSERTINTOPART(PARTKEY,SIZE,RETAILPRICE)

VALUES('1','34','2')

(8)删除上述完整性约束。

删除partsupp和lineitem的参照完整性约束。

ALTERTABLELINEITEM

DROPCONSTRAINTFPART

ALTERTABLELINEITEM

DROPCONSTRAINTFPARTSUPP

ALTERTABLEPARTSUPP

DROPCONSTRAINTFPART

(9)利用ALTERTABLE建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。

利用ALTERTABLE建立上述两个完整性约束,并规定UPDATE和DELETE级联修改和删除。

ALTERTABLEPARTSUPP

ADDCONSTRAINTFPARTFOREIGNKEY(PARTKEY)REFERENCESPARTONDELETECASCADEONUPDATENOACTION

ALTERTABLELINEITEM

ADDCONSTRAINTFPS1FOREIGNKEY(PARTKEY)REFERENCESPARTONDELETECASCADEONUPDATENOACTION

ALTERTABLELINEITEMON

ADDCONSTRAINTFPS2FOREIGNKEY(SUPPKEY,PARTKEY)REFERENCESPARTSUPPONDELETENOACTIONONUPDATENOACTION

(10)设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。

删除零件供应记录partsupp或者是lineitem表中的记录,检查约束是否起作用?

删除主键时因为主码约束无法删除

4.3掌握用户自定完整性约束的创建和使用方法

 

(11)定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?

定义一个检查Lineitem中的折扣只能在0和1之间的CHECK约束,并设计INSERT语句检查约束是否起作用。

ALTERTABLElineitemADDCONSTRAINTCHE1CHECK(DISCOUNTbetween0and1)

(12)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?

定义一个CHECK约束,检查国家表nation中的国家名称的最后一个字必须为“国”字。

设计一个INSERT语句检查该约束是否有效。

altertablenation

addconstraintnamekcheck(namelike'%国');

(13)定义一个检查其值符合某个正则表达式的检查约束(使用SIMILARTO),并设计相应的更新语句检查该约束是否起作用?

定义一个CHECK约束,检查CUSTOMER表中的PHONE必须由12位数字组成。

并设计一个INSERT语句或者是UPDATE语句检查该约束是否有效。

altertablecustomer

addconstraintCHE3check(PHONESIMILARTO('__________'));

不为12位语句已终止

(14)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?

在NATION表的NAME字段上定义一个UNIQUE约束,不允许国家名重复。

设计一个INSERT语句检查约束是否有效。

altertablenation

addconstraintCHE4UNIQUE(NAME);

(15)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。

在SUPPLIER表中的NATIONKEY字段上定义一个DEFAULT约束,默认取值为中国的国家代码。

并设计一个INSERT语句检查该约束是否有效。

ALTERTABLESUPPLIER

ADDCONSTRAINTCHE5DEFAULT1FORNATIONKEY

INSERTINTOSUPPLIER(SUPPKEY,NAME)

VALUES('1','张锋')

默认为1,如图示

思考题:

冲突处理有四种解决方式:

noaction,restrict,setnull,cascade

Noaction指在违约时直接回滚不作任何处理,restrict在违约时拒绝执行命令,set在违约时把违约项设为空值,cascade当当删除或修改参照关系中某元组的主码值时,被参照关系中,那些外部码具有该值的元组也将被删除或修改,以保证参照完整性。

5总结与体会

5.1实验中出现的问题及其解决方案

因为时间过长而且知识点多且杂,在实现时多花了很多时间。

为此专门看了一下PPT,了解了这一章讲了什么。

有很多实验内容书上没有,为此专门查了很多资料,最终解决了这个问题。

5.2总结

数据库完整性约束是定义数据库一个很重要的东西,使用完整性约束可以避免数据库数据输入错误的问题,提高数据库运行效率。

另一方面,数据库完整性约束可以更为方便的定义数据库,使数据库的规范程度提高。

5.3体会

这次实验叫上一次比较简单,但实现起来还是有一些难度,希望下次实验可以很好的解决这些问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1