190

这可能是一个 n00blike(或更糟)的问题。但我一直将模式视为数据库中的表定义。这是错误的或不完全正确的。我不太记得我的数据库课程。

4

16 回答 16

274

架构-> 平面图

数据库-> 房子

桌子-> 房间

于 2008-11-18T13:45:13.447 回答
142

关系模式是表的逻辑定义——它定义了表的名称是什么,以及每列的名称和类型是什么。这就像一个计划或蓝图。数据库模式是整个数据库的关系模式的集合。

是具有一堆行(也称为“元组”)的结构,每个行都具有模式定义的属性。表上可能还有索引,以帮助查找某些列上的值。

从形式上讲,数据库是任何数据的集合。在这种情况下,数据库将是表的集合。DBMS(数据库管理系统)是管理和运行数据库的软件(如 MySQL、SQL Server、Oracle 等)。

于 2008-11-18T13:49:56.043 回答
21

简而言之,模式是整个数据库的定义,因此它包括表、视图、存储过程、索引、主键和外键等。

于 2008-11-18T13:48:45.607 回答
14

已显示此特定帖子仅与 Oracle 相关,并且在另一个 DB 的上下文中,Schema 的定义会发生变化。

可能只是谷歌搜索,但仅供参考的术语似乎在定义上有所不同,这是最烦人的事情:)

在 Oracle 中,数据库就是数据库。在您的脑海中,将其视为数据文件和重做日志以及数据库本身(即不是实例)磁盘上的实际物理存在

Schema 实际上是一个用户。更具体地说,它是用户拥有的一组表/过程/索引等。另一个用户有不同的架构(他/她拥有的表),但是用户也可以看到他们拥有选择权限的任何架构。所以一个数据库可以包含数百个模式,每个模式有数百个表。您可以在同一数据库中的不同模式中拥有具有相同名称的表。

表是一个表,一组包含数据的行和列,并且包含在模式中。

例如,SQL Server 中的定义可能不同。我不知道这一点。

于 2008-11-18T13:52:18.893 回答
13

Schema 的行为看起来像 OOP 世界中的父对象。所以它不是数据库本身。也许这个链接很有用。

但是,在 MySQL 中,两者是等价的。无论出现在何处,关键字 DATABASE 或 DATABASES 都可以替换为 SCHEMA 或 SCHEMAS。例子:

  • 创建数据库 <=> 创建模式
  • 显示数据库 <=> 显示模式

MySQL的文档

SCHEMA & DATABASE 术语依赖于 DBMS。

是一组数据元素(值),使用垂直列(由其名称标识)和水平行的模型进行组织。数据库包含一个或多个(通常)Tables。您将数据存储在这些表中。这些表可能相互关联(参见此处)。

于 2012-02-15T09:40:00.600 回答
7

PostgreSQL 文档

数据库包含一个或多个命名模式,这些模式又包含表。模式还包含其他类型的命名对象,包括数据类型、函数和运算符。相同的对象名称可以在不同的模式中使用而不会发生冲突;例如,两者schema1myschema都可以包含名为mytable. 与数据库不同,模式不是严格分开的:用户可以访问他连接到的数据库中任何模式中的对象,如果他有权限这样做的话。

使用模式有几个原因:

  • 允许多个用户使用一个数据库而不互相干扰。

  • 将数据库对象组织成逻辑组以使其更易于管理。

  • 第三方应用程序可以放入单独的模式中,这样它们就不会与其他对象的名称发生冲突。

模式类似于操作系统级别的目录,只是模式不能嵌套。

于 2019-10-04T05:47:28.590 回答
6

在此处输入图像描述

根据https://www.informit.com/articles/article.aspx?p=30669

所有对象的名称在某个范围内必须是唯一的。每个数据库都必须有一个唯一的名称;架构名在单个数据库范围内必须唯一,表名在单个架构范围内必须唯一,列名在表内必须唯一。索引的名称在数据库中必须是唯一的。

于 2021-04-01T09:40:41.477 回答
4

与上述一些答案相反,这是我基于对每个答案的经验的理解:

  • MySQL:database/schema :: table
  • SQL 服务器:database :: (schema/namespace ::) table
  • 甲骨文:database/schema/user :: (tablespace ::) table

请纠正我在 Oracle 中表空间是否是可选的,自从我记得使用它们以来已经很长时间了。

于 2018-03-14T18:51:04.900 回答
3

正如MusiGenesis 所说,在大多数数据库中:

架构:数据库:表::平面图:房屋:房间

但是,在 Oracle 中可能更容易想到:

架构:数据库:表::所有者:房子:房间

于 2014-04-12T02:50:26.187 回答
2

更多关于模式:

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

在 2000 年,架构相当于一个用户。现在它已经摆脱了束缚并且非常有用。您可以将所有用户 procs 放入某个架构中,并将您的 admin procs 放入另一个架构中。将 EXECUTE 授予适当的用户/角色,您就可以在特定过程上授予 EXECUTE。好的。

点符号将如下所示:

Server.Database.Schema.Object

或者

myserver01.Adventureworks.Accounting.Beans

于 2008-11-18T20:46:41.740 回答
2

ASchema是包含逻辑结构的数据库对象的集合。它具有拥有它的用户的名称。Adatabase可以有任意数量的 Schema。数据库中的一个表可以出现在两个不同的同名模式中。用户可以查看为其分配了选择权限的任何架构。

于 2012-07-03T07:09:49.703 回答
1

oracle中的Schema是一个数据库下的一个用户,例如scott就是数据库orcl中的一个schema。在一个数据库中,我们可能有许多类似 scott 的模式

于 2010-02-09T06:04:28.327 回答
1

模式包含数据库。

数据库是模式的一部分。

因此,模式 > 数据库。

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

于 2011-12-04T16:02:42.887 回答
1

模式不是整个数据库的计划。它是数据库内对象子集(例如表)的计划/容器。

这就是说,您可以在一个数据库中拥有多个对象(例如表),这些对象不一定属于同一功能类别。因此,您可以将它们分组到各种架构下,并赋予它们不同的用户访问权限。

也就是说,我不确定您是否可以在多个模式下拥有一个表。Management Studio UI 提供了一个下拉菜单以将架构分配给表,因此可以只选择一个架构。我想如果你用 TSQL 来做,它可能会创建 2 个(或多个)具有不同对象 ID 的不同对象。

于 2013-03-27T16:01:43.047 回答
0

数据库模式是一种对对象进行逻辑分组的方法,例如表、视图、存储过程等。将模式视为对象的容器。表格是行和列的集合。所有表的组合构成一个数据库。

于 2013-10-18T09:11:42.593 回答
0

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

  • 数据库就像房子
  • 房子里有几种类型的房间。假设你住在一个非常大的房子里。你真的不希望你的客厅、卧室、浴室、夹层楼、树屋等看起来一样。他们每个人都需要一个蓝图来说明如何构建/使用它们。换句话说,例如,他们每个人都需要一个模式来说明如何建造/使用浴室。
  • 当然,您可能有几间卧室,每间看起来都略有不同。您和您妻子/丈夫的卧室与您孩子的卧室略有不同。每间卧室都类似于数据库中的一张桌子
  • DBMS就像家中的管家。从字面上看,他管理着一切。
于 2021-08-07T14:41:56.520 回答