mysql设置catalog_Catalog与Schema
按照SQL標(biāo)準(zhǔn)的解釋,在SQL環(huán)境下Catalog和Schema都屬于抽象概念,可以把它們理解為一個(gè)容器或者數(shù)據(jù)庫對象命名空間中的一個(gè)層次,主要用來解決命名沖突問題。從概念上說,一個(gè)數(shù)據(jù)庫系統(tǒng)包含多個(gè)Catalog,每個(gè)Catalog又包含多個(gè)Schema,而每個(gè)Schema又包含多個(gè)數(shù)據(jù)庫對象(表、視圖、字段等),反過來講一個(gè)數(shù)據(jù)庫對象必然屬于一個(gè)Schema,而該Schema又必然屬于一個(gè)Catalog,這樣我們就可以得到該數(shù)據(jù)庫對象的完全限定名稱從而解決命名沖突的問題了;例如數(shù)據(jù)庫對象表的完全限定名稱就可以表示為:Catalog名稱.Schema名稱.表名稱。這里還有一點(diǎn)需要注意的是,SQL標(biāo)準(zhǔn)并不要求每個(gè)數(shù)據(jù)庫對象的完全限定名稱是唯一的,就象域名一樣,如果喜歡的話,每個(gè)IP地址都可以擁有多個(gè)域名。
從實(shí)現(xiàn)的角度來看,各種數(shù)據(jù)庫系統(tǒng)對Catalog和Schema的支持和實(shí)現(xiàn)方式千差萬別,針對具體問題需要參考具體的產(chǎn)品說明書,比較簡單而常用的實(shí)現(xiàn)方式是使用數(shù)據(jù)庫名作為Catalog名,使用用戶名作為Schema名,具體可參見下表:
表1 常用數(shù)據(jù)庫
供應(yīng)商
Catalog支持
Schema支持
Oracle
不支持
Oracle User ID
MySQL
不支持
數(shù)據(jù)庫名
MS SQL Server
數(shù)據(jù)庫名
對象屬主名,2005版開始有變
DB2
指定數(shù)據(jù)庫對象時(shí),Catalog部分省略
Catalog屬主名
Sybase
數(shù)據(jù)庫名
數(shù)據(jù)庫屬主名
Informix
不支持
不需要
PointBase
不支持
數(shù)據(jù)庫名
最后一點(diǎn)需要注意的是Schema這個(gè)單詞,它在SQL環(huán)境下的含義與其在數(shù)據(jù)建模領(lǐng)域中的含義是完全不同的。在SQL環(huán)境下,Schema是一組相關(guān)的數(shù)據(jù)庫對象的集合,Schema的名字為該組對象定義了一個(gè)命名空間,而在數(shù)據(jù)建模領(lǐng)域,Schema(模式)表示的是用形式語言描述的數(shù)據(jù)庫的結(jié)構(gòu);簡單來說,可以這樣理解,數(shù)據(jù)建模所講的Schema保存在SQL環(huán)境下相應(yīng)Catalog中一個(gè)Schema下的表中,同時(shí)可以通過查詢該Catalog中的另一個(gè)Schema下的視圖而獲取,具體細(xì)節(jié)不再贅述。
另外我結(jié)合MySQL官方的MySQL administrater數(shù)據(jù)庫管理工具理解一下所謂的schema,catalog:
點(diǎn)擊那個(gè)catalogs,下面就出來了所有的database。想了一下,我這樣來總結(jié):
數(shù)據(jù)庫:指的是說MySQL(或者說Oracle等)
schema: 指的是說當(dāng)偶create database caiceclb時(shí),caiceclb就是一個(gè)schema
catalog: 指的是所有的database目錄,就像上圖顯示的那樣,將MySQL原來的(mysql,infomation_schema)及后來新建的的database的集合。
總結(jié)
以上是生活随笔為你收集整理的mysql设置catalog_Catalog与Schema的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将整个表单设置为只读_如何将独立网站设置
- 下一篇: SQL行列问题