数据库中的Schema是什么?

文章详细介绍了数据库中的模式(schema)概念,包括模式的组成如表、列、关系等,并通过例子展示了模式图。同时,文章对比了MySQL、Oracle和SQLServer中模式与数据库的区别及创建方式,强调了在不同DBMS中模式的定义和用法的异同。
摘要由CSDN通过智能技术生成

在数据库中,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 SCHEMACREATE 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时,请务必查找该系统如何定义模式。

转自:https://developer.aliyun.com/article/649086

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值