数据库中的Schema是什么?
什么是数据库架构?
schema
英 [ˈski:mə] 美 [ˈskimə] n. 概要,计划,图表;
用数据库术语来说, 模式 (读作“ skee-muh”或“ skee-mah”)是数据库的组织和结构。两个 模式 和 图式可以作为复数形式。
模式包含模式对象,可以是 表, 列,数据类型,视图,存储过程,关系,主键,外键等。
数据库模式可以用可视化的图表表示,该图表显示了数据库对象及其相互之间的关系。
表示小型三表数据库的基本架构图。
上面是模式图的简单示例。它显示了三个表,以及它们的数据类型,表之间的关系以及它们的主键和外键。
这是数据库架构的更复杂的示例:
Sakila示例数据库的数据库架构图。
在这种情况下,架构图已分为四个部分:
- 客户数据:与客户有关的数据,例如其姓名,地址等
- 业务:开展业务所需的数据,例如人员,商店位置,付款明细等
- 库存:所有产品的详细信息。在这种情况下,产品是电影,因此它包含诸如电影标题,其类别,演员等数据。
- 视图:用于评估的数据的特殊视图。
因此,通过查看这些架构图,我们可以继续创建数据库。实际上,MySQL Workbench允许您直接从图中生成CREATE TABLE脚本。然后,您可以使用脚本创建数据库。您甚至可以 将数据库反向工程为图表。
模式和数据库是同一件事吗?
当涉及到数据库时,关于模式有很多困惑。经常会出现一个问题,即模式和数据库之间是否存在差异,如果存在差异,会有什么区别。
取决于供应商
造成混乱的部分原因是数据库系统倾向于以自己的方式处理模式。
- 在MySQL文档指出,物理,一个模式是与数据库的代名词。因此,模式和数据库是同一件事。
- 但是,Oracle数据库文档指出某些对象可以存储在数据库中,而不能存储在模式中。因此,模式和数据库是两件事。
- 根据此SQL Server技术文章,架构是数据库内部的一个单独实体。因此,它们是两件事。
因此,根据所使用的RDBMS,架构和数据库可能相同,也可能不同。
SQL标准呢?
在ISO / IEC 9075-1 SQL标准定义了一个模式作为 描述符的持久性,命名集合。
如果您之前感到困惑,希望我不仅让事情变得更糟...
广义
造成混淆的另一个原因可能是由于术语图式具有如此广泛的含义这一事实。它在不同上下文中具有不同的含义。
图式一词起源于希腊语 skhēma,意为形式, 图形,形状或计划。
图式在心理学中用于描述思想或行为的有组织的模式,该模式将信息的类别及其之间的关系组织起来。
在设计数据库之前,我们还需要查看信息的类别及其之间的关系。在从DBMS内的物理模式开始之前,我们需要创建一个概念性模式。
在软件开发中,当讨论模式时,可以讨论概念模式,物理模式,内部模式,外部模式,逻辑模式等。这些每个都有其特定的含义。
DBMS的架构定义
这是来自三个主要数据库系统的模式的快速定义:
的MySQL
从概念上讲,模式是一组相互关联的数据库对象,例如表,表列,列的数据类型,索引,外键等。
…。
实际上,在MySQL中,模式与数据库是同义词。您可以用MySQL SQL语法
SCHEMA
代替关键字DATABASE
,例如使用CREATE SCHEMA
代替CREATE DATABASE
。
资料来源: “ MySQL词汇表”。MySQL 5.7参考手册。MySQL的。2016年6月6日检索。
SQL服务器
表的名称,字段,数据类型以及数据库的主键和外键。
“词汇表”。SQL Server 2016技术文档。Microsoft开发人员网络。2016年6月6日检索。
甲骨文数据库
Oracle数据库的模式系统与其他系统完全不同。Oracle的模式与数据库用户密切相关。
甲模式是数据的逻辑结构,或架构对象的集合。模式归数据库用户所有,并且与该用户同名。每个用户都拥有一个架构。
资料来源: “数据库对象”。Oracle数据库在线文档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数据库中,该CREATE SCHEMA语句实际上并未创建模式。这是因为已经为每个数据库用户创建了一个架构。
在Oracle中,该 CREATE USER 语句创建架构。
在Oracle中, CREATE SCHEMA
语句使您可以使用表和视图填充架构,并为这些对象授予特权,而不必在多个事务中发出多个SQL语句。
SQL服务器
在SQL Server中,CREATE SCHEMA将通过您提供的名称创建一个架构。
与MySQL不同,该 CREATE SCHEMA
语句创建一个与数据库分开定义的架构。
与Oracle不同,该 CREATE SCHEMA
语句实际上创建模式。
在SQL Server中,一旦创建了架构,便可以向其中添加用户和对象。
结论
术语架构可以在许多不同的上下文中使用。在特定的数据库管理系统中创建模式的上下文中,您需要与DBMS一起定义模式。
而且,当您切换到新的DBMS时,请务必查看该系统如何定义架构。