我想知道是建模一對一的關係和繼承關係(Table-Per-Type)之間是否存在差異在這兩種情況下,我們添加一個UNIQUE約束的Foreing鍵,或者有時候FK是PK建模數據庫中的「一對一」關係與建模「繼承」相同?
在我看來,表結構是相同的,但也許我失去了一些東西。
在此先感謝。
我想知道是建模一對一的關係和繼承關係(Table-Per-Type)之間是否存在差異在這兩種情況下,我們添加一個UNIQUE約束的Foreing鍵,或者有時候FK是PK建模數據庫中的「一對一」關係與建模「繼承」相同?
在我看來,表結構是相同的,但也許我失去了一些東西。
在此先感謝。
這僅僅是別人怎麼回答的措詞,但我總是說,不同的是沒有在表結構(這的確是一樣的),但外鍵的基數約束:
說到建模,實體之間的一對一關係表明它們是同一個關係表。 「鑰匙,整個鑰匙,除了鑰匙以外,所以幫助我Codd!」
這有幾個排列組合。這裏有一些: - 假設A只能和B一起存在,B只能和A一起存在,那麼這個關係是一對一的關係。 - 假設A可以單獨存在,B可以擴展它,但B不能單獨存在。那麼關係就是繼承。 - 假設A不能單獨存在,但它可以與B或C一起存在,那麼關係就是繼承。
我想說第二個例子是一個簡單的對象繼承,第三個例子是超類是抽象的,我說得對嗎? – pleasedontbelong 2010-08-16 12:09:04
沒錯。當然,你可以抽象到任何深度,而抽象關係可以有多個繼承 – 2010-08-16 12:16:33
的值只有當關系也是在兩端總。 – reinierpost 2010-08-16 11:31:42
即時消失在這裏..我們可以在一個單獨的表中存儲兩個對象(這些對象之間是一對一的關係),我們也可以將它們存儲在兩個共享相同PK的表中..但是最重要的是更好?或者也許我在想錯誤的方式=) – pleasedontbelong 2010-08-16 11:39:52
@pleasedontbelong:從關係建模的角度來看,它們是同一張表。但是,當涉及SQL數據庫中面向對象模式的*實現時,用兩個獨立的表格可能會更好。 – 2010-08-16 11:53:11