用於推斷函式依賴關係的反身性公理
如您所知,有三個 Armstrong 公理可用於推斷關係數據庫的所有功能依賴關係。(X、Y 和 Z 是一組屬性)
- 自反性:如果 X ⊆ Y,則 Y → X
- 增強:如果 X → Y,那麼對於任何 Z,XZ → YZ
- 傳遞性:如果 X → Y 和 Y → Z,則 X → Z
例如,如果我們有這樣的模式,我理解增強和傳遞性:
SOME_SCHEMA(a, b, c, d)
具有這樣的功能依賴:
- a → b
- b → c
通過使用增強,我們可以得到ac → bc或通過使用傳遞性,我們可以得到a → c等等,但是我不確定如何使用自反性公理推斷更多的函式依賴關係?某個屬性是某個其他屬性的子集究竟意味著什麼?
你能給我看一個使用我的模式或創建你自己的模式的例子嗎?
先感謝您!
PS不確定我應該為這個問題使用什麼標籤,請隨意更改並刪除此行。
ab → a 意味著如果關係中的兩個元組對屬性 a 具有相同的值,那麼它們對屬性 a 和 b 具有相同的值。這似乎微不足道,但不能從增廣公理和傳遞性公理推導出來。因此,如果您與屬性 a、b、c 有關係,您可以推斷出函式依賴關係,例如
a→a
ab→a
abc→ac
不知道對 abc 的任何附加功能依賴
“某個屬性是某個其他屬性的子集,這到底意味著什麼?”
這不代表任何意思。屬性集之間存在功能依賴關係。
每當處理被認為是正式和精確的(例如,在陳述公理的定義時),這就是 X、Y 和 Z 應該被解釋的方式。
不幸的是,人們總是傾向於寫下 FD 的具體範例,而不明確SET屬性。例如,在 AB->C 中,其中 A、B 和 C 是屬性。形式上,這實際上應該是 {AB} -> {C},但那些大括號並沒有增加太多。
而且您對增廣公理的表述在這一點上是不正確的。如果 X、Y 和 Z 是屬性集,則增廣公理的唯一正確表述是
X -> Y ===> (X UNION Z) -> (Y UNION Z)
自反性公理為平凡FD的含義提供了正式定義。各種範式是根據非平凡的FD 定義的,因此必須確定其確切含義。自反性公理就是這樣做的。