2011-12-01 77 views
0


表是否可以繼承多對一的子表? (我認爲是它的意思如何措詞:P)在其他的話:數據庫表繼承

PersonBase can be PersonA and/or PersonD and/or PersonC 

然而,在這種特殊情況下,它需要有可能爲PersonBase存在多次爲PersonD(有原因爲此),我可以這樣做嗎?或者我應該創建另一個表格表格這樣PersonBasePersonD它與表D有一對多的關係。但是我希望能夠這樣做,以便PersonBase可以是多個PersonDs如果可能的話。

感謝所有

附:如果我的問題似乎天真​​,我很抱歉。

+0

SQL本身沒有這樣的概念。但是,許多ORMS添加這樣的映射,就像OORDMBS一樣。看看PostgreSQL和Hibernate的處理方式可能會有所幫助。 – 2011-12-01 23:57:45

+0

@Matthew Cox,對不起,我不這麼認爲,多重繼承允許從多個表繼承,是的?我需要的是PersonBase在PersonD中存在多次,換句話說,我們有John Dow,我需要的是John Dow能夠在PersonD中多次存在,如果我搜索John Dow(ID 5)它可能會從PersonD返回兩個條目。對不起,我應該可能重新說明這個問題:) – Heinrich

+0

這在我看來就像複製行?如果他們都在一張桌子裏,John D.會存在兩排? –

回答

0

我想你在第一種情況下描述,PersonBase(父)和PersonAPersonC(亞型)之間,是1:1關係(父/子),而在第二種情況下,PersonBasePersonD之間,是一個1:n關係。

4

postgresql像OOP一樣具有實際的表繼承。 Base table列由「子表」繼承,它甚至支持多個基類。