qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          亂談SQL Server數據庫視圖

            數據庫里存儲著大量的數據,但是為了保證數據的安全也為了方便,并不是所有用戶的都可瀏覽所有數據。為此SQL Server里用權限、角色、視圖來解決這一系列問題。本篇博客我先介紹視圖。

            概念:視圖是從一個或多個關聯表中派生出的一個虛擬表,換句話說就是以一個或多個表中的部分數據組成的虛擬“表”。

            特點:

            一、分割數據,簡化視點:即通過SELECT和WHERE語句來選擇你關心的數據,而去除無關的數據。

            二、簡化操作:視圖可以避免對表的訪問和存取操作,同時視圖是一個很好的查詢窗口。

            三、保護數據:針對用戶創建視圖,自動屏蔽權限外的數據。

            四、為數據重構提供一定的邏輯獨立性:在關系型數據庫中數據重構是不可避免的,最常見的是垂直分割為兩個表,那么由于表中的數據類型和值并沒有改變,所以只要稍微改動視圖的定義既可以滿足變更之后的表

            五、自動更新:在數據庫結構不變的情況下,如果基表中的數據改變,會被自動的反應到視圖中

            疑問:對于視圖是一個對象,又是“虛擬表”,還具有自動更新的特點,引發了我對視圖存儲的思考:視圖是對象說明視圖創建后即被實例化,那么它應該是實際存在于數據庫中的,它也確實存在。但是它是虛擬表又怎么解釋呢?首先,它只能是以結果集的方式存儲,每次打開就打開結果集,但是這樣的話如何自動更新;或者是以T-SQL 語句才方式存儲,每次打開便執行一次語句,這樣就可以解釋自動更新了,但問題是視圖可能很大每次執行浪費資源。所以這兩種存儲方式并不科學。

            我查了一些資料,也咨詢了學長、學姐,結果是沒有結果。但經過討論我認為,視圖應該是以結果集的形式來存儲的,同時存在著一種類似于觸發器的機制來時時更新視圖里的內容。這樣的話視圖的性質和特點就都可以解釋了。當然這只是我的推斷,不是事實,寫出來只是想尋找答案。

          posted on 2012-08-07 11:13 順其自然EVO 閱讀(277) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 樟树市| 渭南市| 大新县| 扶绥县| 阿拉善右旗| 乐昌市| 河曲县| 阿尔山市| 弋阳县| 丁青县| 崇明县| 泰宁县| 安达市| 孝感市| 长顺县| 犍为县| 大埔区| 广汉市| 贵定县| 攀枝花市| 遵义市| 中牟县| 瑞昌市| 崇文区| 南和县| 措勤县| 沅江市| 长治市| 石嘴山市| 理塘县| 上栗县| 宣威市| 远安县| 明溪县| 盖州市| 莱州市| 黄石市| 清远市| 塔城市| 苏尼特左旗| 北川|