模式和數據庫的區(qū)別_第1頁
模式和數據庫的區(qū)別_第2頁
模式和數據庫的區(qū)別_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、模式與數據庫、數據庫中的表的關系:1個數據庫下,可以有多個模式。1個模式下,可以有0個或多個表。首先我來做一個比喻,什么是User,什么是Database,什么是Schema,什 么是Table,什么是列,什么是行,?我們可以把Database看作是一個大倉庫,倉庫分了很多很多的房間,Schema 就是其中的房間,一個Schema代表一個房間,Table可以看作是每個Schema中 的床,Table就被放入每個房間中,不能放置在房間之外。然后床上可以放置很 多物品,就好比Table上可以放置很多列和行一樣。所以Schema包含的是 Object,而不是 User。User是每個對應數據庫的主人

2、,既然有操作數據庫的權利,就肯定有操作 數據庫中每個Schema(房間)的權利。換句話說,如果他是某個倉庫的主人, 那么這個倉庫的使用權和倉庫中的所有東西都是他的,他有完全的操作權,。我 們還可以給User分配具體的權限,也就是他到某一個房間能做些什么,是只能 看(Read-Only),還是可以像主人一樣有所有的控制權(R/W),這個就要看這 個User所對應的角色Role 了,至于分配權限的問題,后面章節(jié)有介紹。在SQL Server2005中,當我們用Create User創(chuàng)建數據庫用戶時,我們可 以為該用戶指定一個已經存在的Schema作為默認Schema,如果我們不指定,則 該用戶所默

3、認的Schema即為dbo模式,dbo房間(Schema)好比一個大的公共 房間,在當前登錄用戶沒有默認Schema的前提下,如果你在大倉庫中進行一些 操作,比如Create Tabe,如果沒有指定特定的房間(Schema),那么你的物品 就只好放進公共的dbo房間(Schema)了。但是如果當前登錄用戶有默認的 Schema,那么所做的一切操作都是在默認Schema上進行(比如當前登錄用戶為 login1。在SQL Server2005中創(chuàng)建一個數據庫的時候,會有一些Schema包括進 去,被包括進去的 Schema 有:dbo,INFORMATION_SCHEMA, guest,sys 等

4、等。我在上文中已經提到了,在SQL Server2005中當用存儲過程 sp_adduser創(chuàng)建一個user時,同時SQL Server2005也為我們創(chuàng)建了一個默認 的和用戶名相同的Schema,這個時候問題出來了,當我們create table A時,如果沒有特定的Schema做前綴,這個A表創(chuàng)建在了哪個Schema上,即進入了哪 個房間?答案是:如果當前操作數據庫的用戶有默認的Schema(在創(chuàng)建用戶的時候指 定了),那么表A被創(chuàng)建在了默認的Schema上。如果當前操作數據庫的用戶沒有默認的Schema (即在創(chuàng)建User的時 候默認為空),那么表A被創(chuàng)建在了 dbo Schema上,即

5、使有一個和用戶名同名 的Schema存在,由于它不是該用戶默認的Schema,所以創(chuàng)建表的時候是不會考 慮的,當作一般的Schema來處理,別看名字相同,可是沒有任何關系哦。如果在創(chuàng)建表A的時候指定了特定的Schema做前綴,則表A被創(chuàng)建 在了指定的Schema上。在這里,為了避免混淆和提高操作數據庫的速度,我們最好每次在操作 數據庫對象的時候都顯式地指定特定的Schema最為前綴?,F在如果登錄的用戶 為Sue,該用戶有一個默認Schema也為Sue,那么如果現在有一條查詢語句為 Select * from mytable,那么搜尋每個房間(Schema)的順序是怎樣的呢?順 序如下:首先搜尋

6、 sys.mytable (Sys Schema)然后搜尋 Sue.mytable (Default Schema)最后搜尋 dbo.mytable (Dbo Schema)執(zhí)行的順序大家既然清楚了,那么以后在查詢數據庫表中的數據時,最 好指定特定的Schema前綴,這樣子,數據庫就不用去掃描Sys Schema 了,當然 可以提高查詢的速度了。另外需要提示一下的是,每個數據庫在創(chuàng)建后,有4個Schema是必須 的(刪都刪不掉),這 4 個 Schema 為:dbo, guest,sys 和 INFORMATION_SCHEMA, 其余的Schema都可以刪除。為什么把表歸屬于不同的模式里?例如你的數據庫里面有很多的表。就以一個學校作為例子吧:有很多表分別用于存儲學生、課程、成績、學分等信息。還有很多表用于存儲 老師、工資、獎金等信息。還有很多表用于存儲學校的固定資產、流動資產、財務相關信息。如果這么多的表,都混雜在一起。管理起來非常麻煩。通過create schema,劃分區(qū)域,把學生的,創(chuàng)建一個schema 叫Student教師的,創(chuàng)建一個schema 叫Teacher學校財務的,創(chuàng)建一個schema叫School這樣,對于專門負責學生信息管理的,就只負責Student這個sch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論