日期:2014-05-16  浏览次数:20661 次

sql定义模式和不定义模式有什么区别
模式(schema)  是 数据库体系结构中的一个节点

对于 SQL Server 数据库来说。
访问具体的一个表,可以由 4个部分组成
分别为 服务器名, 数据库名,模式名,表名。

对于访问本地的数据库
因为 服务器已经连接上了,因此不用指定
数据库名,通过  use  数据库名 指定了
模式名,如果不指定的话, 数据库 默认使用  dbo 模式。
这个是网上找的,一个数据库只能有一个模式,假如模式名字为zhangsan那么我定义和不定义有什么区别(问这个问题的原因是我看上面的意思是不是可以理解为在同一个数据库下,如果有两个模式zhangsan,lisi 如果都有numb这个表的话,是不可以可以这样查,select * from zhangsan.numb,select* from lisi.numb)
同时很迷惑的是如何建立两个子系统,根据在网上找的内容

------解决方案--------------------
这个我印象里面不是对等的,关系理论的schema和sqlserver的不一样,sqlserver一个库可以有多个schema,这个看示例数据库 就可以看到很多架构,比如Sales.xxx、Person.Person这些。
而关系理论的schema,具体要翻翻书了,忘记了定义是什么。
你这句话:
如果有两个模式zhangsan,lisi 如果都有numb这个表的话,是不可以可以这样查,select * from zhangsan.numb,select* from lisi.numb
是对的。并且也必须要这样查,如果你用select * from numb会报错的。另外你的帐号需要有比较高的权限。
至于子系统,我觉得就是指多个架构,每个架构下有完整的结构、逻辑、表等等。互不干扰,但是适当的时候是可以共享数据。
------解决方案--------------------
这个schema,在sql server中是和用户有关系的。

在sql server 2000,你创建一个用户,自动就会创建一个同名的schema,然后接下来,你在这个schema下面创建表,视图,函数等等。

到了2005及以后, 用户就是用户,架构就是架构,可以给用户指定默认的架构,那么为什么要有这个架构呢?

这个主要就是,不同的用户,可以有不同的架构,那么可以创建同名的对象。

比如,用户a,架构是a,而用户b,架构是b

在用户a的架构a下创建对象xx,那么也可以在b架构下创建对象xx,而a用户只能看到他自己架构下的xx,而b只能看到他自己架构下的xx对象。