|
翻譯自:http://database.guide/what-is-a-database-schema/ 在數(shù)據(jù)庫中,schema(發(fā)音 “skee-muh” 或者“skee-mah”,中文叫模式)是數(shù)據(jù)庫的組織和結(jié)構(gòu),schemas andschemata都可以作為復(fù)數(shù)形式。模式中包含了schema對象,可以是表(table)、列(column)、數(shù)據(jù)類型(data type)、視圖(view)、存儲過程(stored procedures)、關(guān)系(relationships)、主鍵(primary key)、外鍵(foreign key)等。數(shù)據(jù)庫模式可以用一個(gè)可視化的圖來表示,它顯示了數(shù)據(jù)庫對象及其相互之間的關(guān)系
以上是模式圖的一個(gè)簡單例子,顯示了三個(gè)表及其數(shù)據(jù)類型、表之間的關(guān)系以及主鍵和外鍵,以下是數(shù)據(jù)庫模式的一個(gè)更復(fù)雜的例子。
在這種情況下,模式圖分為四個(gè)部分: (1)Customer Data(客戶數(shù)據(jù)):與客戶有關(guān)的數(shù)據(jù),如姓名,地址等(2)Business(業(yè)務(wù)):業(yè)務(wù)所需的數(shù)據(jù),例如員工,商店位置,付款細(xì)節(jié)等(3)Inventory(庫存):所有產(chǎn)品的細(xì)節(jié)。在這里,產(chǎn)品是電影,所以它包含電影標(biāo)題,類別,演員等數(shù)據(jù)。(4)Views(視圖):關(guān)于用于評估的數(shù)據(jù)的特別觀點(diǎn),所以通過這些模式圖,我們可以進(jìn)一步創(chuàng)建一個(gè)數(shù)據(jù)庫,實(shí)際上,MySQL Workbench允許我們直接從圖中生成一個(gè) Schema和DataBase是否等同?涉及到數(shù)據(jù)庫的模式有很多疑惑,問題經(jīng)常出現(xiàn)在模式和數(shù)據(jù)庫之間是否有區(qū)別,如果有,區(qū)別在哪里。 取決于數(shù)據(jù)庫供應(yīng)商對schema(模式)產(chǎn)生疑惑的一部分原因是數(shù)據(jù)庫系統(tǒng)傾向于以自己的方式處理模式 (1)MySQL的文檔中指出,在物理上,模式與數(shù)據(jù)庫是同義的,所以,模式和數(shù)據(jù)庫是一回事。(2)但是,Oracle的文檔卻指出,某些對象可以存儲在數(shù)據(jù)庫中,但不能存儲在schema中。 因此,模式和數(shù)據(jù)庫不是一回事。(3)而根據(jù)這篇SQL Server技術(shù)文章SQLServer technical article,schema是數(shù)據(jù)庫SQL Server內(nèi)部的一個(gè)獨(dú)立的實(shí)體。 所以,他們也不是一回事。 因此,取決于您使用的RDBMS,模式和數(shù)據(jù)庫可能不一樣。 SQL標(biāo)準(zhǔn)對schema如何定義?ISO/IEC 9075-1 SQL標(biāo)準(zhǔn)中將schema定義為描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前對schema的定義疑惑不解,希望看了我的這篇文章會好一些,起碼不會更差。 廣義上造成疑惑的另一個(gè)原因可能是由于schema這一術(shù)語具有如此廣泛的含義,因?yàn)樗诓煌沫h(huán)境下有不同的含義,schema一詞源于希臘語skhēma,意思是形態(tài)(form),輪廓(figure),形狀(shape)或方案(plan)。Schema在心理學(xué)中被用來描述組織信息類別及其之間關(guān)系的有組織的思維或行為模式。我們在設(shè)計(jì)一個(gè)數(shù)據(jù)庫之前,還需要看看數(shù)據(jù)中的信息種類和它們之間的關(guān)系, 在我們開始使用DBMS中的物理模式之前,我們需要創(chuàng)建一個(gè)概念模式。在軟件開發(fā)中討論模式時(shí),可以討論概念模式、物理模式、內(nèi)部模式、外部模式、邏輯模式等,每一個(gè)都有其特定的含義。 DBMS的schema定義以下是三個(gè)領(lǐng)先的關(guān)系數(shù)據(jù)庫系統(tǒng)的schema定義: MySQL
MySQL官方文檔指出,從概念上講,模式是一組相互關(guān)聯(lián)的數(shù)據(jù)庫對象,如表,表列,列的數(shù)據(jù)類型,索引,外鍵等等。但是從物理層面上來說,模式與數(shù)據(jù)庫是同義的。你可以在MySQL的SQL語法中用關(guān)鍵字SCHEMA替代DATABASE,例如使用 參考: MySQL Glossary, MySQL 5.7 參考手冊. MySQL, Retrieved 6 June 2016。 SQL Server
SQL Server官方文檔指出,schema中包含了數(shù)據(jù)庫的表,字段,數(shù)據(jù)類型以及主鍵和外鍵的名稱。參考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.
Oracle DatabaseOracle中的schema系統(tǒng)與其他數(shù)據(jù)庫系統(tǒng)大不相同,Oracle的schema與數(shù)據(jù)庫用戶密切相關(guān)。
Oracle官方文檔指出,schema是數(shù)據(jù)或模式對象的邏輯結(jié)構(gòu)的集合,由數(shù)據(jù)庫用戶擁有,并且與該用戶具有相同的名稱,也就是說每個(gè)用戶擁有一個(gè)獨(dú)立的schema。
參考: Oracle Database Objects. Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016. 如果想了解更多關(guān)于schema的內(nèi)容,可以參考這篇文章schema definitions by DBMS. 創(chuàng)建Schema盡管上述三個(gè)DBMS在定義schema方面有所不同,還是有一個(gè)共同點(diǎn),就是每一個(gè)都支持 MySQL在MySQL中, Oracle Database在Oracle中, SQL Server在SQL Server中, 總結(jié)schema這個(gè)詞可以用在很多不同的環(huán)境中,在特定數(shù)據(jù)庫管理系統(tǒng)創(chuàng)建一個(gè)schema時(shí),您需要使用DBMS特定定義模式,當(dāng)你切換到一個(gè)新的數(shù)據(jù)庫管理系統(tǒng)時(shí),一定要查看該系統(tǒng)是如何定義schema的。 |
|
|