數據庫中的Schema是什么?
用數據庫術語來說, 模式 (讀作“ skee-muh”或“ skee-mah”)是數據庫的組織和結構。兩個 模式 和 圖式可以作為復數形式。
模式包含模式對象,可以是 表, 列,數據類型,視圖,存儲過程,關系,主鍵,外鍵等。
數據庫模式可以用可視化的圖表表示,該圖表顯示了數據庫對象及其相互之間的關系。
上面是模式圖的簡單示例。它顯示了三個表,以及它們的數據類型,表之間的關系以及它們的主鍵和外鍵。
這是數據庫架構的更復雜的示例:
在這種情況下,架構圖已分為四個部分:
- 客戶數據:與客戶有關的數據,例如其姓名,地址等
- 業務:開展業務所需的數據,例如人員,商店位置,付款明細等
- 庫存:所有產品的詳細信息。在這種情況下,產品是電影,因此它包含諸如電影標題,其類別,演員等數據。
- 視圖:用於評估的數據的特殊視圖。
因此,通過查看這些架構圖,我們可以繼續創建數據庫。實際上,MySQL Workbench允許您直接從圖中生成CREATE TABLE
腳本。然后,您可以使用腳本創建數據庫。您甚至可以 將數據庫反向工程為圖表。
模式和數據庫是同一件事嗎?
當涉及到數據庫時,關於模式有很多困惑。經常會出現一個問題,即模式和數據庫之間是否存在差異,如果存在差異,會有什么區別。
取決於供應商
造成混亂的部分原因是數據庫系統傾向於以自己的方式處理模式。
- 在MySQL文檔指出,物理,
一個模式是與數據庫的代名詞
。因此,模式和數據庫是同一件事。 - 但是,Oracle數據庫文檔指出某些對象可以存儲在數據庫中,而不能存儲在模式中。因此,模式和數據庫是兩件事。
- 根據此SQL Server技術文章,架構是數據庫內部的一個單獨實體。因此,它們是兩件事。
因此,根據所使用的RDBMS,架構和數據庫可能相同,也可能不同。
SQL標准呢?
在ISO / IEC 9075-1 SQL標准定義了一個模式作為 描述符的持久性,命名集合
。
如果您之前感到困惑,希望我不僅讓事情變得更糟...
廣義
造成混淆的另一個原因可能是由於術語圖式具有如此廣泛的含義這一事實。它在不同上下文中具有不同的含義。
圖式一詞起源於希臘語 skhēma,意為形式, 圖形,形狀或計划。
圖式在心理學中用於描述思想或行為的有組織的模式,該模式將信息的類別及其之間的關系組織起來。
在設計數據庫之前,我們還需要查看信息的類別及其之間的關系。在從DBMS內的物理模式開始之前,我們需要創建一個概念性模式。
在軟件開發中,當討論模式時,可以討論概念模式,物理模式,內部模式,外部模式,邏輯模式等。這些每個都有其特定的含義。
DBMS的架構定義
這是來自三個主要數據庫系統的模式的快速定義:
的MySQL
從概念上講,模式是一組相互關聯的數據庫對象,例如表,表列,列的數據類型,索引,外鍵等。
…。
實際上,在MySQL中,模式與數據庫是同義詞。您可以用MySQL SQL語法
SCHEMA
代替關鍵字DATABASE
,例如使用CREATE SCHEMA
代替CREATE DATABASE
。
資料來源: “ MySQL詞匯表”。MySQL 5.7參考手冊。MySQL的。2016年6月6日檢索。
SQL服務器
表的名稱,字段,數據類型以及數據庫的主鍵和外鍵。
“詞匯表”。SQL Server 2016技術文檔。Microsoft開發人員網絡。2016年6月6日檢索。
甲骨文數據庫
Oracle數據庫的模式系統與其他系統完全不同。Oracle的模式與數據庫用戶密切相關。
甲模式是數據的邏輯結構,或架構對象的集合。模式歸數據庫用戶所有,並且與該用戶同名。每個用戶都擁有一個架構。
資料來源: “數據庫對象”。Oracle數據庫在線文檔12c第1版(12.1)。Oracle幫助中心。2016年6月6日檢索。
有關DBMS的模式定義的本文提供了更多詳細信息。
創建模式
盡管在定義模式方面存在差異,但上述三個DBMS均支持該CREATE SCHEMA
語句。
這就是相似性結束的地方。
的MySQL
在MySQL中, CREATE SCHEMA
創建一個數據庫。
這是因為 CREATE SCHEMA
是的同義詞 CREATE DATABASE
。換句話說,您可以使用 CREATE SCHEMA
或 CREATE DATABASE
做同樣的事情。
甲骨文數據庫
在Oracle數據庫中,該CREATE SCHEMA
語句實際上並未創建模式。這是因為已經為每個數據庫用戶創建了一個架構。
在Oracle中,該 CREATE USER
語句創建架構。
在Oracle中, CREATE SCHEMA
語句使您可以使用表和視圖填充架構,並為這些對象授予特權,而不必在多個事務中發出多個SQL語句。
SQL服務器
在SQL Server中,CREATE SCHEMA
將通過您提供的名稱創建一個架構。
與MySQL不同,該 CREATE SCHEMA
語句創建一個與數據庫分開定義的架構。
與Oracle不同,該 CREATE SCHEMA
語句實際上創建模式。
在SQL Server中,一旦創建了架構,便可以向其中添加用戶和對象。
結論
術語架構可以在許多不同的上下文中使用。在特定的數據庫管理系統中創建模式的上下文中,您需要與DBMS一起定義模式。
而且,當您切換到新的DBMS時,請務必查看該系統如何定義架構。