1. 程式人生 > >資料庫中的Catalog和Schema

資料庫中的Catalog和Schema

按照SQL標準的解釋,在SQL環境下Catalog和Schema都屬於抽象概念,可以把它們理解為一個容器或者資料庫物件名稱空間中的一個層次,主要 用來解決命名衝突問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數 據庫物件(表、檢視、欄位等),反過來講一個數據庫物件必然屬於一個Schema,而該Schema又必然屬於一個Catalog,這樣我們就可以得到該 資料庫物件的完全限定名稱從而解決命名衝突的問題了;例如資料庫物件表的完全限定名稱就可以表示為:Catalog名稱.Schema名稱.表名稱。這裡 還有一點需要注意的是,SQL標準並不要求每個資料庫物件的完全限定名稱是唯一的,就象域名一樣,如果喜歡的話,每個IP地址都可以擁有多個域名。

====我的理解 ====

原來的理解是資料庫下面就是資料表了,現在的理解是在資料庫和資料表之間還有個schema,我是以倉庫做參考來理解的,資料庫相當於倉庫,schema則相當於倉庫裡面的庫房(或者說房間),而表相當於貨架(貨架上一行行的就當是記錄吧,呵呵)。如果我是倉庫管理員,那麼就會有所有倉庫裡庫房的鑰匙(即管理整個資料庫的許可權),那麼如果我想把其中的某個庫房給其他人管的話,我只需要把這個庫房的門鑰匙給他就成(即管理schema的許可權)。如果只是看的話,我可以給他開啟這個庫房門上小窗的鑰匙(想想電影裡經常出現的給牢裡犯人送飯的那個小窗