6数据库完整性与安全性实验.docx
- 文档编号:10912075
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:63
- 大小:1.39MB
6数据库完整性与安全性实验.docx
《6数据库完整性与安全性实验.docx》由会员分享,可在线阅读,更多相关《6数据库完整性与安全性实验.docx(63页珍藏版)》请在冰豆网上搜索。
6数据库完整性与安全性实验
北京邮电大学
实验报告
课程名称数据库系统原理
实验名称数据库完整性与安全性实验
计算机科学与技术系05402班姓名宋莹
班内序号05学号051014
教师_____成绩_________
教师评语:
2008年5月15日
实验目的:
1.通过对完整性规则的定义实现,熟悉了解DB2或Sybase数据库中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解DB2或Sybase数据库中安全性的内容和实现方法,加深对数据库安全性的理解。
实验环境:
硬件配置:
一台笔记本电脑,windowsXP系统。
软件配置:
采用IBMDB2Express-C数据库管理系统作为实验平台。
参与人员:
宋莹。
实验内容:
(一)、完整性实验与要求:
一、建表阶段
1.分别定义数据库中各基本表的主键、候选键、外键;使用空值、非空约束定义属性,实现实体完整性约束和参照完整性约束。
在实验数据库表的创建与维护实验中,在定义各基表时已经定义了各表的主键,外键。
如下所示:
CREATETABLEMSC(
MSCIDINTEGERNOTNULL,
MSCNAMECHARACTER(10),
MSCCOMPANYCHARACTER(10),
MSCLONGITUDEDECIMAL(9,6),
MSCLATITUDEDECIMAL(8,6),
MSCALTITUDEINTEGER,
PRIMARYKEY(MSCID));
CREATETABLEBSC(
BSCIDINTEGERNOTNULL,
BSCNAMECHARACTER(10),
BSCCOMPANYCHARACTER(10),
LONGITUDEDECIMAL(9,6),
LATITUDEDECIMAL(8,6),
MSCIDINTEGER,
PRIMARYKEY(BSCID),
FOREIGNKEY(MSCID)REFERENCESMSC(MSCID));
CREATETABLEBTS(
BTSNAMECHARACTER(20)NOTNULL,
BSCIDINTEGERNOTNULL,
LONGITUDEDECIMAL(9,6),
LATITUDEDECIMAL(8,6),
ALTITUDEINTEGER,
BTSCOMPANYCHARACTER(10),
BTSPOWERDECIMAL(2,1),
PRIMARYKEY(BTSNAME),
FOREIGNKEY(BSCID)REFERENCESBSC(BSCID));
CREATETABLECELL(
CELLIDINTEGERNOTNULL,
BTSNAMECHARACTER(20),
AREANAMECHARACTER(10),
LACINTEGER,
LONGITUDEDECIMAL(9,6),
LATITUDEDECIMAL(8,6),
DIRECTIONINTEGER,
RADIOUSINTEGER,
ANTNUMINTEGER,
BCCHINTEGER,
PRIMARYKEY(CELLID),
FOREIGNKEY(BTSNAME)REFERENCESBTS(BTSNAME));
CREATETABLEMS(
IMEIBIGINTNOTNULL,
MSISDNBIGINT,
USERNAMEVARCHAR(10),
MSCOMPANYVARCHAR(20),
GSMMSPSENSEINTEGER,
GSMMSHEIGHTDECIMAL(3,2),
GSMMSPFOUTDECIMAL(3,2),
MZONECHARACTER(10),
CELLIDINTEGER,
PRIMARYKEY(IMEI),
FOREIGNKEY(CELLID)REFERENCESCELL(CELLID));
CREATETABLEANTENNA(
CELLIDINTEGER,
ANTENNAHIGHINTEGER,
HALFPANGLEINTEGER,
MAXATTENUATIONINTEGER,
GAININTEGER,
ANTTILTINTEGER,
PTINTEGER,
MSPWRINTEGER,
FOREIGNKEY(CELLID)REFERENCESCELL(CELLID));
CREATETABLECELL_TCH(
CELLIDINTEGER,
FREQINTEGER,
FOREIGNKEY(CELLID)REFERENCESCELL(CELLID));
CREATETABLEDATA(
DATEINTEGERNOTNULL,
TIMEINTEGERNOTNULL,
CELLIDINTEGERNOTNULL,
NTCHINTEGER,
TRAFFDECIMAL(9,7),
RATEDECIMAL(10,9),
THTRAFFDECIMAL(9,7),
CALLNUMINTEGER,
CONGSNUMINTEGER,
CALLCONGSDECIMAL(10,9),
PRIMARYKEY(DATE,TIME,CELLID));
CREATETABLETEST(
KEYNUMINTEGERNOTNULL,
CELLIDINTEGER,
LATITUDEDECIMAL(9,6),
LONGITUDEDECIMAL(8,6),
RXLEVDECIMAL(9,6),
PRIMARYKEY(KEYNUM),
FOREIGNKEY(CELLID)REFERENCESCELL(CELLID));
CREATETABLENEIGHBOR(
CELLIDINTEGER,
ADJCELLIDINTEGER,
CELLLACINTEGER,
ADJCELLLACINTEGER,
FOREIGNKEY(CELLID)REFERENCESCELL(CELLID));
2.建表时,使用check谓词、触发器trigger,添加如下一些约束:
(1)1个MSC最多管理10个BSC。
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERMSC_BSCBEFOREINSERTONBSCREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(BSCID)
fromBSC
whereMSCID=newrow.MSCID)>=10)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneMSCcancontrolnomorethan10BSC');
END^
CREATETRIGGERMSC_BSC2BEFOREUPDATEOFBSCID,MSCIDONBSCREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(BSCID)
fromBSC
whereMSCID=newrow.MSCID)>=10)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneMSCcancontrolnomorethan10BSC');
END
在命令编辑器中执行,将语句终止字符改为^:
(2)1个BSC最多管理50个小区/扇区。
由于BTS与CELL一一对应,故用BTS代替CELL。
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERBSC_BTSBEFOREINSERTONBTSREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(BTSNAME)
fromBTS
whereBSCID=newrow.BSCID)>=50)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneBSCcancontrolnomorethan50BTS');
END^
CREATETRIGGERBSC_BTS2BEFOREUPDATEOFBTSNAME,BSCIDONBTSREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(BTSNAME)
fromBTS
whereBSCID=newrow.BSCID)>=50)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneBSCcancontrolnomorethan50BTS');
END
在命令编辑器中执行,将语句终止字符改为^:
(3)1个BTS可以连接至1-3个BSC。
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERBTS_BSCBEFOREINSERTONBTSREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(BSCID)
fromBTS
whereBTSNAME=newrow.BTSNAME)>=3)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneBTScanconnecttonomorethan3BSC');
END^
CREATETRIGGERBTS_BSC2BEFOREUPDATEOFBTSNAME,BSCIDONBTSREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(BSCID)
fromBTS
whereBTSNAME=newrow.BTSNAME)>=3)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneBTScanconnecttonomorethan3BSC');
END
在命令编辑器中执行,将语句终止字符改为^:
(4)1个MS可以位于1到6个BTS的覆盖范围内。
由于BTS与CELL一一对应,故用CELL代替BTS
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERMS_BTSBEFOREINSERTONMSREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(CELLID)
fromMS
whereIMEI=newrow.IMEI)>=6)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneMScanbecoveredwithnomorethan6BTS');
END^
CREATETRIGGERMS_BTS2BEFOREUPDATEOFIMEIONMSREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(CELLID)
fromMS
whereIMEI=newrow.IMEI)>=6)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneMScanbecoveredwithnomorethan6BTS');
END
在命令编辑器中执行,将语句终止字符改为^:
(5)小区/扇区所使用的频点号在[1,124]之间。
SQL语句为:
altertableCELL_TCH
addcheck(FREQbetween1and124)
执行结果如下:
(6)每个小区/扇区最多占用14个频点,可用信道数小于112。
每个小区/扇区最多占用14个频点:
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERCELL_FREQBEFOREINSERTONCELL_TCHREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(FREQ)
fromCELL_TCH
whereCELLID=newrow.CELLID)>=14)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneCELLcanbecoveredwithnomorethan14FREQ');
END^
CREATETRIGGERCELL_FREQ2BEFOREUPDATEOFCELLID,FREQONCELL_TCHREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(FREQ)
fromCELL_TCH
whereCELLID=newrow.CELLID)>=14)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneCELLcanbecoveredwithnomorethan14FREQ');
END
在命令编辑器中执行,将语句终止字符改为^:
每个小区/扇区可用信道数小于112:
altertableDATA
addcheck(NTCH<112)
执行结果如下:
(7)每个小区/扇区有且仅有一个BCCH频点号。
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERCELL_BCCHBEFOREINSERTONCELLREFERENCINGNEWASnewrowFOREACHROW
WHEN((selectcount(BCCH)
fromCELL
whereCELLID=newrow.CELLID)>=1)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneCELLcanhavenomorethan1BCCH');
END^
CREATETRIGGERCELL_BCCH2BEFOREUPDATEOFCELLID,BCCHONCELLREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN((selectcount(BCCH)
fromCELL
whereCELLID=newrow.CELLID)>=1)
BEGINATOMIC
SIGNALSQLSTATE'80001'('OneCELLcanhavenomorethan1BCCH');
END
在命令编辑器中执行,将语句终止字符改为^:
(8)BTS和管理该BTS的BSC的生产厂商必须一致。
1.使用控制中心创建触发器如下所示:
2.SQL语句为:
CREATETRIGGERCOMPANYBEFOREINSERTONBTSREFERENCINGNEWASnewrowFOREACHROW
WHEN(newrow.BTSCOMPANY!
=(selectBSCCOMPANY
fromBSC
wherenewrow.BSCID=BSC.BSCID))
BEGINATOMIC
SIGNALSQLSTATE'80001'('TheBTSmusthavethesamecompanywiththeBSCcontrolit');
END^
CREATETRIGGERCOMPANY2BEFOREUPDATEOFBTSCOMPANYONBTSREFERENCINGOLDASoldrowNEWASnewrowFOREACHROW
WHEN(newrow.BTSCOMPANY!
=(selectBSCCOMPANY
fromBSC
wherenewrow.BSCID=BSC.BSCID))
BEGINATOMIC
SIGNALSQLSTATE'80001'('TheBTSmusthavethesamecompanywiththeBSCcontrolit');
END
在命令编辑器中执行,将语句终止字符改为^:
(9)拥塞率=拥塞数量/呼叫数量。
执行SQL语句:
altertableDATA
addcheck(CALLCONGS=CONGSNUM/CALLNUM)
执行结果如下:
(10)半速率话务量比例=半速率话务量/全速率话务量。
执行SQL语句:
altertableDATA
addcheck(RATE=THTRAFF/TRAFF)
执行结果如下:
二、约束验证
对上述每类约束,选取一张或两张相关联的表作插入、删除、更新等操作。
操作分为违反约束和不违反约束两种情况,观察系统的反应,并记录实验结果。
对于约束
(1)1个MSC最多管理10个BSC
当同一个MSC对应的BSC<10时,可以正常插入,当执行非法插入时,将会发出错误条件信号,如下图所示:
当执行非法更新时,将会发出错误条件信号,如下图所示:
约束2,3,4,6,7与约束1属于同一种类型的约束,可采用相同方法验证。
对于约束(5)小区/扇区所使用的频点号在[1,124]之间
当同一个CELL对应的FREQ在[1,124]之间时,可以正常插入,当执行非法插入时,将会发出错误条件信号,如下图所示:
对于约束(9)拥塞率=拥塞数量/呼叫数量。
当满足拥塞率=拥塞数量/呼叫数量时,可以正常插入,当执行非法插入时,则不能正常插入。
执行导入操作,如下图所示:
约束10与约束9是同一类型约束。
对于约束(8)BTS和管理该BTS的BSC的生产厂商必须一致
当插入BTS信息对应的BTSCOMPANY和管理该BTS的BSC的生产厂商一致时,可以正常插入,当执行非法插入时,将会发出错误条件信号,如下图所示:
三、外键约束验证
1.创建普通外键参照
(1)在数据库中选取两张或三张具有外键关联的表,使用foreignkey-references语句创建外键约束。
在建表时已经考虑到外健,SQL语句如下所示:
CREATETABLEMSC(
MSCIDINTEGERNOTNULL,
MSCNAMECHARACTER(10),
MSCCOMPANYCHARACTER(10),
MSCLONGITUDEDECIMAL(9,6),
MSCLATITUDEDECIMAL(8,6),
MSCALTITUDEINTEGER,
PRIMARYKEY(MSCID));
CREATETABLEBSC(
BSCIDINTEGERNOTNULL,
BSCNAMECHARACTER(10),
BSCCOMPANYCHARACTER(10),
LONGITUDEDECIMAL(9,6),
LATITUDEDECIMAL(8,6),
MSCIDINTEGER,
PRIMARYKEY(BSCID),
FOREIGNKEY(MSCID)REFERENCESMSC(MSCID));
CREATETABLEBTS(
BTSNAMECHARACTER(20)NOTNULL,
BSCIDINTEGERNOTNULL,
LONGITUDEDECIMAL(9,6),
LATITUDEDECIMAL(8,6),
ALTITUDEINTEGER,
BTSCOMPANYCHARACTER(10),
BTSPOWERDECIMAL(2,1),
PRIMARYKEY(BTSNAME),
FOREIGNKEY(BSCID)REFERENCESBSC(BSCID));
(2)分别在相关联的两张或三张表上作插入、删除、更新等操作。
操作分为违反约束和不违反约束两种情况,观察系统的反应,并记录实验结果。
在表BSC上做插入操作,分为违反约束和不违反约束两种情况,SQL语句为:
insertintoBSC
values(42224,'BELLBSC','Bell',121.144785,41.122447,5214);
insertintoBSC
values(42225,'BELLBSC','Bell',121.144785,41.122447,5216);
执行结果为:
在表BSC上做删除操作,分为违反约束和不违反约束两种情况,SQL语句为:
deletefromBSC
whereBSCID=42224;
deletefromBSC
whereBSCID=42223;
执行结果为:
在表BSC上做更新操作,分为违反约束和不违反约束两种情况,SQL语句为:
updateBSC
setMSCID=5214whereMSCID=5215;
updateBSC
setMSCID=5216whereMSCID=5214;
执行结果为:
2.创建特殊外键参照
(1)在数据库中选取两张或三张具有外键关联的表,使用
foreignkey-referencesondeletecascadeonupdatecascade
语句创建外键约束。
执行语句
DROPTABLEMSC;
DROPTABLEBSC;
DROPTABLEBTS;
CREATETABLEMSC(
MSCID
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 完整性 安全性 实验