我正在设计一个处理两组数据的应用程序 - 用户和区域.从第三方生成的文件中读取数据.我有一个User类和一个Area类,数据被读入Users数组和Areas数组(或其他适当的内存结构,具体取决于我们使用的技术).
这两个类都有一个从文件中读取的唯一ID成员,User类包含一个Area ID数组,给出一个用户与许多Area关联的关系.
要求非常简单:
用户列表
区域清单
指定区域的用户列表
指定用户的区域列表
我的第一个想法是将数据保留在两个数组中,然后对于每个要求,都有一个单独的方法,可以根据需要询问一个或两个数组.这很容易实现,但我不相信它一定是最好的方法.
然后我考虑在User类上有一个'Get Areas'方法,在Area类上有一个'Get Users'成员,如果我在一个我有一个Area对象的阶段,我会发现它会更有用它是属性的用户,但那么Area类上的'Get Users'方法如何知道/有权访问Users数组.
我以前曾多次遇到过这个问题,但从未真正想出过一个明确的解决方案.也许我只是让它变得比实际更复杂.任何人都可以提供任何有助于我进行此类设计的提示,网址或书籍吗?
更新:谢谢大家抽出时间留下一些提示.非常感谢您的评论.
我同意这个问题的根源是多对多的关系.我理解如何在关系数据库中建模,这非常简单.
我收到的数据是来自第三方的二进制文件的形式,所以我无法控制这些数据的结构,但是当我读到它时,我可以以最好的方式存储它.它是圆形的方形钉漏洞,但我想把它读入然后存储在数据库中,然后程序必须查询数据库才能得到结果.这不是大量的数据,所以我认为通过将其存储在内存结构中可以得到我需要的东西.
这真的是一个多对多的关系,
User <<--->> Area
将其分解为3个对象,User,Area和UserArea:
User: Id, name, etc. Area: Id, name, etc. UserArea: UserId, AreaId