SQL Server數(shù)據(jù)庫(kù)架構(gòu)與對(duì)象相關(guān)知識(shí)筆記
1、數(shù)據(jù)庫(kù)架構(gòu)簡(jiǎn)介
數(shù)據(jù)庫(kù)架構(gòu)是從SQL Server2005版本之后引入的概念。數(shù)據(jù)庫(kù)架構(gòu)獨(dú)立于創(chuàng)建它的數(shù)據(jù)厙用戶而存在,每個(gè)對(duì)象都屬于一個(gè)數(shù)據(jù)庫(kù)架構(gòu)(對(duì)象包括表、視圖、存儲(chǔ)過程、函數(shù)、觸發(fā)器等)
2、 數(shù)據(jù)庫(kù)、架構(gòu)和數(shù)據(jù)庫(kù)對(duì)象
數(shù)據(jù)庫(kù)架構(gòu)是一個(gè)獨(dú)立于數(shù)據(jù)庫(kù)用戶的非重復(fù)命名空間,用戶與架構(gòu)相互獨(dú)立,刪除用戶不會(huì)刪除架構(gòu)中的對(duì)象。將數(shù)據(jù)庫(kù)架構(gòu)與數(shù)據(jù)庫(kù)用戶分離有以下幾個(gè)優(yōu)點(diǎn):
1、大大簡(jiǎn)化了刪除數(shù)據(jù)庫(kù)用戶的操作。刪除數(shù)據(jù)庫(kù)用戶不需要重命名該用戶架構(gòu)所包含的對(duì)象。所以在刪除創(chuàng)建架構(gòu)所含對(duì)象的用戶后,不需要修改和測(cè)試顯式引用這些對(duì)象的應(yīng)用程序。
2、多個(gè)用戶可以共享一個(gè)默認(rèn)架構(gòu)然后進(jìn)行統(tǒng)一名稱解析。
3、可以通過共享默認(rèn)架構(gòu)將共享對(duì)象存儲(chǔ)在為特定應(yīng)用程序?qū)iT創(chuàng)建的架構(gòu)中,而不一定是dbo架構(gòu)中。
4、可以用更大的粒度管理對(duì)象的權(quán)限。
如果數(shù)據(jù)庫(kù)用戶具有創(chuàng)建架構(gòu)的權(quán)限,就可以在數(shù)據(jù)庫(kù)中創(chuàng)建、更改數(shù)據(jù)庫(kù)架構(gòu),該用戶就是架構(gòu)的所有者,并且可以將架構(gòu)的所有權(quán)轉(zhuǎn)讓給其他用戶,或者授予其他用戶訪問該數(shù)據(jù)庫(kù)架構(gòu)的權(quán)限,只有架構(gòu)的所有者才能在架構(gòu)中創(chuàng)建對(duì)象。
確定如何安排架構(gòu)中的對(duì)象,安全是一個(gè)很重要的考慮因素。
架構(gòu)作為一個(gè)命名空間——它被用作對(duì)象名稱的前綴。例如,假設(shè)在一個(gè)名為System的數(shù)據(jù)庫(kù)架構(gòu)中有一個(gè)名為UserInfo的表。架構(gòu)限定式對(duì)象名稱(也稱為“兩部分式對(duì)象名稱”)是System.UserInfo。
說明:數(shù)據(jù)庫(kù)默認(rèn)的架構(gòu)為dbo,如果不寫架構(gòu)名稱的話默認(rèn)為dbo。當(dāng)然如果一個(gè)數(shù)據(jù)庫(kù)存在多個(gè)數(shù)據(jù)庫(kù)架構(gòu),建議都采用兩部分式對(duì)象名稱的方式。這樣可以便于后續(xù)的運(yùn)維和代碼的可讀性。