在第一節中,我們了解了架構的意義。在第二節的開始,我們暫時忘記架構這個東西。我們假設我們的數據庫只有數據庫對象。
李老板開了一個小公司,公司有個倉庫,堆放了一些貨物,由於倉庫小,為了節約成本,這個倉庫根本沒有鎖。只要知道倉庫在哪裡,就可以去取貨。這種情況對應數據庫來說,就是只要我知道數據庫名和表名,我就可以對它進行操作。這對程序員來說當然是最方便了。這就是數據庫的第一階段:無權限管理階段。假如大家用過Win3.X,那它們基本就是無權限管理階段。這下小偷就爽翻了。
最近倉庫裡的東西老是不翼而飛。李老板才明白,就算是員工都是自覺的,但是別的人也可以拿走裡面的貨物,怎麼辦呢?老板一咬牙,花一百塊錢買了一把鎖!並且只給少數幾個人配鑰匙。這下東西被別的公司的人拿走的情況基本杜絕了。對於數據庫來說,相當於把人分成了兩種,一種授權用戶,一種未授權用戶。這時,數據庫就有了用戶的概念,但是它只有一個用戶,就是有鑰匙的人,它只對有鑰匙的人開放。這就是數據庫權限管理的第二階段:上鎖階段或者單用戶管理階段。
好景不長,老板發現倉庫的東西還是經常少。明明都是有鑰匙的人才能進去呀。但是,誰拿了多少,根本沒辦法查出來。老板猜測原因有二:一,有些人拿了不該拿的東西。二,有些人偷偷的去配了鑰匙。老板一咬牙,沒收所有的鑰匙。花800塊一個月雇個倉庫管理員,每個進倉庫拿東西的人都要登記。李老板還給給倉庫管理員一個清單,誰可以拿什麼東西,清單如下:
姓名
貨物1
貨物2
貨物3
貨物4
貨物5
張三
Y
Y
N
N
N
李四
Y
Y
Y
N
N
王五
Y
Y
Y
Y
Y
趙六
N
Y
Y
Y
Y
這時的管理上了一個新台階,稱為用戶-權限管理階段。公司再也沒發生丟東西的現象。老板非常得意自己英明的決定。這就非常類似Windows現在的用戶權限管理了。
也許有人細心的發現,你說的不對,Windows權限管理中有角色呀!沒錯,為什麼要有角色呢?沒有角色不是照樣不丟東西嗎?這個問題稍後再談。
話說過了一年,李老板的生意越做越大,倉庫裡的東西也越來越多,最近張三反應,去倉庫取貨老是要排隊,而且經常要等很久才能取到貨,李老板心想,取貨的人一共就這幾個人,還要排隊,豈有此理!把倉庫保管員叫過來!保管員早有准備,遞給李老板一份最新的清單:
姓名
貨物1
貨物2
貨物3
貨物......
貨物1000
張三
Y
Y
N
N
N
李四
Y
Y
Y
N
N
王五
Y
Y
Y
Y
Y
趙六
N
Y
Y
Y
Y
每次來一個人取貨,保管員都要根據這張清單對一千個貨物,幸虧取貨的人少,如果再多幾個人的話,估計就要在倉庫門口打架了。李老板又開始琢磨了。現在東西是不會丟了,但是每次取貨慢成這樣,等我貨再多到一萬種,我這生意還能做嗎?該怎麼才能提高倉庫管理員的效率呢?這時倉庫管理員早看出李老板的心思,色咪咪看著李老板著說:“老板,再招一個管理員吧,我老婆剛好生完孩子在家裡待業。。。”。李老板一聽就火了:你當招人不用花錢啊!有了!我買5個貨架就搞定了!過兩天我告訴你新的管理辦法,你老婆還是在家多休息幾天吧。
過了幾天,老板把5個貨架采購回來,放進倉庫,然後給管理員一份管理手冊。新的管理手冊如下:
手冊第一頁:貨架權限清單
姓名
貨架1
貨架2
貨架3
貨架4
貨架5
張三
Y
Y
N
N
N
李四
Y
Y
Y
N
N
王五
Y
Y
Y
Y
Y
趙六
N
Y
Y
Y
Y
貨物1
貨物2
貨物3
貨物4
貨物.......
貨架190
手冊第三頁:2號貨架貨物清單
貨物191
貨物192
貨物193
貨物194
貨物.......
貨架390
第四頁,第五頁省略
每次貨物入庫的時候,根據貨架貨物清單放到相應的貨架上,然後貼上標簽。出庫的時候哦只要看貨架號碼就可以啦。
看到這裡,也許有人恍然大悟,這不就是第一節講的“架構Schema”嗎?沒錯,現在我們終於知道,架構概念的引入就是為了解決數據庫對象太多不好管理的缺點。到現在為止,我們的數據庫管理就變成了用戶-架構-數據庫對象的模式了。
在SQL Server2000中,用戶和架構是不分離的,到了2005才分離。其實2000中的用戶和架構概念就是給張三、李四分配固定的貨架。這是一種更簡單的管理方法。
姓名
張三的貨架
李四的貨架
王五的貨架
趙六的貨架
...的貨架
張三
Y
-
-
-
-
李四
-
Y
-
-
-
王五
-
-
Y
-
-
趙六
-
-
-
Y
-
在李老板的英明領導下,他的小公司不斷壯大,人數增加到幾十人,張三李四等元老級人物還擔任了不同項目部門的主管。但是隨著公司的發展,新的麻煩又來考驗李老板的智商了,到底還會發生什麼危機的情況呢?請看第三節。角色。等待中