架构存在的意义

chen_xiangguo 2009-12-18 02:23:18
架构是干嘛的?我至今没看到过用架构的情况,都用默认的dbo。
比较经典的叙述是:
架构是为了便于管理数据库对象的。
架构概念出来的问题:不同登陆用户对不同数据库对象得分配
这里假设数据库对象只是表,有表,其中表的架构为默认架构
table1,table2,table3
有登陆名
login1,login2,login3
三个登陆对象数据库的用户:
user1,user2,user3
这时候实际的问题就出来了,要求user1,user2,user3对表们具有不同的权限。
我想这就是实际问题吧,实际问题就是这样,不同用户对不同数据库对象具有不同操作权限。
这里假设问题为:
user1对table1,具有select权限,对其它表没有权限,user2对table2有update权限,对其它表没有权限,user3对table3表有delete权限,对其它表有不同的权限.
这是我的答案:


--建立数据库--
use master
if exists(select 1 from sys.databases where name='database1')
drop database database1
create database database1
--建立表--
use database1
if object_id('table1')is not null
drop table table1
create table table1
(
name nvarchar(3)
)
if object_id('table2')is not null
drop table table2
create table table2
(
name nvarchar(3)
)
if object_id('table3')is not null
drop table table3
create table table3
(
name nvarchar(3)
)
-------建立账号---------
exec sp_addlogin 'login1','aacxg@126.comaacxg@126.com','database1'
exec sp_addlogin 'login2','aacxg@126.comaacxg@126.com','database1'
exec sp_addlogin 'login3','aacxg@126.comaacxg@126.com','database1'
--建立数据库用户----
use database1
exec sp_grantdbaccess 'login1','user1'
exec sp_grantdbaccess 'login2','user2'
exec sp_grantdbaccess 'login3','user3'
-----基础工作做过完--------
----------问题:------------------
--1.user1对table1,具有select权限,对其它表没有权限--
--2.user2对table2,具有select权限,对其它表没有权限--
--1.user3对table3,具有select权限,对其它表没有权限---
--问题1---
--建角色--
use database1
exec sp_addrole 'role1'
grant select on table1 to role1
--附加到user1上--
exec sp_addrolemember 'role1','user1'
--问题2---
--建角色--
use database1
exec sp_addrole 'role2'
grant select on table2 to role2
--附加到user2上--
exec sp_addrolemember 'role2','user2'
--问题3--
--建角色--
use database1
exec sp_addrole 'role3'
grant select on table3 to role3
--附加到user3上--
exec sp_addrolemember 'role3','user3'

我想说的是,用默认架构dbo,我们用角色和用户两个就可以实现不同用户不同权限呀。
架构存在的意义是什么?谁举出个不用架构就解决不了的例子?!
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 herowang 的回复:]
架构可以理解为一个命名空间。例如:如果因为某种情况,两个表需要有相同的名字,这个时候是不行的,但是可以把他们放在不同的架构下面,就可以了。另外架构的存在,使的用户的管理更为方便。在2000中如果该用户拥有对象,那么删除这个用户会很麻烦,而2005中就会很方便。
[/Quote]

这个解释比较好 但是架构不只是命名空间 ,而是一种结构,类似于房子的结构一样的东西 你可以用E-R图去描述它,可以用PD去做架构图 有了这个 才能更好的进行数据库编程
Mr_Nice 2009-12-18
  • 打赏
  • 举报
回复
个人认为,这个是个在将来可以用于基础管理的预先设置。比如按照架构来进行文件组的管理!
当然当前还没有做到。仅仅只是预测!呵呵!
jinsenhome 2009-12-18
  • 打赏
  • 举报
回复
构架:以我的理解,完全是为了方便数据库开发商满足扩展性和灵活性而设置的东西!
试问有几人真正的不不相干的业务逻辑放在一个数据库的不同构架下??
dawugui 2009-12-18
  • 打赏
  • 举报
回复
不懂,帮顶,学习,蹭分.
vileboy 2009-12-18
  • 打赏
  • 举报
回复
看不懂,飄過
  • 打赏
  • 举报
回复
我技术还不行,不过楼主贴出来的这个帖子我正好学习了
  • 打赏
  • 举报
回复
架构可以理解为一个命名空间。例如:如果因为某种情况,两个表需要有相同的名字,这个时候是不行的,但是可以把他们放在不同的架构下面,就可以了。另外架构的存在,使的用户的管理更为方便。在2000中如果该用户拥有对象,那么删除这个用户会很麻烦,而2005中就会很方便。
gxjwqm 2009-12-18
  • 打赏
  • 举报
回复
ds

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