小D初次接触SQL Server 就被这几个概念搞晕了,相信不少同学和小D一样被以上的问题困扰过,今天就斗胆一块和大家把这几个概念捋一捋。
Login
Login 是Server一级的概念,表示登录Server的凭证,比如在Server_XXX上有一个数据库Northwind,那么想要访问数据库Northwind,第一步要做的事情就是先登录到拥有该数据库的Server_XXX上。
User
有了Login,表明我可以登录到拥有该Database的Server,并不表明我能够访问数据库,除非我是内置的Windows管理员,否则,我也只能登录到该Server上,什么事情也做不了。就好比,我有一个农家小院的大门钥匙(Login),我打开大门(登录),却只能在院子里边站着,因为房间的门都是锁着的,我没有房间的钥匙(User)啊,怎样才能进到屋子里边去呢?User就是要完成这样的功能。由于User属于数据库对象,不属于Server对象(Login属于Server对象),因此我们如果想创建一个User,首先必须进入到想创建User的数据库中(use 该数据库),然后创建User。
小D笔记
- Login信息保存在实例的master库中,User信息保存在对应数据库的系统表中。
- 每个User必须对应一个Login;每个Login可以对应多个User,前提是User在不同的数据库中。
Schema
九牛二虎之力之后,我们终于如愿以偿地进入到自己的房间了,却发现原来里边都是上下铺,究竟那个床(Schema)才是我的呢?我能把我的行李放在哪里呢?这个就是架构,Schema:数据库数据库架构是一个独立于数据库用户的非重复命名空间,我们可以将架构视为对象的容器,这不就是床了,放东西啦。或者我们可以拿一个网站来做类比,一个网站包含很多的网页,图片,脚本文件,我们姑且称它为网站对象。显然,我们不可能把所有的网站对象都放到一个文件夹下面,同样道理,数据库对象也不可能象煮饺子一样就在数据库里这么一锅出。对于网站,我们通常会把不同模块的文件放在不同的子文件夹下,那么谁是存放数据库对象的文件夹呢?答案就是:架构(Schema)。
Role
角色这个概念是为了降低管理成本,简化管理的工作量而出现的,这个概念相必不用多说了吧,和Oracle并无二致。
小D笔记
角色是权限的集合,架构是对象的集合。