模式和表和数据库之间有什么区别?

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

模式数据库::平面图房子房间

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

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

数据库是正式的数据集合。 在这种情况下,数据库将是一个表的集合。 DBMS (数据库pipe理系统)是pipe理和运行数据库的软件(如MySQL,SQL Server,Oracle等)。

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

已经显示此特定发布仅与Oracle相关,而在另一个数据库的上下文中,Schema的定义发生了变化。

可能只是谷歌了,但FYI条款似乎有所不同,在他们的定义是最烦人的事:)

在Oracle中,数据库是一个数据库。 在你的脑海里想到这个数据文件和重做日志以及数据库本身的磁盘上的实际物理存在(即不是实例)

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

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

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

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

但是,在MySQL中,这两者是等价的。 无论在哪里出现,关键字DATABASE或DATABASES都可以replace为SCHEMA或SCHEMAS。 例子:

  • CREATE DATABASE <=> CREATE SCHEMA
  • SHOW DATABASES <=> SHOW SCHEMAS

MySQL的文档

SCHEMA&DATABASE术语是DBMS的依赖。

是一组数据元素(值),它是使用垂直列(通过名称标识)和水平行的模型来组织的。 数据库包含一个或多个(通常) 。 你将数据存储在这些表中。 这些表格可能是相互关联的( 见这里 )。

更多关于模式:

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

在2000年,一个模式相当于一个用户。 现在它已经打破了,非常有用。 你可以把你所有的用户特效放在一个特定的模式中,你的pipe理员可以在另一个模式中使用。 将EXECUTE授予相应的用户/angular色,并通过授予特定过程的EXECUTE。 尼斯。

点符号将如下所示:

Server.Database.Schema.Object

要么

myserver01.Adventureworks.Accounting.Beans

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

在不同的数据库软件中,模式的概念是不同的。

这里我只是提到oracle模式:


模式对象

模式是数据或模式对象的逻辑结构的集合。 模式由数据库用户拥有,并且与该用户具有相同的名称。 每个用户拥有一个模式。 可以使用SQL创build和操作模式对象,并包含以下types的对象:

集群约束数据库链接数据库触发器维度外部过程库索引组织表索引索引typesJava类,Java资源,Java源实例化视图实例化视图日志对象表对象types对象视图操作符包序列存储函数,存储过程同义词表视图


非天然物体

其他types的对象也存储在数据库中,可以使用SQL创build和操作,但不包含在模式中:

上下文目录参数文件(PFILE)和服务器参数文件(SPFILE)configuration文件angular色回滚段表空间用户

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

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

模式:数据库:表::平面图:房子:房间

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

schema:database:table :: owner:house:room

数据库模式是一种逻辑上将表,视图,存储过程等对象分组的方法。将模式看作对象的容器。 您可以将用户login权限分配给单个模式,以便用户只能访问他们有权访问的对象。

模式包含数据库。

数据库是架构的一部分。

所以,模式>数据库。

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

模式不是整个数据库的计划。 它是数据库中对象(ex.tables)子集的计划/容器。

这就是说,在一个数据库中可以有多个对象(例如表),这些对象不一定属于同一个function类别。 所以你可以按照不同的模式对它们进行分组,并给它们不同的用户访问权限。

也就是说,我不确定在多个模式下是否可以有一个表。 Management Studio用户界面提供了一个下拉列表来为表分配一个模式,因此可以只select一个模式。 我猜如果你使用TSQL做它,它可能会创build2个(或多个)具有不同对象ID的不同对象。

数据库模式是一种逻辑上将表,视图,存储过程等对象分组的方法。将模式看作对象的容器。 表格是行和列的集合。 所有表的组合使数据库。