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

