您好,欢迎访问三七文档
北华航天工业学院《数据库原理与应用》实验报告报告题目:数据库完整性管理作者所在系部:计算机科学与工程系作者所在专业:网络工程作者学号:20114052203作者姓名:郭豪指导教师姓名:李建义完成时间:2013.05.10北华航天工业学院教务处制数据库完整性管理一、实验目的1、理解数据库完整性约束机制;2、掌握创建、修改和删除完整性约束的方法;3、掌握创建和删除触发器的方法。二、实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。(二)约束的创建和管理1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联删除图书信息表中对应的记录;书名不允许空值;库存数限制的25到100之间。2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。4、使用SQL语句将第1题的库存数限制修改为30到80之间。5、使用SQL语句删除第3题增加的约束。(三)触发器的创建和管理1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。三、实验步骤(一)附加过程略,(二)1,创建表tb_booknew,代码及截图createtabletb_booknew(book_nochar(10),booktype_noint,book_namechar(20)notnull,book_writerchar(10),book_stockintconstraintC1check(book_stockbetween25and100),primarykey(book_no),foreignkey(booktype_no)referencesdb_library.dbo.tb_booktype(类别编号)ondeletecascade)2,创建tb_borrownew代码及截图。createtabletb_borrownew(tb_reader_nochar(10),tb_book_nochar(10),tb_borrow_datedate,tb_back_datedate,primarykey(tb_reader_no,tb_book_no))3,给tb_booknew书名增加唯一性约束代码及截图altertabletb_booknewaddconstraintc2unique(book_name)4,修改tb_booknew的库存数在30—80之间。altertabletb_booknewdropconstraintC1altertabletb_booknewaddconstraintC1check(book_stockbetween30and80)5,、使用SQL语句删除第3题增加的约束。altertabletb_booknewdropconstraintc2(三)(1)创建触发器借阅信息插入修改_TRIGcreatetrigger借阅信息插入修改_TRIGondbo.tb_borrowforinsert,updateasdeclare@借阅日期date,@归还日期datebeginselect@借阅日期=借阅日期,@归还日期=归还日期frominsertedif(DATEDIFF(M,@借阅日期,@归还日期)3)beginprint('该借阅记录已经超过三个月!!!');endelseif(exists(select*frominserted)andnotexists(select*fromdeleted))beginprint('插入成功!!!');endifexists(select*frominserted)andexists(select*fromdeleted)beginprint('修改成功!!!');endendgo验证1:insertintotb_borrow(图书编号,读者编号,借阅日期,归还日期)values(10002,'R10003','2012-3-3','2012-4-4')go验证2updatetb_borrowset归还日期='2012-3-20'where图书编号=10002and读者编号='R10003'and借阅日期='2012-3-3'go验证3:insertintotb_borrow(图书编号,读者编号,借阅日期,归还日期)values(10002,'R10003','2012-3-3','2013-4-4')go(2)创建触发器代码及截图:usedb_Librarygocreatetrigger图书信息_TRIG-----------创建图书信息触发器ontb_bookforinsert,updateasdeclare@库存数intbeginselect@库存数=库存数frominsertedwhile(@库存数=0)beginprint('库存数小于等于,插入更新操作已停止!!!!');breakendwhile(@库存数0)beginif(exists(select*frominserted)andnotexists(select*fromdeleted))beginprint('插入成功!!!');breakendifexists(select*frominserted)andexists(select*fromdeleted)beginprint('修改成功!!!');breakendendendgogo验证代码及截图:insertintotb_book(书名,作者,出版社,库存数)values('数据库h','aaaaaaa','fdfdffd',-1)go(3),droptrigger借阅信息插入修改_TRIG四,实验总结有关于数据库实验的心得体会,总的来说,受益匪浅。在这些天中,我们学到了很多东西,包括建表,导入数据,查询,插入,以及文件的隔离、添加。SQLServer数据库的实验学习使我对数据库的有了新的进步,我感谢数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,SQLServer能给我更多帮助。感谢学校开设这样一门优秀使用的课程,让我对数据库有了更深的了解。
本文标题:数据库完整性管理
链接地址:https://www.777doc.com/doc-5362696 .html