这可能是一个新手(或更糟)的问题。但我一直把模式视为数据库中的表定义。这是错误的,或者不完全正确。我已经忘记了我在数据库课程中学到的很多内容。
这可能是一个新手(或更糟)的问题。但我一直把模式视为数据库中的表定义。这是错误的,或者不完全正确。我已经忘记了我在数据库课程中学到的很多内容。
schema -> 楼层平面图
database -> 房子
table -> 房间
关系模式是表的逻辑定义,它定义了表的名称、每个列的名称和类型。它类似于一个计划或蓝图。数据库模式是整个数据库的关系模式集合。
表是一种具有一堆行(也称为 "元组")的结构,每个行都有由模式定义的属性。表还可能在其上拥有索引,以帮助查找特定列上的值。
数据库在正式上是任何数据的集合。在这个上下文中,数据库将是表的集合。数据库管理系统(DBMS)是管理和运行数据库的软件(如MySQL, SQL Server, Oracle等)。
简而言之,模式是整个数据库的定义,因此它包括表、视图、存储过程、索引、主键和外键等内容。
Schema 的行为类似于面向对象编程中的父对象,因此它本身不是数据库。也许 这个链接 会有用。
但是,在 MySQL 中,这两者是等效的。关键词 DATABASE 或 DATABASES 可以在出现的任何地方替换为 SCHEMA 或 SCHEMAS。例如:
SCHEMA 和 DATABASE 术语是与 DBMS 有关的。
表格(Table) 是使用垂直列模型(由名称标识)和水平行组织的数据元素(值)集合。一个数据库包含一个或多个(通常是)表格,您可以将数据存储在这些表格中。这些表格可能彼此相关(看这里)。
这篇文章只与Oracle相关,而在另一个DB的上下文中,Schema的定义也会发生改变。
可能这是一种可以通过谷歌解决的问题,但是需要注意的是术语的定义似乎存在差异,这是最令人烦恼的事情 :)
在Oracle中,一个数据库就是一个数据库。在您的脑海中,可以将其视为数据文件、重做日志和实际存在于磁盘上的数据库本身(即不是实例)
Schema实际上是一个用户,更具体地说,它是由一个用户拥有的一组表/存储过程/索引等等。另一个用户具有不同的模式(他/她拥有的表),但是用户还可以查看他们具有选择权限的任何模式。因此,一个数据库可以包含数百个模式,每个模式包含数百个表。您可以在同一数据库中的不同模式中拥有相同名称的表。
表就是表,一个包含数据行和列的集合,位于模式中。
在SQL Server中,定义可能会有所不同。我不了解这点。
schema1
和myschema
都可以包含名为mytable
的表格。与数据库不同,模式并没有被严格分离:如果用户有权限,他可以访问连接到的数据库中任何一个模式中的对象。database/schema :: table
database :: (schema/namespace::) table
database/schema/user :: (tablespace ::) table
正如MusiGenesis所说,在大多数数据库中:
模式:数据库:表 :: 楼层平面图:房子:房间
但是,在Oracle中,可以更容易地理解为:
模式:数据库:表 :: 所有者:房子:房间
Schema
是一组数据库对象,其中包括逻辑结构。
它具有拥有者的名称。
一个 database
可以有任意数量的 Schema。
来自数据库的一个表可以出现在同名的两个不同 Schema 中。
用户可以查看他们被分配了选择权限的任何 Schema。