公司& Contacts对象设计帮助

时间:2009-04-27 16:28:38

标签: design-patterns ooad

我希望有人(或某些人)可以帮助我们解决我们已经纠结了几天的问题。如何在附图中组织我们的业务对象?

我们正在寻找任何帮助(关于在哪里或如何搜索我们可以用来解决这个问题的设计模式/对象模型的想法。我们的情况稍微复杂一点,但我们为了提出这个问题,我们试图最大限度地简化它。

一些细节: 有些公司有产品线,有些则没有。
每家公司都有联系人列表。如果公司至少有一个产品系列,那么这些公司联系人中的一些也至少与一个产品系列相关联 一些联系人是其他联系人的参考(商业/个人) 每个公司和每个联系人可以有零个或多个地址。

感谢您寻求更合适解决方案的任何帮助(我的假设是我们需要使用多个模型/模式)。

Entity Diagram

Larger view of diagram (flickr.com)

**(来自图表)我们公司的员工/内部应用程序用户都包含在联系人中,因为他们也可以作为参考等。

3 个答案:

答案 0 :(得分:1)

您可以使用以下对象模型:

Organization
-id
-name
-description
-productLines ( collection object consisting of products)
-orgcontacts ( collection object consisting of contacts)
-addresses (of type Address, can be a collection depends on business rule)

Contact
-id
-name
-type (Business, personal, etc)
-parentID (null if no reference)
-adresses (Address or collection)

ProductLine
-id
-name
-prLineContacts ( collection object consisting of contacts)

你可以建立我能想到的这个基本模型。你有数据模式吗?如果是这样,你应该决定从哪里开始。有些人喜欢在对象和数据模型之间进行1-1映射,有些人希望根据性能设计数据模式,然后在对象和数据库之间进行另一种抽象映射。

答案 1 :(得分:0)

如果您正在尝试设计数据库,我会这样做:

Companies = [id, name]
Contacts = [id, name]
Products = [id, name]
Adresses = [id, details]

CompaniesContacts = [contact_id, company_id]
CompaniesProducts = [product_id, company_id]
AdressesContacts = [contact_id, address_id]

References = [contact_id, referenced] // referenced is also a contact_id

另外,我建议使用UML。这只是一个快速的答案,尝试更新您的问题,我会稍微更新一下。

答案 2 :(得分:0)

我们的应用程序中有类似的结构,它对我们很有用。 我们有两张额外的桌子

我们在公司和地址之间有站点的概念,人们可以在我们的架构中附加一个或多个站点,并节省存储数千个重复地址。您也可以直接在地址簿中引用客户端地址。

您在哪里存储联系方式?