北京邮电大学计算机学与技术大三数据库第5次实验报告.docx
- 文档编号:26106475
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:19
- 大小:351.08KB
北京邮电大学计算机学与技术大三数据库第5次实验报告.docx
《北京邮电大学计算机学与技术大三数据库第5次实验报告.docx》由会员分享,可在线阅读,更多相关《北京邮电大学计算机学与技术大三数据库第5次实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
北京邮电大学计算机学与技术大三数据库第5次实验报告
北京邮电大学
实验报告
课程名称数据库系统概念
实验名称存储过程与触发器实验
_计算机_系_302_班姓名华逸群
_计算机_系_302_班姓名魏乐业
教师_叶文吴起凡_成绩_________
2013年5月15日
目录
实验目的3
实验环境3
实验内容3
实验总结16
实验目的
1.通过对完整性规则的定义实现,熟悉了解SQLServer数据库中实体完整性、参照完整性、断言等完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解SQLServer数据库中安全性的内容和实现方法,加深对数据库安全性的理解。
实验环境
采用SQLServer数据库管理系统作为实验平台。
SQLServer要求选用要求使用2005、2008或者2012版本,可以采用SQLServerExpress、SQLServerDevelop或SQLServerEnterprise等版本。
实验内容
(一)、完整性实验与要求:
一、建表阶段
1.利用SQL语句,分别定义数据库中各基本表的主键、候选键、外键,实现实体完整性约束和参照完整性约束。
1.主键(建表时已定义)
2.候选键
以MS表为例,把属性MSISDN设置为候选键.
3.外键
2.在数据库中选取两张或三张具有外键关联的表,利用语句foreignkey-references创建外键,实现参照完整性约束。
上边的3.外键已经实现相关内容。
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.选取定义了候选键的关系表,向该表插入在候选键属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在候选键属性上的取值,或插入新元组,使这些元组与表中已有其它元组的候选键属性取值相同,观察系统反应;
MS中新增加相应元组。
插入失败。
三、外键约束验证
1.选取相互间定义了外键关联的一组表,分别在参照关系、被参照关系上,对表的主属性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。
上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。
2.观察级联操作对外键约束的影响
1)对相互间定义了外键关联关系的一组表,分别使用
foreignkey-references
ondeletecascade
onupdatecascade
oninsertcascade
语句创建级联外键约束。
2)分别在参照关系、被参照关系上,对表的主属性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。
上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。
此步骤选取Idll与Control两张关系表上的触发器约束:
1)对参照关系表BSC进行操作:
1.插入:
a.违反约束:
失败原因:
MSC中不存在MscID为5000的记录。
b.不违反约束:
插入成功。
2.删除:
a.违反约束:
不存在此种情况。
b.不违反约束:
只要该元组存在就能成功删除。
3.更新:
a.违反约束:
更新失败,因为BSC中不存在MscID为5000的记录。
b.不违反约束:
更新元组
(42224,5214,'BELLBSC','BELL',121.123456,41.123456)为
(42224,5215,'BELLBSC','BELL',121.123456,41.123456),
结果如下:
更新成功。
2)对被参照关系表MSC进行操作:
4.插入:
a.违反约束:
不存在该种情况。
b.不违反约束:
插入成功。
MSC表中新增相应元组。
5.删除:
a.违反约束:
删除元组
(5214,'HWMSC','Huawei',121.089335,41.120217,1000),结果如下:
因为MSC5214出现在参照关系表中,因此删除失败。
b.不违反约束:
删除元组
(5216,'AAAAA','BBBBB',121.123456,41.123456,1000),结果如下:
因为MSC5216并未出现在参照关系表中,因此删除成功。
6.更新:
a.违反约束:
由于原始MSC中所有元组都出现在参照关系表中,因此任何更新MscID的操作都会失败,例如:
b.不违反约束:
只要更新的不是MscID就能成功。
例如:
三、check/触发器约束验证
选取建表阶段定义的2个断言约束,对断所涉及的元组属性做插入、删除、更新操作,观察当违反断言、触发器约束条件时,DBMS的反映和关系表内元组数据的变化(对触发器)。
1.Idll表:
Ø插入:
初始Idll表中为空,插入元组(9011,'406985426586220'),结果为:
接着插入以下元组:
(9041,'406985426586220')(9061,'406985426586220')(9141,'406985426586220')
(9231,'406985426586220')(9321,'406985426586220')
此时表中已有以下元组:
现插入元组(9461,'406985426586220'),结果如下:
插入失败,因为串号为‘406985426586220’的MS已经被6个CELL覆盖。
Ø删除:
删除元组(9011,'406985426586220'),结果如下:
删除成功。
Ø更新:
更新元组(9041,'406985426586220')
为(9041,'852102655231250’),结果如下:
更新成功。
2.Control表:
Ø插入:
初始Control表为空,插入元组(42215,'XUEYUANMEN1'),结果如下:
接着插入以下元组:
(42216,'XUEYUANMEN1')(42217,'XUEYUANMEN1')
此时插入前表中已有以下元组:
现插入元组(42218,'XUEYUANMEN1'),结果如下:
插入失败,因为名字为‘XUEYUANMEN1’的BTS已经连接至3个BSC。
Ø删除:
删除元组(42217,'XUEYUANMEN1'),结果如下:
删除成功。
Ø更新:
更新元组(42216,'XUEYUANMEN1')
为(42216,'KAIFAQU1’),结果如下:
更新成功。
(二)、安全性实验内容与要求:
SQLServer数据库实验:
SQLServer提供了多种安全机制。
主要的有如下3条:
1.最小权限原则:
SQLServer通过给不同用户赋予不同权限的方式来保证安全。
本原则要求只给某用户完成工作所必须的权限,以尽量减小用户有意或无意的错误对数据库造成的损害。
2.CIA原则:
C:
机密性,未授权者或使用非法手段无法访问数据。
I:
完整性,未授权者或使用非法手段无法修改数据。
A:
可用性,已授权者可随时使用数据。
3.深度防护:
实际上任何一个程序都运行在操作系统上,一台计算机上还有其它应用程序。
所以SQLServer的安全不能仅仅考虑本身的安全,而必须结合操作系统安全及其它相关因素(比如杀毒软件和防火墙)来考虑。
这就是深度防护。
SQLServer仅仅运行在Windows操作系统上,允许直接使用Windows用户作为SQLServer用户,由于是同一公司的产品,其和操作系统的联系和配合特别紧密,为其它数据库所远远不及的。
在SQLServer服务器及其它Windows服务器上,应该进行多方面的安全配置:
包括操作系统补丁管理、管理员用户和组管理、其它本地用户组管理和设置本地安全策略。
为了提供网络上的客户端访问,还需要进行端点等相关设置。
SQLServer对两种实体提供安全机制。
分别是登录名(以前曾称为login,现在在T-SQL中仍然这样使用,但为避免混淆,Microsoft已经开始改称其为服务器主体)和用户名(user,就是数据库主体)。
现在有3种登录名:
windows域登录名(就是域用户),windows本地登录名(本地用户)和SQLServer登录名。
用户登录以后,SQLServer将其映射为自己的user,进行相应安全管理。
从而提供了两种身份认证模式:
Windows认证模式和SQLServer认证模式。
1.Windows认证模式
SQLServer数据库系统通常运行在NT服务器平台或基于NT构架的Windowsserver上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,所以Windows认证模式正是利用这一用户安全性和账号管理的机制,允许SQLServer也可以使用NT的用户名和口令。
在该模式下,用户只要通过Windows的认证就可连接到SQLServer,而SQLServer本身也不需要管理一套登录数据。
2.SQLServer认证模式
在SQLServer认证模式下,用户在连接到SQLServer时必须提供建立在SQLServer上的用户名(登录名)和登录密码,这些登录信息存储在系统表syslogins中,与NT的登录账号无关。
SQLServer自己执行认证处理,如果输入的登录信息与系统表syslogins中的某条记录相匹配则表明登录成功。
注:
该方式常用于系统开发中,因为客户机常常与服务器不是同一台计算机,甚至也不在同一个windows域中,所以使用该方式进行登录比较方便。
实验内容:
Ø以DBA身份(可以是SQLServer上的sa或者windows上的系统管理组的某个成员)登陆系统,在图形界面下创建新登录,新建登录用户可以使用Windows认证模式和SQLServer认证模式。
Ø使用T-SQL命令createloginlogin-name…和createloginlogin-namefromwindows重复第1步的内容。
Ø在服务器角色选项卡中赋予新建用户角色。
完成后查找T-SQL中对应命令,在图形界面上撤消该权限后使用命令完成授予权限和收回权限的任务。
Ø将新建用户映射到移动通信数据库某用户。
执行相关SQL操作,检查该用户的权限。
用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映。
Ø对特定服务器对象设置权限,双击登录名以后选择安全对象,赋予该登录名对服务器内的某个对象的权限。
执行相关SQL操作,检查该用户的权限。
用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映。
Ø分别在图形化界面、命令行中,撤销用户权限。
Ø分别在图形化界面、命令行中,删除数据库用户。
Ø根据实际操作,指出服务器角色和数据库角色有多少种,分别有什么权限?
Ø创建数据库时,还会自动创建SYS、GUEST和dbo组。
通过帮助文档,了解这些组在数据库中起到的作用。
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。
当用户创建一个数据库时,SQLSERVER会自动在该数据库中创建三个段:
SYSTEM、LOGSEGMENT、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象。
Ø将角色赋给用户:
grantroleexampletoguest
实验总结
在实验中有哪些重要问题或者事件?
你如何处理的?
你的收获是什么?
有何建议和意见等等。
经过本次实验我们队数据库的安全性以及完整性约束有了更进一步的认识。
通过主键约束、外键约束、check触发器约束等方法,可以有效防止错误数据的插入保护了数据安全。
本次实验有以下收获:
(1)熟悉了通过check语句检查插入数据的合法性。
(2)熟悉了数据库中角色、用户、登陆名等安全性机制。
通过角色机制可以方便的管理用户对数据库,对表或视图的操作权限。
(3)如果某个用户希望将自己的权限再授予出去,应该给予这个用户相应的授予权限权限。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京邮电 大学计算机 技术 大三 数据库 实验 报告