天天看點

《視圖更新與關系資料庫理論》——1.2 僅限基表:限制

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

另一個由可交換性原則引出的問題是表s、表ls和表nls的行為不應該由基表和視圖的分布來決定。為了解釋這個問題,我們先假設它們全都是基表。

這樣一來,所有的表就都受到限制的限制了。不過從實際情況來看,想在sql中構造這些限制條件會非常複雜,是以為了便于表達和了解,我将用國語來描述一下這些限制條件(大部分是大白話)。

{sno}是每個表的鍵,同時,{sno}對于ls和nls來說是外鍵,引自于表s。注意:關于使用“{”和“}”的原因,請參閱《sql and relational theory》[3]。

在任何時候,表ls都等同于表s中city值為london的限定,表nls都等同于表s中city值不為london的限定。同時,表ls中每一行的city值都為london[4],表nls中的每一行都不為london。

在任何時候,表s都等于表ls和nls合并後的結果。同時要注意,這個合并是不相交的(對應的交集為空),沒有資料會同時出現在表ls和表nls中。具體來說就是:表s中的每一行都會根據限定條件準确地出現在表ls或表nls中,而表ls或表nls中的每一行也必定會出現在表s中。

最後,剛剛所說的由city值引發的限制以及{sno}是所有三張表的鍵這個限制結合在一起,就會形成以下結果,即表s中每個具體的供應商編碼(不僅是整行的資訊)都會根據限定條件準确地出現在表ls和表nls當中。而表ls或表nls中的每一個具體的供應商編碼也必定會出現在表s中。

當然,正如前面所說的幾點所示,這些限制并不是完全獨立毫不相幹的,其中一些限制是另一些限制邏輯上導緻的結果。