资源描述:
《数据库的完整性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、...《数据库原理》实验报告姓名学号日期2013.05.07实验室指导教师设备编号实验题目实验单元四数据库的完整性一、实验目的1.加深对数据库完整性的理解。2.掌握数据库实体完整性控制的定义和使用方法。3.掌握数据库参照完整性控制的定义和使用方法。4.掌握域完整性的定义方法,包括NOTNUL、LUNIQUE、CHEC、KDEFAUL。T二、实验内容1.实体完整性:把表中的每行看作一个实体,要求所有行都具有唯一标识。通过建立索引、PRIMARYKEY、UNIQUE来实现。2.参照完整性:维护被参照表与参照表之间的数据一致性,通过主键(PRIMARYKEY)和外键(FOREI
2、GNKEY)约束实现。使用FOREIGNKEY约束需注意:FOREIGNKEY约束只参照同一个数据库中的其它表,跨数据库表的参照只能通过触发器来实现。(触发器可暂时不做,第八章之后再做。)3.用户定义的完整性:要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。通过默认值、CHEC、K规则等约束实现。4.创建一个部门数据库,建立如下两个表,自己设置主码外码,同时为联系电话字段设置默认值'0000000',员工年龄不得超过60岁。注意:每个约束都要命名,包括主码外码,以方便后续的操作。表1部门表部门代码部门名称负责人联系电话0001生产部李华江8696098600
3、02销售部张丽854387690003市场部王欣67893542表2员工表员工代码姓名年龄家庭住址邮政编码部门代码200001王华35杭州3100060001200002李想27富阳3100100003200003张丽40杭州3100170002200004李华江38萧山31010100015.输入数据时,设计一些数据,检查当数据违反完整性时的运行情况。比如:输入重复或空的主码值,输入不在范围内的年龄等。6.用ALTERTABLE语句添加约束UniqueName,使员工姓名唯一,新输入一行元组,测试违反限制时的运行情况。7.用ALTERTABLE语句添加属性列性别,并创建
4、默认约束,当插入记录时,如果没有提供性别的值,那么默认值为女。输入元组检查运行情况。......三、实验要求1.报告中由同学写明具体的操作意图(文字描述)、操作命令(SQL语句)、和执行结果(文字描述+适当截图)。2.具体操作(如)可参照实验内容自己设定。......四、实验结果1.创建部门表createtablesection(snochar(8)primarykey,--部门代码(主码)snamechar(8)unique,--部门名称zhuguanchar(8)notnull,--负责人phonechar(11)default'0000000'--联系电话,并设置默
5、认值'0000000');2.创建员工表createtableworker(wnochar(9)primarykey,--员工代码(主码)wnamechar(8),--姓名wagesmallintcheck(wage<=60),--年龄,员工年龄不得超过岁dizhichar(8),--家庭住址youbianchar(8),--邮政编码snochar(8),--部门代码(外码)foreignkey(sno)referencessection(sno));3.插入部门数据insertintodbo.section(sno,sname,zhuguan,phone)values(
6、'0001','生产部','李华江','86960986')insertintodbo.section(sno,sname,zhuguan,phone)values('0002','销售部','张丽','85438769')......insertintodbo.section(sno,sname,zhuguan,phone)values('0003','市场部','王欣','67893542')--未插入电话时,默认值为”0000000”insertintodbo.section(sno,sname,zhuguan)values('0005','管理部','欣悦')1.
7、插入员工数据insertintodbo.worker(wno,wname,wage,dizhi,youbian,sno)values('200001','王华',35,'杭州','310006','0001')insertintodbo.worker(wno,wname,wage,dizhi,youbian,sno)values('200002','李想',27,'富阳','310010','0002')insertintodbo.worker(wno,wname,wage,dizhi,youbian,sno)values('