2010-08-15 104 views

回答

1

這僅僅是別人怎麼回答的措詞,但我總是說,不同的是沒有在表結構(這的確是一樣的),但外鍵的基數約束:

  • 在這兩種情況下,您都有一個表T1,其中有一個外鍵F「指向」(即包含來自)另一個表T2的關鍵字P的值;
  • 在兩種情況下,每個F指向一個不同的 P(P和F都是UNIQUE);
  • 在這兩種情況下,每個F實際上指向一個P(P和F都是非NULL);
  • 在繼承的情況下,並非每個P總是作爲F的值出現;
  • 在一對一對應的情況下,每P總是發生如F.
1

說到建模,實體之間的一對一關係表明它們是同一個關係表。 「鑰匙,整個鑰匙,除了鑰匙以外,所以幫助我Codd!」

+1

的值只有當關系也是在兩端總。 – reinierpost 2010-08-16 11:31:42

+0

即時消失在這裏..我們可以在一個單獨的表中存儲兩個對象(這些對象之間是一對一的關係),我們也可以將它們存儲在兩個共享相同PK的表中..但是最重要的是更好?或者也許我在想錯誤的方式=) – pleasedontbelong 2010-08-16 11:39:52

+0

@pleasedontbelong:從關係建模的角度來看,它們是同一張表。但是,當涉及SQL數據庫中面向對象模式的*實現時,用兩個獨立的表格可能會更好。 – 2010-08-16 11:53:11

3

這有幾個排列組合。這裏有一些: - 假設A只能和B一起存在,B只能和A一起存在,那麼這個關係是一對一的關係。 - 假設A可以單獨存在,B可以擴展它,但B不能單獨存在。那麼關係就是繼承。 - 假設A不能單獨存在,但它可以與B或C一起存在,那麼關係就是繼承。

+0

我想說第二個例子是一個簡單的對象繼承,第三個例子是超類是抽象的,我說得對嗎? – pleasedontbelong 2010-08-16 12:09:04

+0

沒錯。當然,你可以抽象到任何深度,而抽象關係可以有多個繼承 – 2010-08-16 12:16:33