资源描述:
《数据库实验报告完整性约束》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大连海事大学数据库原理课程实验大纲实验名称:实验七完整性实验学时:2适用专业:智能科学与技术实验环境:MicrosoftSQLserver20141实验目的(1)掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。(2)掌握完整性约束的运行检查机制。(3)掌握参照完整性的级联删除和修改方法。(4)掌握正确设计关系模式完整性约束的方法。2实验内容2.1掌握实体完整性约束的创建和使用方法(1)创建表时定义由一个属性组成的主键(给约束命名)。(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。(3)删除以上
2、两个主键约束。(4)利用ALTERTABLE语句定义上述两个主键。2.2掌握参照完整性约束的创建和使用方法(5)创建表时定义一个列级参照完整性约束(给约束命名)。(6)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。(7)设计数据更新语句检查参照完整性约束是否起作用。(8)删除上述完整性约束。(9)利用ALTERTABLE建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。(10)设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。2.3掌握用户自定完整性约束的创建和使用方法(
3、11)定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?(12)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?(13)定义一个检查其值符合某个正则表达式的检查约束(使用SIMILARTO),并设计相应的更新语句检查该约束是否起作用?(1)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?(2)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。1实验要求(1)深入复习教材第五章数据库完整性约
4、束内容。(2)根据书上的例子,针对TPCH数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例做实验。(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。(4)思考题:完整性约束的违约处理有哪几种方式?2实验步骤2.1掌握实体完整性约束的创建和使用方法(1)创建表时定义由一个属性组成的主键(给约束命名)。CREATETABLEPART(PARTKE
5、YINTEGER,MFGRCHAR(100),TYPECHAR(25),SIZEINTEGER,NAMECHAR(55),CONTAINERCHAR(10),BRANDCHAR(10),RETAILPRICEREAL,COMMENTVARCHAR(23),CONSTRAINTPARTYPRIMARYKEY(PARTKEY));(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。CREATETABLEPARTSUPP(PARTKEYINTEGER,AVAILQTYINTEGER,SUPPKEYINTEGER,C
6、OMMENTVARCHAR(199),SUPPLYCOSTREAL,FOREIGNKEY(PARTKEY)REFERENCESPART,FOREIGNKEY(SUPPKEY)REFERENCESSUPPLIER,CONSTRAINTPARTSUPPYPRIMARYKEY(PARTKEY,SUPPKEY));(3)删除以上两个主键约束。ALTERTABLEPARTSUPPDROPCONSTRAINTPARTSUPPY;(1)利用ALTERTABLE语句定义上述两个主键。SELECT*FROMinformation_sche
7、ma.table_constraints;ALTERTABLELINEITEMADDCONSTRAINTLINEITEMKEYPRIMARYKEY(ORDERKEY,LINENUMBER);1.1掌握参照完整性约束的创建和使用方法(2)创建表时定义一个列级参照完整性约束(给约束命名)。ALTERTABLEPARTSUPPADDCONSTRAINTC1check(partkeybetween1and999999);(3)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。ALTERTABLElineitem
8、addconstraintlinepartkeyforeignkey(partkey)referencespart;(4)设计数据更新语句检查参照完整性约束是否起作用。insertintolineitem(orderkey,partkey,suppkey,linenumber,quantity)values('222