在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 |
不支持 |
數據庫名 |