「每桌一班」是一條經驗法則,很好的開始。但它不是刻在石頭上的。您可以(也應該)評估應用程序的需求,數據的預測使用模式等。將多個表映射到單個類並不罕見,反之亦然:將單個表表示爲多個類。
建議根據OO範例設計您的類(而不是試圖將它們映射到您的表結構)。如果需要,您可以對課程設計進行微調以符合數據層的要求。
在具體情況下,取決於您是否預見需要單獨獲取書籍數據(沒有作者&類別),還是更典型一次需要全部3個。這也是一個問題,作者和類別有多少屬性。
如果您經常只抓取書籍數據和/或作者&類別有很多屬性,將它們保存在不同的類中更有意義。如果你將它們放在一個班級中,你將會有很多重複的數據(因爲很多書籍會有相同的類別或作者數據),並且你總是需要不必要地加載3行數據庫中的連接,因此你需要付出一定的性能在大多數情況下,沒有任何懲罰。
OTOH如果您通常一次從所有3個表中獲取數據,那麼將它們保留在一個類中可能有意義。即使如此,我仍然會選擇單獨的課程,以避免類別數據的重複。此外,如果這些作者是分開的實體而不是Book類的一部分,您甚至可以將作者的類別緩存起來。
很大程度上取決於您的開發語言和工具;例如在使用像Hibernate這樣的ORM工具的Java中,設置這些映射要容易得多,在您瞭解應用程序的更多信息時使用延遲獲取並優化獲取計劃,使用JDBC。
非常感謝您的回覆! 的確,我決定爲作者和類別分別開設類,並且Book類有一本書的屬性Writer和Category對象。 – Nikos 2010-02-21 19:29:32