数据库完整性与安全性实验 下载本文

北京邮电大学

实验报告

课程名称 数据库系统概念

实验名称 数据库完整性与安全性实验

教师______ 成绩_________

__

实验目的:

1. 通过对完整性规则的定义实现,熟悉了解SQL Server数据库中实体完整性、参照完整

性、断言等完整性保证的规则和实现方法,加深对数据完整性的理解。

2. 通过对安全性相关内容的定义,熟悉了解SQL Server数据库中安全性的内容和实现方

法,加深对数据库安全性的理解。

实验内容:

一) 完整性实验与要求:

一、建表阶段

1. 利用SQL语句,分别定义数据库中各基本表的主键、候选键、外键,实现实体完整性

约束和参照完整性约束。

2. 在数据库中选取两张或三张具有外键关联的表,利用语句foreign key-references创建

外键,实现参照完整性约束。

3. 根据实际背景,对某些表中的某些特定属性,定义空值、非空约束。 4. 建表时,使用check谓词,通过断言,添加如下一些约束:

(1) (2) (3) (4) (5)

二、主键/候选键约束验证

1. 选取定义了主键的关系表,向该表插入在主属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在主属性上的取值,或插入新元组,使这些元组与表中已有其它元组的主属性取值相同,观察系统反应;

2. 选取定义了候选键的关系表,向该表插入在候选键属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在候选键属性上的取值,或插入新元组,

1个MSC最多管理10个BSC。 1个BSC最多管理50个小区/扇区。 1个BTS可以连接至1-3个BSC。

1个MS可以位于1到6个BTS的覆盖范围内。 小区/扇区所使用的频点号在[1,124]之间。

使这些元组与表中已有其它元组的候选键属性取值相同,观察系统反应;

三、外键约束验证

1. 选取相互间定义了外键关联的一组表,分别在参照关系、被参照关系上,对表的主属

性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。

上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。

2. 观察级联操作对外键约束的影响

1)对相互间定义了外键关联关系的一组表,分别使用

foreign key-references on delete cascade on update cascade on insert cascade 语句创建级联外键约束。

2) 分别在参照关系、被参照关系上,对表的主属性/外键属性作插入、删除、更新等操作,观察当1个表(如参照关系表、被参照关系表)在外键或主属性属性上的取值发生变化时,数据库管理系统对这些操作的反应,以及另外一个表(如被参照关系表、参照关系表)在主属性或外键属性上的取值的变化,并记录实验结果。

上述插入、删除、更新操作操作分为违反约束和不违反约束两种情况。

三、check/触发器约束验证

选取建表阶段定义的2个断言约束,对断所涉及的元组属性做插入、删除、更新操作,观察当违反断言、触发器约束条件时,DBMS的反映和关系表内元组数据的变化(对触发器)。

二) 安全性实验内容与要求: SQL Server 数据库实验:

SQL Server提供了多种安全机制。主要的有如下3条: 1.最小权限原则:

SQL Server通过给不同用户赋予不同权限的方式来保证安全。本原则要求只给某用户完成工作所必须的权限,以尽量减小用户有意或无意的错误对数据库造成的损害。

2.CIA原则:

C:机密性,未授权者或使用非法手段无法访问数据。 I:完整性,未授权者或使用非法手段无法修改数据。 A:可用性,已授权者可随时使用数据。 3.深度防护:

实际上任何一个程序都运行在操作系统上,一台计算机上还有其它应用程序。所以SQL Server的安全不能仅仅考虑本身的安全,而必须结合操作系统安全及其它相关因素(比如杀毒软件和防火墙)来考虑。这就是深度防护。SQL Server仅仅运行在Windows操作系统上,允许直接使用Windows用户作为SQL Server用户,由于是同一公司的产品,其和操作系统的联系和配合特别紧密,为其它数据库所远远不及的。

在SQL Server服务器及其它Windows服务器上,应该进行多方面的安全配置:包括操作系统补丁管理、管理员用户和组管理、其它本地用户组管理和设置本地安全策略。为了提供网络上的客户端访问,还需要进行端点等相关设置。

SQL Server对两种实体提供安全机制。分别是登录名(以前曾称为login,现在在T-SQL中仍然这样使用,但为避免混淆,Microsoft已经开始改称其为服务器主体)和用户名(user,就是数据库主体)。

现在有3种登录名:windows域登录名(就是域用户),windows本地登录名(本地用户)和SQL Server登录名。用户登录以后,SQL Server将其映射为自己的user,进行相应安全管理。

从而提供了两种身份认证模式:Windows认证模式和SQL Server认证模式。 1.Windows认证模式

SQL Server数据库系统通常运行在NT服务器平台或基于NT 构架的Windows server上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,所以Windows认证模式正是利用这一用户安全性和账号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在该模式下,用户只要通过Windows的认证就可连接到SQL Server,而SQL Server本身也不需要管理一套登录数据。

2.SQL Server认证模式

在SQL Server认证模式下,用户在连接到SQL Server时必须提供建立在SQL Server上的用户名(登录名)和登录密码,这些登录信息存储在系统表syslogins中,与NT的登录账号无关。SQL Server自己执行认证处理,如果输入的登录信息与系统表syslogins 中的某条记录相匹配则表明登录成功。注:该方式常用于系统开发中,因为客户机常常与服务器不是同一台计算机,甚至也不在同一个windows域中,所以使用该方式进行登录比较方便。

实验内容: