2012-03-17 97 views
0

考慮下列表格和java類來短語我尋求解決方案的問題 -關係類設計

城市表具有列id,名稱。具有id和name屬性的Java類City。

COUNTRY表具有列id,名稱。 Java類具有id和name屬性的國家/地區。

用戶爲表列ID,姓名,city_id,COUNTRY_ID其中city_id是FK從CITY表COUNTRY_ID是從COUNTRY表FK。 Java類具有id,name,cityId和countryId屬性的用戶。

現在在一個不能顯示cityId和countryId爲用戶記錄,而不是名稱的UI中顯示爲ID是毫無意義的用戶。那麼我的用戶類設計是否正確?應該是什麼設計?它應該是City和Country對象而不是cityId和countryId?另外我應該如何加載所需的數據?

想象一下,一個複雜的系統,其中表具有更多的列相同。複雜系統的設計如何規模?因爲我一直不需要整個對象,所以大部分時間只有名字是足夠的。

回答

1

首先,您的設計聽起來不對。一個城市應該屬於一個國家,用戶不應該直接引用一個國家,因爲用戶的國家可以通過他們的城市進入。

但要解決內存使用問題:您有各種選項。通常,如果你看數字,城市和國家的總數並不是很多,所以你可以直接使用直接鏈接到對象。我有應用程序將這些「相關信息」類連續存儲在內存中 - 這樣可以在讀取和寫入重要數據(如人員)時減少流失量。

替代地,可以用一個單獨的擴展用戶類(只讀)的位置屬性(不可修改或寫入磁盤)上通過作爲字符串加入城市和國家名稱讀取被填充。那麼你就會閱讀這些人,填充這個領域,但不填充城市和國家的對象(或者讓他們懶惰)。它可以在不將所有對象加載到內存中的情況下顯示數據(但是仍然存在字符串的內存開銷)。

,或者如果你是真正推動了空間,你讓位置的檢索是顯示器本身的一部分,只檢索和是在顯示中可見人們展示位置。但是這要做很多工作。