4

如您所知,有三個Armstrong's Axioms用於推斷關係數據庫上的所有函數依賴關係。 (X,Y和Z被設置屬性)用於推斷函數依賴關係的自反公理

  1. 自反如果X⊆Y,則Y→X
  2. 增強如果X→Y,然後XZ→YZ爲的任何的Z-
  3. 及物如果X→Y和Y→Z,則X→Z

我明白例如增強和傳遞性,如果我們有這樣的模式:

SOME_SCHEMA(A,B,C,d)

與這樣的功能依賴關係:

  1. a→b
  2. b→c

通過使用增強,我們可以得到AC→BC或通過傳遞,我們可以得到A→C得多,但我不知道如何使用反身公理推斷出更多的功能依賴呢?這是什麼意思,某個屬性是其他屬性的一個子集?

你能告訴我一個使用我的模式或創建自己的例子嗎?

回答

4

的transitivty規則也可以說是這樣的:

A1, A2, …, An → Ai 

其中,i是1和n之間的任何數字。我認爲這個規則的定義有點清晰。 A1是A1到An的一個子集,因此你可以推斷出上面的依賴關係。

這些類型的依賴被稱爲平凡依賴。這樣做的最簡單的形式是:

A → A 

正如你可以看到,A是A的一個子集,因此,通過反思性的定義,我們可以推斷出上述的依賴。

這確實不是一個非常有用的公理,前兩個公理對它們本身並不是非常有用,但是出於形式的原因,所以我們可以找到最後一個公理,這非常有用。

要使用您的示例,我們可以說以下內容。既然我們有表:

SOME_SCHEMA(a, b, c, d) 

我們可以推斷出這種依賴爲:

a, b, c, d → a 
a, b, c, d → a, c 

而且具有相同的性質更多的依賴性。

順便說一下,下面是一些很好的幻燈片,它們總體上很好地解釋了函數依賴關係。阿姆斯特朗的規則也有一些幻燈片。我發現這些東西在學習這些東西時很有幫助:Functional Dependency Slides

+0

鑑於自反性公理如下:如果X⊆Y,那麼Y→X,這並不意味着如果Y = {a,b},那麼公理只有在if X = {a}或X = {b},而不是如果X = Y? X⊆Y的意思是「如果X是Y的真子集」,並且Y的一個真子集可以定義爲不與Y相同。我只是問,因爲我在幾天內參加考試: ) –