2012-03-17 95 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

首先,您的设计听起来不对。一个城市应该属于一个国家,用户不应该直接引用一个国家,因为用户的国家可以通过他们的城市进入。

但要解决内存使用问题:您有各种选项。通常,如果你看数字,城市和国家的总数并不是很多,所以你可以直接使用直接链接到对象。我有应用程序将这些“相关信息”类连续存储在内存中 - 这样可以在读取和写入重要数据(如人员)时减少流失量。

替代地,可以用一个单独的扩展用户类(只读)的位置属性(不可修改或写入磁盘)上通过作为字符串加入城市和国家名称读取被填充。那么你就会阅读这些人,填充这个领域,但不填充城市和国家的对象(或者让他们懒惰)。它可以在不将所有对象加载到内存中的情况下显示数据(但是仍然存在字符串的内存开销)。

,或者如果你是真正推动了空间,你让位置的检索是显示器本身的一部分,只检索和是在显示中可见人们展示位置。但是这要做很多工作。