1. 程式人生 > >資料庫schema與catalog簡介

資料庫schema與catalog簡介

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

    從實現的角度來看,各種資料庫系統對Catalog和Schema的支援和實現方式千差萬別,針對具體問題需要參考具體的產品說明書,比較簡單而常用的實現方式是使用資料庫名作為Catalog名,使用使用者名稱作為Schema名,具體可參見下表:

表1 常用資料庫

供應商

Catalog支援

Schema支援

Oracle

不支援

Oracle User ID

MySQL

不支援

資料庫名

MS SQL Server

資料庫名

物件屬主名,2005版開始有變

DB2

指定資料庫物件時,Catalog部分省略

Catalog屬主名

Sybase

資料庫名

資料庫屬主名

Informix

不支援

不需要

PointBase

不支援

資料庫名

    最後一點需要注意的是Schema這個單詞,它在SQL環境下的含義與其在資料建模領域中的含義是完全不同的。在SQL環境下,Schema是一組相關的資料庫物件的集合,Schema的名字為該組物件定義了一個名稱空間,而在資料建模領域,Schema(模式)表示的是用形式語言描述的資料庫的結構;簡單來說,可以這樣理解,資料建模所講的Schema<也就是元資料>儲存在SQL環境下相應Catalog中一個Schema<名叫DEFINITION_SCHEMA>下的表中,同時可以通過查詢該Catalog中的另一個Schema<名叫INFORMATION_SCHEMA>下的檢視而獲取,具體細節不再贅述。

    另外我結合MySQL官方的MySQL administrater資料庫管理工具理解一下所謂的schema,catalog:


圖1 MySql

    點選那個catalogs,下面就出來了所有的database。想了一下,我這樣來總結:

    資料庫:指的是說MySQL(或者說Oracle等)

    schema: 指的是說當偶create database caiceclb時,caiceclb就是一個schema

    catalog: 指的是所有的database目錄,就像上圖顯示的那樣,將MySQL原來的(mysql,infomation_schema)及後來新建的的database的集合。

相關推薦

