程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle數據庫視圖管理經驗技巧

Oracle數據庫視圖管理經驗技巧

編輯:關於Oracle數據庫

  技巧一:把基礎表與視圖脫離開來。

  一般來說,視圖都是在基礎表的上面建立起來的。也就是說,要先有基礎表,而後有視圖。但是,在大型數據庫的設計過程中,出於項目時間的考慮,往往基礎表與視圖的設計是同時進行的。如一些人負責基礎表的建立,另一些人則負責視圖的設計與建立等等。在這個過程中,往往基礎表不存在的時候,就需要建立一些視圖,以加快項目的進度。

  為了使得基礎表的創建和修改與視圖的創建於修改沒有必然的聯系,以便於員工之間工作的同步,提高工作效率,所以,在Oracle數據庫中提出了一個“強制創建視圖”的概念。也就是說,正常情況下,如果基本表不存在,則創建視圖就會失敗。但是,我們可以在創建視圖的過程中,加入一個參數,只要創建視圖的語法沒有錯誤的話,即使基礎表不存在,仍然可以建立這張表格。這個有用的參數就是force選項。如我們建立視圖時,CREATE FORCE VIEW TEXT,只需要在關鍵字VIEW之前加入FORCE參數即可。如此的話,系統在編譯視圖的時候,就不會去考慮基礎表是否存在。

  不過這裡要注意一點,若基礎表不存在的話,則編譯後該視圖的狀態為“無效”,不能再這個視圖的基礎上執行一些操作,如查詢操作等等。當下次訪問這個視圖的時候,則數據庫會對這個視圖進行重新編譯,若此時基礎表存在了,則該基礎表就會變為有效;若基礎表不存在,則這視圖就會失效。

  Oracle數據庫之所以如此設置,主要是出於在數據庫設計過程中協同辦公的需要。有了這個功能之後,則在數據庫建立的過程中,只要把數據庫基礎表與視圖設計好之後,大家就可以分工合作,在數據庫中建立相關的對象。不然的話,要等基礎表建立好之後再建立視圖,如此就會明顯的影響數據庫建立的進度。所以,在數據庫建立的過程中,特別是中大型的數據庫系統,這是一個很實用的功能。

  技巧二:創建視圖的理想步驟。

  無論是簡單視圖,還是比較復雜的視圖,筆者覺得數據庫管理員在創建視圖的時候,最好能夠遵循一定的步驟。這一方面是因為視圖的更改相對來說,是一件比較麻煩的工作,所以,我們在建立視圖的時候,要確保視圖的准確性。另一方面,視圖是基礎表的一個體現形式,若不按步驟來做的話,有可能就不能夠達到我們預計的需求。

  當然這個步驟沒有官方的版本,完全是數據庫管理員根據實際的經驗總結出來的。這個步驟不僅對Oracle數據庫有效,對於其他數據庫來說,也是類似的道理。

  一般來說,視圖創建可以分為五步走,

  第一步:先考慮Select語句的編寫。我們知道,視圖其實就是一個Select語句的集合。所以,我們建立視圖的第一步,就是考慮這個Select語句該如何編寫。這個Select語句編寫的是否合理、執行效率的高低直接影響著這個視圖的性能。另外,在Select語句中,可能還會有格式的控制、內容的編排等等。如在Select語句中,可以把一些字段合並成一個字段;也可以把相關的內容進行倒置等等。這些功能都是Select語句完成的。所以可以這麼說,Select語句的編寫是視圖建立的基礎。

  第二步:對這個Select語句進行測試。當我們編寫好Select語句之後,就需要在數據庫中執行這條語句,看其能否查詢到我們想要的值。在對Select語句進行測試的時候,需要注意一個問題,有時候Select查詢語句可以查到准確的數據,但是在以這條語句建立視圖的時候,可能就會通不過。如在一些表之間的連接查詢的時候,如果兩個表中有個字段名相同,是可以的。因為他們除了字段名字之外,還有表名一起來定義這個字段。如A.name與B.name。這是不算重名的。但是,若在建立視圖的時候,這就會被認為是重復的列明,需要對其中的一個列名進行重定義。這一點在數據庫視圖建立的時候,要特別的注意。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved