您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据库完整性与安全性实验
北京邮电大学实验报告课程名称数据库系统概念实验名称数据库完整性与安全性实验__系___班姓名__系___班姓名教师______成绩_________2011年5月2日目录一、实验目的.................................................................4二、实验内容.................................................................4三、实验环境.................................................................7四、实验要求.................................................................7五、实验步骤及结果分析........................................................7(一)完整性实验.........................................................7一、建表阶段.......................................................7二、主键/候选键约束验证...........................................10三、外键约束验证..................................................12四、check/触发器约束验证..........................................18(二)安全性实验.........................................错误!未定义书签。六、实验总结.................................................错误!未定义书签。一、实验目的1.通过对完整性规则的定义实现,熟悉了解Sybase数据库中实体完整性、参照完整性、断言等完整性保证的规则和实现方法,加深对数据完整性的理解。2.通过对安全性相关内容的定义,熟悉了解Sybase数据库中安全性的内容和实现方法,加深对数据库安全性的理解。二、实验内容(一)、完整性实验与要求:一、建表阶段1.利用SQL语句,分别定义数据库中各基本表的主键、候选键、外键,实现实体完整性约束和参照完整性约束。2.在数据库中选取两张或三张具有外键关联的表,利用语句foreignkey-references创建外键,实现参照完整性约束。3.根据实际背景,对某些表中的某些特定属性,定义空值、非空约束。4.建表时,使用check谓词,通过断言,添加如下一些约束:(1)1个MSC最多管理10个BSC。(2)1个BSC最多管理50个小区/扇区。(3)1个BTS可以连接至1-3个BSC。(4)1个MS可以位于1到6个BTS的覆盖范围内。(5)小区/扇区所使用的频点号在[1,124]之间。二、主键/候选键约束验证1.选取定义了主键的关系表,向该表插入在主属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在主属性上的取值,或插入新元组,使这些元组与表中已有其它元组的主属性取值相同,观察系统反应;2.选取定义了候选键的关系表,向该表插入在候选键属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在候选键属性上的取值,或插入新元组,使这些元组与表中已有其它元组的候选键属性取值相同,观察系统反应;三、外键约束验证参照教科书和讲义上关于4.2.5节内容,完成下述实验。1.选取相互间定义了外键关联的一组表,分别在参照关系、被参照关系上,对表的主属性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。2.观察级联操作对外键约束的影响1)对相互间定义了外键关联关系的一组表,分别使用foreignkey-referencesondeletecascadeonupdatecascadeoninsertcascade语句创建级联外键约束。2)分别在参照关系、被参照关系上,对表的主属性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。分别用DB2ControlCenter和DB2CLP完成以上操作。三、check/触发器约束验证选取建表阶段定义的2个断言约束,对断所涉及的元组属性做插入、删除、更新操作,观察当违反断言、触发器约束条件时,DBMS的反映和关系表内元组数据的变化(对触发器)。(二)、安全性实验内容与要求:Sybase数据库实验:(1)以DBA身份登陆系统,创建用户,对用户授予不同的访问数据库权限。例如:连接、DBA、RESOURCE等权限。具有RESOURCE权限的用户可以创建新的数据库对象,例如表、视图、索引、过程或触发器。(2)由DBA为普通用户授予(grant)或撤销(revoke)针对数据库中表、视图等不同数据对象的不同访问权限;由DBA为普通用户授予‘授予权限’的权限。(3)以常规用户登录,用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映。(4)分别在图形化界面、命令行中,使用revoke命令撤销用户权限。(5)分别在图形化界面、命令行中,使用revoke命令删除数据库用户。(6)创建数据库时,还会自动创建SYS、PUBLIC和dbo组(Sybase数据库)。通过帮助文档,了解这些组在数据库中起到的作用。(7)以DBA身份登陆系统,创建用户组,为用户组授予(grant)或撤销(revoke)针对数据库中表、视图等不同数据对象的不同访问权限。(8)将组成员资格授予现有用户或组,现有用户或组访问数据库对象,查看访问结果。撤销现有用户或组的组成员资格,查看访问结果。(9)分别在图形化界面、命令行中,使用revoke命令从数据库删除组。(10)分别采用WindowsNT/2000验证方式和WindowsNT/2000及DB2或Sybase数据库混合验证方式用不同的用户进行登录连接。(11)创建数据库角色,并授予访问通信数据库的读、写权限,并对其中的Cell表数据进行修改。(12)将角色赋予(1)中定义的用户,建立用户和角色联系。(13)再次用此用户访问通信数据库,并对其中的Cell表数据进行修改。三、实验环境采用Sybase数据库管理系统作为实验平台。其中,Sybase数据库采用SybaseAdaptiveServerEnterprise15.0(ASE)。四、实验要求1.用Transact_SQL语句完成以上操作。2.要求学生独立完成以上内容。实验完成后完成要求的实验报告内容。五、实验步骤及结果分析(一)完整性实验一、建表阶段1、利用SQL语句,分别定义数据库中各基本表的主键、候选键、外键,实现实体完整性约束和参照完整性约束。代码详见附录。2、在数据库中选取两张或三张具有外键关联的表,利用语句foreignkey-references创建外键,实现参照完整性约束。代码详见附录。3、根据实际背景,对某些表中的某些特定属性,定义空值、非空约束。代码详见附录。4、建表时,使用check谓词,通过触发器,添加如下一些约束:a)1个MSC最多管理10个BSC。脚本:createtriggerBSC_to_MSConBSCforinsert,updateasifexists(selectinserted.MscIDfrominserted,(selectMscID,count(BscID)asBSC_numberfromBSCgroupbyMscID)asMSC_Count_BSCwhereBSC_number10andinserted.MscID=MSC_Count_BSC.MscID)beginprintAMSCcanonlymanageatmost10BSCs.rollbacktransactionendb)1个BSC最多管理50个小区/扇区。脚本:createtriggerCELL_to_BSConCELLforinsert,updateasifexists(selectinserted.BTSnamefrominserted,BTS,(selectBSC.BscID,count(distinctCellID)asCell_numberfromBSC,BTS,CELLwhereBSC.BscID=BTS.BscIDandBTS.BTSname=CELL.BTSnamegroupbyBSC.BscID)asBSC_Count_CellwhereCell_number50andinserted.BTSname=BTS.BTSnameandBTS.BscID=BSC_Count_Cell.BscID)beginprintABSCcanonlymanageatmost50Cells.rollbacktransactionendc)1个BTS可以连接至1-3个BSC。脚本:createtriggerBTS_to_BSConKong_Zhiforinsert,updateasifexists(selectinserted.BTSnamefrominserted,(selectBTSname,count(BscID)asBSC_numberfromKong_ZhigroupbyBTSname)asBTS_Count_BSCwhereinserted.BTSname=BTS_Count_BSC.BTSnameandBSC_numbernotbetween1and3)beginprintABTScanonlyconnecttoatleast1andatmost3BSCs.rollbacktransactionendd)1个MS可以位于1到6个BTS的覆盖范围内。脚本:createtriggerMS_to_BTSonFu_Gaiforinsert,updateasifexists(selectinserted.CellIDfrominserted,(selectIMEI,count(CellID)asBTS_numberfromFu_GaigroupbyIMEI)asMS_Count_BTSwhereinserted.IMEI=MS_Count_BTS.IMEIandMS_Count_BTS.BTS_numbernotbetween1and6)beginprintAnMScanonlyconnecttoatleast1andatmost6BTS.rollbacktransactionende)小区/扇区所使用的频点号在[1,124]之间。脚本:altertablePin_DianaddconstraintCHECK_FREQcheck(Freqbetween1and124)二、主键/候选键约束验证1.选取定义了主键的关系表,向该表插入在主属性上取值为空的元组,观察系统反应;此步骤中选取MSC表。向MSC表中插入元组(NULL,'HWMSC2','Huawei',121.123456,41.123456,2000),结果如下:插入操作失败。选取表中某些或某个元组,修改这些元组在主属性上的取值,或插入新元组,使这些元组与表中已有其它元组的主属性取值相同,观察系统反应;此步骤中选取MSC表
本文标题:数据库完整性与安全性实验
链接地址:https://www.777doc.com/doc-3603339 .html