天天看點

《視圖更新與關系資料庫理論》——1.4 視圖:限制和補償性操作

本節書摘來自異步社群出版社《視圖更新與關系資料庫理論》一書中的第1章,第1.4節,作者:【美】c.j. date(達特),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

現在我要開始讨論本章的核心概念。如果前面兩段中所涉及的表中有一部分或者全部都是視圖的話,那麼我們讨論的所有結論依舊成立,沒有改變。例如,像之前一樣,假設s是表,ls和nls是視圖。

現在假設使用者隻能看到視圖ls和nls,但是希望像基表一樣操作它們。在這個使用者看來,這些表的語義如下。

ls:供應商sno是已經簽約的,名稱為sname,有狀态值status,位于城市city中(london)。

nls:供應商sno是已經簽約的,名稱為sname,有狀态值status,位于城市city中(非london)。

此使用者将會了解有下面的限制存在(注意這些限制沒有提到表s,因為使用者并不知道表s的存在)。

{sno}是ls和nls的鍵。

ls中的每一行city值均為london,nls沒有這樣的行。

供應商編号不會同時出現在ls和nls中。

但是,該使用者并不會意識到有補償性操作的存在,因為他并不知道ls和nls實際上是表s的視圖。如前所述,該使用者甚至根本不知道表s的存在,是以他也并不知道實作這些操作的限制到底是什麼,以及視圖ls和nls合起來就等于表s這個事實。該使用者執行的針對視圖ls和nls的更新也都會生效,在他看來就像ls和nls都是基表一樣。同樣,這個使用者在視圖ls和nls執行的更新在s中也會産生對應的關聯效果,隻是他看不到而已。