一个schema、一张table和一个database有什么区别?

224

这可能是一个新手(或更糟)的问题。但我一直把模式视为数据库中的表定义。这是错误的,或者不完全正确。我已经忘记了我在数据库课程中学到的很多内容。


6
在 Oracle 中,"schema" 只是指一个用户。也就是说,当我们创建一个用户时,会同时创建一个对应的 schema,然后我们可以添加表、视图、索引、包等内容。 - smali
18个回答

2

关于模式的更多信息:

在SQL 2005中,模式是一种分组对象的方式。它是一个可以放置对象的容器,人们可以拥有此对象。您可以授予模式的权限。

在2000年,模式等同于用户。现在它已经摆脱了束缚,变得非常有用。您可以将所有用户过程放入某个特定的模式中,将管理员过程放入另一个模式中。授予适当的用户/角色执行权限,然后您就完成了对特定过程的授权。很不错。

点符号表示如下:

Server.Database.Schema.Object

myserver01.Adventureworks.Accounting.Beans


2

根据我对以下类比的理解,我尝试回答:

  • 数据库就像房子
  • 在房子里有几种类型的房间。假设你住在一栋非常大的房子里。你真的不想让你的客厅、卧室、浴室、夹层、树屋等看起来都一样。它们每个都需要一个蓝图来告诉如何建造/使用它们。换句话说,它们每个都需要一个模式来告诉如何建造/使用浴室,例如。
  • 当然,你可能有几个卧室,每个卧室看起来略有不同。你和你的妻子/丈夫的卧室与你孩子的卧室略有不同。每个卧室类似于数据库中的一个表格
  • DBMS就像房子里的管家。他管理着所有事情。

2

我喜欢将其与普遍理解的术语进行比较的被接受答案。但对我来说有点困惑。这是我更新后的版本:

从存储/内存角度来看,它们之间的关系如下:

Database (complete house) >>> schema (one room) >>> table (one closet in the room)

数据库:是一座完整的房子,没有副本。

模式:是一个特定的房间。在这座房子(数据库)中可以有许多房间(模式)。

表格:是房间内的存储柜或桌子。在一个房间里可以有许多表格。

通过减少技术理解它:

删除数据库:将整座房子夷为平地(从计算机中永久删除)。之后,房子(数据库)中不再存在任何部分。

删除模式:删除一个房间的所有内容。还有其他房间有内容(其他带有存储数据的模式)

删除表格:删除一个完整房子(数据库)中的一个房间(模式)中存储的某个存储柜或桌子的内容。因此,在这个房间(模式)中,还有其他的表格,存储着它们的内容。


1
在Oracle中,模式是一个数据库下的一个用户,例如scott是数据库orcl中的一个模式。 在一个数据库中,我们可能有许多像scott这样的模式。

1
一个 schema 并不是整个数据库的计划。它是数据库内一组对象(比如表)的计划/容器。这意味着你可以在同一个数据库内拥有多个不同功能类别的对象(比如表),因此你可以将它们分组到不同的 schema 下并授权给不同用户访问权限。但是,我不确定一个表是否可以属于多个 schema。管理工具界面提供了一个下拉菜单来为表分配 schema,只能选择一个 schema。我猜如果使用 TSQL 实现,可能会创建 2 个(或多个)具有不同对象 Id 的不同对象。

1

架构包含数据库。

数据库是架构的一部分。

因此,架构>数据库。

架构包含视图、存储过程、数据库、触发器等。


0
一个数据库的架构是逻辑上将对象(例如表、视图、存储过程等)分组的一种方式。将架构视为对象的容器。 而表则是行和列的集合。 所有表的组合就构成了一个数据库。

1
这些第一句话完全相同...... http://stackoverflow.com/a/29042133/2308683 - OneCricketeer

0
好的,你已经了解其中一部分。数据库保存数据,但模式告诉你如何存储它。物理上类似于数据库:模式::仓库:货架。也许货架还按照部分进行组织(就像图书馆)。
模式基本上是关于如何构建数据库的:
- 数据库中应该有哪些“模式对象”? - 它们应该被称为什么? - 它们应该具有什么类型的值?
表是一种“模式对象”。其他包括视图、操作符、存储函数、用户、角色和目录(这些可以再细分,但对于基本理解不必担心)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接