之前的一篇博客中写到过关于服务器登录名,服务器角色,数据库用户,数据库角色的关系,理论的一些知识,大家可以看看这篇博客:登录名,服务器角色,用户名和数据库角色。本片博客注重操作。
在具体的操作时,先普及一下数据库架构的知识,这里需要注意一下,这里说的数据库架构不是针对数据库的拓扑结构来说的,而是针对数据库管理系统中,针对数据库的一个功能。
举例说架构和架构的好处,数据库为一座楼,那么架构就是一层楼,一层楼中的房子就是表,由表产生的存储过程,触发器等等也都属于这个架构,将一层楼租给多人去住,这些人在这层楼房里随便折腾,但是,这些人走后,他折腾的东西不需要改变,后来人可以再次基础上接着折腾,因为前人折腾出来的东西都属于这个架构,东西属于架构不是属于人,所以,人走了之后,东西不需要再进行相应的改变。
框架:存放数据库对象的一个容器,框架里面的对象必须是唯一的,不同框架的对象的名称可以相同,一个数据库有多个框架。在之前(sql 2000)的数据库对象访问时,采用的是服务器名.数据库名.用户名.表名称,之后的数据库访问方式是这样的,服务器名.数据库名.框架名.表名称,这样做的好处就是,某个用户辞职不干了,我就可以直接删除这个用户就行了,但是,之前是不行的,因为数据库对象是通过用户名查找的,这样的一个修改是非常麻烦的。当然框架的作用不仅仅如此,如:框架限制了用户对数据库其它框架表的访问。好了,理论方面的东西到此结束,下面开始实战。
创建3个系统登录名,分别为Student、Teacher和Person,具体操作如下图
create database DataBaseName
go
创建3个架构,架构的名字分别为:Teacher_KJ、Student_KJ和Person_KJ,具体操作如下图
创建2个数据库角色,角色名字分别为:Teacher_JS和Student_JS,分别对象上面的架构名称,具体对应一看就可以看出,如:Teacher_JS对应Teacher_KJ,具体操作如下图
创建3个用户,分别为Teacher_User、Student_User和Person_User,其中Teacher_User和Student_User的属于角色,没有具体的架构,Person_User不属于创建的角色,拥有Person_KJ,具体操作如下图
use DataBaseName
go
create table [Teacher_KJ].TableName1
(
id int primary key,
name varchar not null
)
go
create table [Student_KJ].TableName1
(
id int primary key,
name varchar not null
)
go
create table [Person_KJ].TableName1
(
id int primary key,
name varchar not null
)
go
create table TableName1
(
id int primary key,
name varchar(20) not null
)
有图有真相,下图为最终的结果图