2011-08-24 48 views
2

我正在開發,將有將有許多基本的領域和方法,並與其他字段方法的幾個子類的父類的應用程序。實現子類在數據庫

好奇如何最好地在數據庫中實現。爲父類創建一個表,爲子類創建一個單獨的表並通過id字段鏈接它們是否有意義,還是爲了便於訪問和更簡單的查詢,在子類表中複製父類字段更好?

回答

5

您的問題的答案是肯定的,那些都是有效的方法。這取決於諸如在查詢某些內容時想要完成的連接數以及是否需要支持多態查詢等。 Here's an article on the subject by Scott Ambler.本文的第2.6節有一個很好的表格,列出了不同映射方法的優缺點。

+0

感謝您的文章。這和相當數量的谷歌搜索教會了我很多。我仍然處於設計這個應用程序的早期階段,所以它還沒有成形,但我每個班都傾向於一張桌子。我不想要一個大表,因爲一些子類型有很多額外的屬性,而一個稀疏表(對於其他類型)看起來並不理想。我希望通過創建正確的觀點,我可以享受單獨表格的好處,並且在獲取數據方面仍然有一些公平的易用性。但正如我所說,現在還處於早期階段,所以這可能會改變。感謝所有給我很多關於! –

+0

這篇文章非常有幫助(y) –

3

三種常用的方式,每個層級

  1. 表 - 一切一個表,很多NULL列。

  2. 表具體類;每個子類都得到一個包含所有常用字段的表。每類型(類)

  3. 表。這與關係設計中的supertype/subtype approach一樣。