在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等) 如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名 SQL
在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题
一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等)
如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名
SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名
从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:
|
Catalog支持 | Schema支持 | ||||||||||||||||||||||||
Oracle | 不支持 | Oracle User ID | ||||||||||||||||||||||||
MySQL | 不支持 | 数据库名 | ||||||||||||||||||||||||
MS SQL Server | 数据库名 | 对象属主名,2005版开始有变 | ||||||||||||||||||||||||
DB2 | 指定数据库对象时,Catalog部分省略 | Catalog属主名 | ||||||||||||||||||||||||
Sybase | 数据库名 | 数据库属主名 | ||||||||||||||||||||||||
Informix | 不支持 | 不需要 | ||||||||||||||||||||||||
PointBase | 不支持 | 数据库名 |