介绍
按照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属主名 |
参考:
http://t.zoukankan.com/ECNB-p-4611309.html