2011年1月12日 星期三

Database in Depth筆記-2(Predicate)

關係與關係變數

關係變數(用R表示)跟程式語言的變數一樣,是可以放置某種型別(這裡是關係)的容器。而關係(用r表示),則是指在某個時點,實際存在的n個Tuples(n>=0)。以C.J. Date的觀點,所謂Relation Model的Insert、Delete、Update動作,都是透過關係變數R,取出所要的關係後,對其Tuple進行一些處理後,再重新指向回關係變數。

Predicate

Predicate的觀念是由集合論而來的。在指涉某個集合時,常常無法透過列出集合中包含的所有元素的方式,來表示該集合。因此改以使用用該集合中每個元素的共同因子作為參數來描述該集合。對應至Relational Model,組成關係變數Heading中的屬性集合,即可組成描述該關係變數的Predicate。例如某個關係變數 R的Heading為 {Customer_ID,Customer_Name,Customer_Address},其意含可以解釋為這樣的Predicate:  編號為Customer_ID的客戶,其名稱為 Customer_Name,且其住址為Customer_Address

將Assign到該關係變數的關係r中的每一Tuple的值,分別套上這個Predicate的結果後,就形成一個Proposition(命題)。此命題應該都為True,因為若結果為False,則此關係根本不存在,也就不會被Assign到關係變數中。所以C.J. Date提到一個重點:在EF Codd原始的Relational Model中,資料庫不是資料的集合,而是Proposition(命題),則事實的集合。系統執行關聯式運算的過程,就是由既有事實推論出新的事實

沒有留言:

張貼留言