关于数据库中的schema的注释

关于数据库中的schema

schema:模式,在SQL Server中文版文档中翻译为架构。

在数据库学习过程中,有一个schema概念,如概念模式、物理模式、内部模式、外部模式、逻辑模式,以及DBMS的schema等,每一个都有其特定的含义,在不同语境下的含义不同,容易初学者迷糊。

DBMS的schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。

☆ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors)。

☆MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE。

参考: MySQL Glossary之schema ,链接是MySQL :: MySQL 5.7 Reference Manual :: MySQL Glossary

☆Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。Oracle的schema与数据库用户密切相关。schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。参考  Oracle Database Objects之 Schema Objects,链接是Database Objects

☆SQL Server中schema是数据库SQL Server内部的一个独立的实体,包括表、字段、数据类型以及数据库的主键和外键的名称。参考:SQL Server Glossary之database schema ,链接是 Glossary | Microsoft Learn

要理解SQL Server的架构(SCHEMA)可以参考

权限层次结构(数据库引擎)权限层次结构(数据库引擎) - SQL Server | Microsoft Learn

安全对象范围:架构 安全对象 - SQL Server | Microsoft Learn

尽管上述三个DBMS在定义schema方面有所不同:

★MySQL

在MySQL中,CREATE SCHEMA创建了一个数据库,这是因为CREATE SCHEMA是CREATE DATABASE的同义词。 换句话说,你可以使用CREATE SCHEMA或者CREATE DATABASE来创建一个数据库。

★Oracle Database

在Oracle中,CREATE SCHEMA语句实际上并不创建一个模式,这是因为已经为在创建用户时,数据库用户就已经创建了一个模式,也就是说在ORACLE中CREATE USER就创建了一个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从而不必在多个事务中发出多个SQL语句。

Oracle数据库将一个单独的模式与每个数据库用户相关联。一个模式由一组模式对象组成。

在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

★SQL Server

在SQL Server中,CREATE SCHEMA将按照名称创建一个模式,与MySQL不同,CREATE SCHEMA语句创建了一个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了一个模式(前面说到这个语句在ORACLE中不创建一个模式),在SQL Server中,一旦创建了模式,就可以往模式中添加用户和对象。

另外,当我们用create user创建数据库用户时,我们可以用该用户指定一个已经存在的schema作为默认的schema,如果我们不指定,则该用户所默认的schema即为dbo schema。

关于数据库系统模式(schema)和模型(model)还可参见https://blog.csdn.net/cnds123/article/details/46678367

参考

What is a Database Schema? What is a Database Schema?

(译文见数据库中的Schema是什么?_我是蚁人的博客-CSDN博客

如何理解数据库的Schema模式如何理解数据库的Schema模式 – 标点符

在数据库中,schema、catalog分别指的是什么?在数据库中,schema、catalog分别指的是什么? - 知乎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值