数据库中的Schema是什么?

  1. 云栖社区>
  2. 博客>
  3. 正文

数据库中的Schema是什么?

落花四月 2018-07-11 21:23:00 浏览585
展开阅读全文

 

翻译自:http://database.guide/what-is-a-database-schema/

 

在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式。

模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、

主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系

以上是架构图的简单示例。它显示了三个表,以及它们的数据类型,表之间的关系,以及它们的主键和外键。

 

这是一个更复杂的数据库模式示例:

 

在这种情况下,模式图分为四个部分:

(1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等

(2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等

(3)Inventory(库存):所有产品的细节。在这里,产品是电影,所以它包含电影标题,类别,演员等数据。

(4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,

实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。

 

架构和数据库是一样的吗?

在涉及数据库时,有很多关于模式的混淆。问题经常出现在模式和数据库之间是否存在差异,如果是,那么差异是什么。

 

取决于供应商

造成混淆的部分原因是数据库系统倾向于以自己的方式处理模式。

  • MySQL文档指出,物理,一个模式是与数据库的代名词因此,模式和数据库是一回事
  • 但是,Oracle数据库文档指出某些对象可以存储在数据库中,但不能存储在模式中。因此,模式和数据库是两回事
  • 根据这篇SQL Server技术文章,模式是数据库中的一个独立实体。所以,它们是两个不同的东西

因此,根据您使用的RDBMS,模式和数据库可能是也可能不是同一个东西。

那么SQL标准呢?

ISO / IEC 9075-1 SQL标准定义了一个模式作为  描述符的持久性,命名集合

如果你之前感到困惑,希望我没有让它变得更糟......

广义

混淆的另一个原因可能是由于术语模式具有如此广泛的含义。它在不同的背景下具有不同的内涵。

单词schema来自希腊语  skhēma,意思是形式,  形象形状计划

模式在心理学中用于描述组织信息类别及其之间关系的有组织的思想或行为模式。

在设计数据库之前,我们还需要查看信息类别以及它们之间的关系。在我们开始使用DBMS中物理模式之前,我们需要创建一个概念模式

在软件开发中,在讨论模式时,可以讨论概念模式,物理模式,内部模式,外部模式,逻辑模式等。其中每一个都有其特定的含义。

DBMS的模式定义

以下是三个领先数据库系统的模式的快速定义:

MySQL的

从概念上讲,模式是一组相互关联的数据库对象,例如表,表列,列的数据类型,索引,外键等。

...。

在MySQL中,物理上,模式数据库是同义词您可以替换关键字SCHEMA而不是DATABASEMySQL SQL语法,例如使用CREATE SCHEMA而不是CREATE DATABASE

资料来源:  “MySQL词汇表”MySQL 5.7参考手册。MySQL的。检索2016年6月6日。

 

SQL Server

表,字段,数据类型以及数据库的主键和外键的名称。

“词汇表”SQL Server 2016技术文档。Microsoft Developer Network。检索2016年6月6日。

 Oracle数据库

Oracle数据库的模式系统与其他系统完全不同。Oracle的架构与数据库用户密切相关。

模式是数据的逻辑结构,或架构对象的集合。模式由数据库用户拥有,并且与该用户具有相同的名称。每个用户拥有一个架构。

来源:  “数据库对象”Oracle Database Online Documentation 12c第1版(12.1)。Oracle帮助中心。检索2016年6月6日。

这篇关于DBMS的模式定义的文章提供了更多细节。

创建架构

尽管它们在定义模式方面存在差异,但上述三个DBMS中的每一个都支持该CREATE SCHEMA语句。

这就是相似性结束的地方。

MySQL的

在MySQL中,  CREATE SCHEMA创建一个数据库。

这是因为  CREATE SCHEMA 是它的同义词  CREATE DATABASE换句话说,您可以使用 CREATE SCHEMA或  CREATE DATABASE执行相同的操作。

Oracle数据库

在Oracle数据库中,该CREATE SCHEMA语句实际上并不创建模式。这是因为已经为每个数据库用户创建了一个模式。

在Oracle中,该  CREATE USER  语句创建模式。

在Oracle中,  CREATE SCHEMAstatement允许您使用表和视图填充模式,并为这些对象授予权限,而无需在多个事务中发出多个SQL语句。

SQL Server

在SQL Server中,CREATE SCHEMA将根据您提供的名称创建架构。

与MySQL不同,该  CREATE SCHEMA 语句创建一个与数据库分开定义的模式。

与Oracle不同,该  CREATE SCHEMA 语句实际上创建了模式。

在SQL Server中,一旦创建了架构,就可以向其中添加用户和对象。

结论

术语模式可以在许多不同的上下文中使用。在特定数据库管理系统中创建模式的上下文中,您需要使用DBMS定义模式。

当您切换到新的DBMS时,请务必查找该系统如何定义模式。

 

您可以考虑给博主来个小小的打赏以资鼓励,您的肯定将是我最大的动力。

微信支付宝
作者:落花四月
关于作者:潜心于网络安全学习。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

网友评论

登录后评论
0/500
评论
落花四月
+ 关注