資料庫schemacatalog簡介

    按照SQL標準的解釋,在SQL環境下Catalog和Schema都屬於抽象概念,可以把它們理解為一個容器或者資料庫物件名稱空間中的一個層次,主要用來解決命名衝突問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數據庫物件(表

資料庫schemacatalog的理解

按照SQL標準的解釋,在SQL環境下Catalog和Schema都屬於抽象概念,可以把它們理解為一個容器或者資料庫物件名稱空間中的一個層次,主要 用來解決命名衝突問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Sche

schemacatalog的理解

sql環境中Catalog和Schema都屬於抽象概念,主要用來解決命名衝突問題。一個數據庫系統包含多個Catalog,每個Catalog包含多個Schema,每個Schema包含多個數據庫物件(表、檢視、欄位等)。 資料庫的完全限定名稱可以為 Catalog名稱.Schema名稱.表名稱 注意:Sql不

資料庫schemacatalog三者的涵義(簡單描述)

你是否經常見到schema,catalog這些單詞,在資料庫的背景下是什麼意思呢? taopian (高階程式設計師) 2009-01-07 寫道 schema是對一個數據庫的結構描述。在一個關係型資料庫裡面,schema定義了表、每個表的欄位,還有表和欄位之間的關係

資料庫中的CatalogSchema

按照SQL標準的解釋,在SQL環境下Catalog和Schema都屬於抽象概念,可以把它們理解為一個容器或者資料庫物件名稱空間中的一個層次,主要 用來解決命名衝突問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schem

Schema數據類型優化

ber 2nf 減少 掃描 時間 進行 時也 分布 包括   選擇數據類型       更小的通常更好:盡量使用可以正確存儲數據的最小數據類型。因為它們占用的更少的磁盤,內存和CPU緩存,並且處理需要CPU周期也更少。     簡單就好:簡單數據類型的操作通常需要更少的CP

容器Docker簡介(三)Docker相關術語——微軟微服務電子書翻譯系列

進程 數據 public 圖像 over 表示 -c ice ner 本節列出了在更加深入Docker之前應該熟悉的術語和定義。 有關詳細的定義,請參閱Docker提供的術語表。 容器鏡像(Container image):具有創建容器所需要的所有依賴和信息的包。 鏡像

RMAN中nocatalogcatalog的區別?

oracle歸檔日誌nocatalog方式:用control file作為catalog,每一次備份都要往控制文件裏面寫好多備份信息,控制文件裏面會有越來越多的備份信息,即RMAN的備份信息寫在本地控制文件裏面。catalog方式:必須要首先要創建目錄備份數據庫(catalog,也稱知識庫),建立恢復目錄,即

文章匯總索引內容簡介

索引所有文章索引與內容簡介,點擊文章名就可以跳到該文章頁面。索引描述Python練習(一)給一個不超過5位的正整數,判斷其有幾位,依次打印個、十、百、千、萬位的數字Python練習(二)打印n邊長的正方形Python練習(三)求100內的素數Python練習(四)求100內所有奇數和偶數的和Python練習(

HTTPHTTPS簡介

html http https cookie cookie sessionHTTP協議(HyperText Transfer Protocal): 即超文本傳輸協議,是一種發布和接收HTML頁面的方法.HTTPS協議(HyperText Transfer Protocal over Secure Soc

1.編程語言發展史Python簡介

通過 遊戲 運行時 人工智能 發展 使用 機器 修改 浪費 1.編程語言發展史:1.1機器語言計算機內部只能識別二進制代碼,用二進制代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成的計算機語言稱為機器語言。該語言開發效率特別低,運行效率高。1.2匯編語言將機器語言的

【MySQL】《高性能MySQL》學習筆記,第四章,Schema數據類型優化

MySQL優化 MySQL表設計 MySQL開發規範 MySQL數據類型 【MySQL】《高性能MySQL》學習筆記,第四章,Schema與數據類型優化 良好的邏輯設計和物理設計是高性能的基石,應該根據系統將要執行的查詢語句來設計schema。 反範式的設計可以加快某些類型的查詢,單同時可能使

版本管理工具gitsvn簡介

clear 碼代碼 check fig 常用指令 ons 自己的 開發 1.0 版本管理工具 版本管理工具簡介 常見版本管理工具 cvs(Concurrent Versions System) vss(Visual SourceSafe) svn 常用的版本管理工具 g

python 虛擬環境安裝命令簡介

python1. 更新Pip版本 #安裝 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 setup.py install pip install -U pip 2. 使用Pip安裝virtualenv虛擬環境工具,創建

威尼斯人源碼搭建NoSql簡介

nosql數據庫 可擴展性 key 查詢 sequoiadb rac 要求 系統 處理 NoSQL(Not Only SQL ),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存

Java並發之CASAQS簡介

多少 -c 可用 完成 atomic lean 應用 ont 技術分享 1,什麽是CAS CAS(Compare And Swap),即比較並交換。是解決多線程並行情況下使用鎖造成性能損耗的一種機制,CAS操作包含三個操作數——內存位置(V)、預期原值(A)和新值(B)

Django中MySQL資料庫時間真實插入時間相差8小時的解決

class BaseModel(models.Model):     """模型類基類"""     create_time = models.DateTimeField(auto_now_add=True, verbose_name="新增時間") &nb

yii2資料庫表之間的遷移

public function actionThirdEditionAdmin() { $sql = file_get_contents(__DIR__ . '/../../../../common/sql/20180815_hyz.sql');

模塊的使用orm簡介

定向 .post 文件中 mysqldb submit 開發 介紹 數據庫 clas 目錄 1 django中app的概念: 2 模板路徑配置: 3 靜態文件配置: 4 完整版登錄功能 5 get請求和post請求 6 新手三件套總結 7 pycharm連接mysql 8

資料庫概述入門

資料庫:(格式化,持久化的儲存資料)--按照資料結構來組織、儲存和管理資料的倉庫。 分類:關係型:(表格)       非關係型(NoSQL):(非表格,用鍵值對)      特點:NoSQL不是否定關係資料庫,而是作為關係 資料庫的一個重要補充         NoSQL高效能,高併發