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


当前回答

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

其他回答

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

A database is like the house In the house there are several types of rooms. Assuming that you're living in a really big house. You really don't want your living rooms, bedrooms, bathrooms, mezzanines, treehouses, etc. to look the same. They each need a blueprint to tell how to build/use them. In other words, they each need a schema to tell how to build/use a bathroom, for example. Of course, you may have several bedrooms, each looks slightly different. You and your wife/husband's bedroom is slightly different from your kids' bedroom. Each bedroom is analogous to a table in your database. A DBMS is like a butler in the house. He manages literally everything.

schema包含数据库。

数据库是Schema的一部分。

schema >数据库。

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

与上面的一些答案相反,以下是我对他们每个人的经验的理解:

MySQL: database/schema:: table SQL Server: database::(schema/namespace::)表 Oracle: database/schema/user::(表空间::)

请纠正我关于表空间是否是可选的Oracle,这是很长一段时间以来,我记得使用他们。

Schema的行为就像在OOP中看到的父对象一样。所以它本身不是一个数据库。也许这个链接有用。

但是,在MySQL中,这两者是等价的。关键字DATABASE或DATABASES 可以在任何出现的地方替换为SCHEMA或SCHEMAS。例子:

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

MySQL文档

SCHEMA和DATABASE术语是依赖于DBMS的。

Table是一组数据元素(值),使用垂直列(由其名称标识)和水平行模型组织。数据库通常包含一个或多个表。你把数据存储在这些表中。这些表可能彼此相关(见这里)。

就像MusiGenesis说的那样,在大多数数据库中:

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

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

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