实验四 数据完整性和安全性管理

第一部分 数据完整性管理

一、实验目的

  1. 掌握域完整性的实现方法。
  2. 掌握实体完整性的实现方法。
  3. 掌握参照完整性的方法。

二、实验内容

数据库的完整性设置。

练习一:请通过数据完整性策略实现数据的完整性。

1.表的建立

1.1XSQK表的建立

CREATE TABLE XSQK

(

学号 CHAR(6) primary key,

姓名 CHAR(8) NOT NULL,

性别 CHAR(2) NOT NULL,

出生日期 SMALLDATETIME NOT NULL,

专业 CHAR(10) NOT NULL,

所在系 CHAR(10) NOT NULL,

联系电话 CHAR(13)

1.2KC表的建立

CREATE TABLE KC

(

课程号 CHAR(3) primary key,

课程名 CHAR(20) NOT NULL,

教师 CHAR(10),

开课学期 INT,

学时 INT default 60,

学分 INT NOT NULL)

1.3XS_KC表的建立

CREATE TABLE XS_KC

(

学号 CHAR(6) NOT NULL,

FOREIGN KEY(学号) references XSQK(学号),

课程号 CHAR(3) NOT NULL,

FOREIGN KEY(课程号) references kc(课程号),

成绩 int check(成绩 between 0 and 100)

 

 

)

2.完整性验证

2.1实体完整性验证

insert

into XSQK

values ('072037','张三','女','1999-07-08','生工','医工','85315826');

insert

into XSQK

values ('072037','李四','女','1999-07-05','计算机','医工','85327881')


 
 
  

在这里插入图片描述

2.2域完整性验证

insert

into XS_KC

values('072037','02','102')

实验四 数据完整性和安全性管理_第1张图片

2.3参照完整性验证

insert

into XS_KC

values('072033','01','99')

 

/*XSQK表中没有学号072033的同学*/


 

实验四 数据完整性和安全性管理_第2张图片
练习二:

1.创建部门表

create table 部门表

(

部门代码 char(8) primary key,

部门名 char(6) not null,

负责人 char(6) not null,

地点 char(8) not null

)


 

实验四 数据完整性和安全性管理_第3张图片
2.创建员工表

create table 员工表

(

员工代码 char(12) primary key,

姓名 char(6) not null,

家庭住址 char(4) not null,

联系电话 char(16) not null,

邮政编码 char(12) not null,

部门代码 char(8) not null,

FOREIGN KEY(部门代码) references 部门表(部门代码),

)


 

实验四 数据完整性和安全性管理_第4张图片

问题:

a)
在部门表和员工表的结构中标注主关键字。

b)
确定在部门表和员工表中共有的属性。部门代码。

c)
指出哪个表中的属性是外关键字。员工表中的部门代码是外关键字。

d)
确定哪个表是主表,哪个表是从表。部门表是主表,员工表是从表。

实验四 数据完整性和安全性管理_第5张图片

e)部门表和员工表是如何通过关键字实施数据完整性的。not null,primary key,
FOREIGN KEY references

第二部分 数据库安全性管理

一、实验目的

  1. 掌握SQL Server身份验证模式。
  2. 掌握创建登录账户、数据库用户的方法。
  3. 掌握使用角色实现数据库安全性的方法。
  4. 掌握权限的分配。

二、实验内容

1、设置身份验证模式:Windows身份验证模式和混合模验证模式。

2、设置登录账户

3、设置数据库用户

4、设置数据库角色。

5、设置管理对象的权限

练习一:

创建用户(
A.创建一个testlogin数据库
B.新建登录wangming,liyong,liuxing,yanglan,并设定密码,服务器角色设为“系统管理员”数据库访问为testlogin。)

1.新建用户:安全性——登录名——新建登录名
实验四 数据完整性和安全性管理_第6张图片

2.服务器角色:右击已建好的登录名——属性——服务器角色——默认public(各种角色的区别

https://blog.csdn.net/liyun211/article/details/74192984?utm_source=app&from=singlemessage&isappinstalled=0

)

实验四 数据完整性和安全性管理_第7张图片

3.数据库访问:右击已建好的登录名——属性——用户映射——选择想让他拥有访问权限的数据库——确定
实验四 数据完整性和安全性管理_第8张图片

4.打开其他数据库显示‘无法访问’

实验四 数据完整性和安全性管理_第9张图片

假如显示无法登录:

右击服务器——属性——安全性——是否开启SQL Server和Windows身份验证模式

实验四 数据完整性和安全性管理_第10张图片

右击已建立好的登录名——属性——状态——是否设为‘授予’‘启用’

实验四 数据完整性和安全性管理_第11张图片

打开配置管理器——看看Named Pipes是否启用

实验四 数据完整性和安全性管理_第12张图片

记得重新启用服务

2.上述步骤都不行,则参考

http://jingyan.baidu.com/article/6c67b1d6ca06f02787bb1ed1.html

3.再再不行,我是删掉重新下载的(因为之前自己稀里糊涂下载了两个实例,不知道和这有没有关系,重新删除后下载就可以了,我之前的问题是新建立的登陆名服务器角色设为public不可以连接,设为sysadmin就可以连接,但是能访问到所有数据库。。。我也不知道是什么个情况)

练习二:数据库用户权限管理

给定两个关系模式
E(职工)(职工号,姓名,年龄,职务,工资,部门号)
P(部门)(部门号,名称,经理名,地址,电话)
用SQL语言中的GRANT和REVOKE语句,完成以下授权定义或存取控制功能:
a)
用户wangming对表E有SELECT权力
b)
用户liyong对P有INSERT和DELETE权力
c)
把对表E的查询权力授予用户liuxing,并给liuxing有再授权的权力
d)
对上述每一种情况,撤销各用户所授予的权力。
1.
建立表

create table P

(

部门号 char(6) primary key,

名称 char(16) not null,

经理名 char(12) not null,

地址 char(20) not null,

电话 char(12) not null

)

 
create table E

(

职工号 char(6) primary key,

姓名 char(12) not null,

年龄 char(6) not null,

职务 char(12) not null,

工资 char(12) not null,

部门号 char(6) not null,

foreign key(部门号) references P(部门号)

 

)

2.用户权限管理

2.1

GRANT SELECT

ON E

TO wangming

2.2

GRANT insert,delete

ON P

TO liyong

2.3

GRANT select

ON E

TO liuxing

WITH GRANT OPTION

2.4.1

REVOKE SELECT

ON E

FROM wangming

2.4.2

REVOKE insert,delete

ON P

FROM liyong

2.4.3

REVOKE select

ON E

FROM liuxing CASCADE

你可能感兴趣的:(sql,数据库)