看王珊的《数据库系统概论》第四版,感觉她把模式(schema)和数据库等同起来了?

时间:2023-01-05 19:11:02
按照书中3.2的描述,以下为原文:
“3.2 学生-课程数据库
  在本章中用学生-课程数据库作为例子来讲解SQL的数据定义、数据操纵、数据查询和数据控制语句的具体应用。
  为此,首先要定义一个学生-课程模式S-T(见3.3.1中【例1】。学生-课程数据库中包括以下3个表,他们的定义见3.3.1中【例5】、【例6】、【例7】。”

然后 3.3.1 模式的定义与删除这一节, 第一个例子就是模式的创建语句,就是上面提到的【例1】 ,create schema "s-t"....
后面就是在这个“S-T"中建立表。在这几个地方,对“S-T”这个对象,王珊老师一会称为“模式”,一会称为“数据库”,语句用的是create schema ,而且自始至终没有介绍 create database 语句。
阅读这一段,给我的感觉就是schema等同于database。但是按照我的理解,这两个显然是不一样的,schema是database 下面的一个框架,一个database可以包含多个schema,我记得sql server 和oracle都是这样的,mysql好像不支持schema。
大家怎样理解?主要是王珊老师太有名了。。。所以我没啥底气。新手啊。

4 个解决方案

#1


schema为架构名称,也可以理解为表的所有者,如dbo,和数据库完全两把事,你对他的意思理解有误,人家也没说schema等同于database
像你选表时,写全了,数据库第一位,架构第二位,表第三位
select * from [databasename].[schemaname].[tablename]
如果是其他数据库可能还要加servername
select * from [servername].[databasename].[schemaname].[tablename]
http://msdn.microsoft.com/zh-cn/library/ms189462.aspx

#2


首先感谢楼上的解答。楼上的回答正是我所了解的内容。对这个结构我是清楚的。其实我主要是觉得书中在这一段描述上容易让人混淆,书中确实没有说schema = database,但是由于他上下文的关系,对同一个名字S-T用了2个不同的术语来描述,让人以为是同一个对象,而且他没有讲这个schema上一层才是数据库,也没有提到建立数据库的语句。我只是觉得容易混淆。
我本人是新入行的教师,这些东西总是力求准确一点好些,在某学校答疑论坛我也看到了有学生产生这样的疑问。

#3


这本书概念方面的用词感觉在细节上有些问题。在第四章第二节数据库安全控制,p137,有这样一句话:
关系数据库系统中存取控制的对象不仅有数据本身(基本表中的数据,属性列上的数据),还有数据库模式(包括数据库schema,基本表table,视图view和索引index的创建)等。
这里在后面一个括号中,从句子结构看,一个汉语词汇加一个英文词汇,显然作者认为数据库 = schema。这里这个schema我觉得作者的意思指的是create schema语句中的schema,和她一直将schema翻译成的“模式”一词(比如括号前面那个数据库模式)又不同,我觉得作者是混乱了,不同的对象用了同一个词,让人头大。
不知道在sql标准文档中怎么定义的,真是难办。

#4


我现在手上没她的书,忘记原文了,我记得她说的架构好像有几层的吧。不过记得她更多强调【模式】

#1


schema为架构名称,也可以理解为表的所有者,如dbo,和数据库完全两把事,你对他的意思理解有误,人家也没说schema等同于database
像你选表时,写全了,数据库第一位,架构第二位,表第三位
select * from [databasename].[schemaname].[tablename]
如果是其他数据库可能还要加servername
select * from [servername].[databasename].[schemaname].[tablename]
http://msdn.microsoft.com/zh-cn/library/ms189462.aspx

#2


首先感谢楼上的解答。楼上的回答正是我所了解的内容。对这个结构我是清楚的。其实我主要是觉得书中在这一段描述上容易让人混淆,书中确实没有说schema = database,但是由于他上下文的关系,对同一个名字S-T用了2个不同的术语来描述,让人以为是同一个对象,而且他没有讲这个schema上一层才是数据库,也没有提到建立数据库的语句。我只是觉得容易混淆。
我本人是新入行的教师,这些东西总是力求准确一点好些,在某学校答疑论坛我也看到了有学生产生这样的疑问。

#3


这本书概念方面的用词感觉在细节上有些问题。在第四章第二节数据库安全控制,p137,有这样一句话:
关系数据库系统中存取控制的对象不仅有数据本身(基本表中的数据,属性列上的数据),还有数据库模式(包括数据库schema,基本表table,视图view和索引index的创建)等。
这里在后面一个括号中,从句子结构看,一个汉语词汇加一个英文词汇,显然作者认为数据库 = schema。这里这个schema我觉得作者的意思指的是create schema语句中的schema,和她一直将schema翻译成的“模式”一词(比如括号前面那个数据库模式)又不同,我觉得作者是混乱了,不同的对象用了同一个词,让人头大。
不知道在sql标准文档中怎么定义的,真是难办。

#4


我现在手上没她的书,忘记原文了,我记得她说的架构好像有几层的吧。不过记得她更多强调【模式】