2015-02-11 76 views
0

我要表達這種約束在關係代數:表達束縛

我有一些表中有一列所有可能的值:ALL_VAL

並表從ALL_VAL一些值,不是馬赫一些規則:NOT_FIT_VAL

,我可以計算FIT_VAL = ALL_VAL - NOT_FIT_VAL

我需要的是一個約束:在FIT_VAL最少有一個項目。

我使用空組不等號:

ALL_VAL,

NOT_FIT_VAL

FIT_VAL = ALL_VAL - NOT_FIT_VAL

FIT_VAL <> {空}

但我我不確定<>(不等於)在關係代數中是完全允許的 沒有顯示示例或說我可以使用它的單獨一本書或文章。

我想對此進行一些澄清以及正確的表達。 謝謝

回答

1

嚴格地說,表達式「FIT_VAL <> {空}」不是一個關係表達式(它不會產生一個關係,而是一個真值),因此考慮這樣的表達式有點問題作爲「有效的關係代數表達式」。

但嚴格來說,我不知道你的教科書在這方面削減了多少讀者/用戶。在「嚴格地說」的方法下,使用關係代數來定義約束甚至是不可能的,因爲約束的定義必須根據定義產生布爾結果(數據庫是否滿足)。這可能就是爲什麼看到關係代數被用來表示/定義數據庫約束的原因。

使用關係代數來定義數據庫約束的另一種方法是定義一個關係表達式,它扮演「錯誤表達式」的角色,然後隱含地默認該規則是評估該表達式的結果必須始終空着。但那是(AFAIK)一個完全私人的方法,如果你也在教科書中發現它,我會感到驚訝。