数据库完整性.docx
- 文档编号:2227879
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:11
- 大小:163.92KB
数据库完整性.docx
《数据库完整性.docx》由会员分享,可在线阅读,更多相关《数据库完整性.docx(11页珍藏版)》请在冰豆网上搜索。
数据库完整性
大连海事大学
数据库原理课程实验大纲
实验名称:
实验七完整性实验学时:
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)
);
如图给点约束名,和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(SUPP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 完整性