介绍
按照SQL标准的解释,在SQL环境下 Catalog
和 Schema
都属于 抽象概念,可以把它们理解为一个 容器 或者 数据库对象命名空间 中的一个层次
主要用来 解决命名冲突 问题。
从概念上说,一个数据库系统包含多个 Catalog
,每个 Catalog
又包含多个 Schema
,而每个 Schema
又包含多个数据库对象(表、视图、字段等)。
反过来讲一个数据库对象必然属于一个 Schema
,而该 Schema
又必然属于一个 Catalog
,这样我们就可以得到该数据库对象的 完全限定名称,解决命名冲突的问题
例如:数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称
。
提示
好多时候,Schema
表示 表结构
数据库支持
各数据库系统对 Catalog
和 Schema
的支持和实现,并不相同。
常用的方式:
- 使用 数据库名 作为
Catalog
名 - 使用 用户名 作为
Schema
名
具体可参见下表:
供应商 | Catalog支持 | Schema支持 |
---|---|---|
Oracle | 不支持 | Oracle User ID |
MySQL | 不支持 | 数据库名 |
MS SQL Server | 数据库名 | 对象属主名,2005版开始有变 |
DB2 | 指定数据库对象时,Catalog部分省略 | Catalog属主名 |