2014-02-08 58 views
1

我讀了一篇關於數據庫模式的文章。關於數據庫模式的用途

SQL Server架構是一個對象的容器。例如,您可能擁有一個大型企業應用程序,然後爲不同目的使用不同架構(例如,將HR相關表放入HR架構,將相關表格記入Accounting計劃架構等)是一種很好的做法。架構可以由任何用戶擁有,並且所有權可以轉讓。

他們說:不同用途使用不同的模式(例如,把人力資源相關的表到HR模式,會計相關的表到會計覈算模式等)

難道他們的意思是創造人力資源和再新新的數據庫會計數據庫?

因爲當我們創建一個數據庫然後創建一個模式,所以我們不能在單個SQL Server數據庫中創建多個模式,據我所知。

那麼請告訴我如何在單個數據庫中爲不同目的創建不同的模式?由於

+0

定義:數據庫模式是描述數據庫中關係的元數據的集合。模式可以簡單地描述爲數據庫的「佈局」或概述數據組織到表中的方式的藍圖。架構通常使用結構化查詢語言描述爲一系列可用於在新數據庫中複製架構的CREATE語句。 – Mou

+0

看看這個問題。 。 。 http://stackoverflow.com/questions/17073676/a-better-understanding-of-schema-in-sqlserver。 –

+0

** YES OF COURSE **您可以在單個數據庫中創建多個模式!只需查看Microsoft提供的AdventureWorks樣本數據庫 - 它包含多個模式,適用於企業的不同區域。 –

回答

1

模式

架構在SQL Server的目的sql server 2005進行了介紹,主要目的是消除在SQL Server對象的用戶的所有權。或者你可以說分隔用戶從sql server中的對象。

之前sql server中的sql server 2005對象(表,視圖,存儲過程等)由用戶擁有。通常是創建它的用戶。

而且該用戶必須授予其他用戶使用該特定對象的權限。

想象一下,有12名開發人員在一家公司工作,所有開發人員都在左右中間創建sql對象。現在,如果所有開發人員必須處理由該開發人員創建的對象,則必須爲其他11個開發人員授予權限。相當一點混亂不是嗎?

由於sql server 2005帶有Schema。所有對象都由Schema Not a User擁有。如果您尚未創建任何自定義架構,它將在默認架構dbo下。

現在任何擁有dbo架構權限的人都擁有dbo架構下任何對象的權限。

爲什麼在您的案例中爲不同的部門創建不同的架構是一個好主意。這可能是因爲人力資源人員不需要知道任何關於財務的東西。所以您可以創建一個HR模式,並僅爲HR模式授予HR人員權限。反之亦然,財務人員。這將限制他們只能訪問與其部門相關的對象。

,我們可以在一個數據庫中創建多個模式,如果你曾經與AdventureWorks數據庫的工作,它有一個像「生產」,架構「銷售」等等等等

Read here,以瞭解更多有關SQL模式服務器。

+0

因此可以在單個數據庫中創建多個模式...如果是,然後告訴我如何邏輯地將表,視圖,函數等db對象分組到特定模式。我想知道如何將HR相關對象分配給HR模式或財務相關的所有對象到賬戶模式。謝謝 – Mou

+0

這是你需要做的事情,你需要記住你的客戶的需求。獲取一張紙開始在該論文中設計數據庫,爲每個部門創建單獨的架構,僅針對該部門的表將其保留在該部門下所有部門將使用的架構和表中,使其保留默認的dbo架構。在每個模式下創建其他對象並允許用戶使用其相關模式....等等..... –

0

不,他們的意思是創建一個模式。創建模式在數據庫中工作。它有各種各樣的用途,我傾向於把它看作是命名空間或更自然的方式來劃分一個小型數據庫並保持基於角色的訪問,在那裏你可以將模式視爲一個用戶組。

0

不幸的是,數據庫領域中的「schema」這個詞有兩個含義。

一個意思是數據庫表的總體設計。例如,「讓我看看你的數據庫模式」。這將是「創建表」命令或ERD圖的集合。

另一個是「命名空間」的同義詞,這篇文章正在討論。您可以在不同的名稱空間中存儲表格,函數等,以減輕認知負擔或用於安全分組。