【问题标题】:Company & Contacts Object Design Help公司和联系人 对象设计帮助
【发布时间】:2010-10-22 02:39:09
【问题描述】:

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

我们正在寻求任何帮助(关于在哪里或如何搜索我们可以用来解决此问题的设计模式/对象模型的想法。我们的情况稍微复杂一些,但我们为了提出这个问题,我们已经尽力简化它。

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

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

Larger view of diagram (flickr.com)

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

【问题讨论】:

  • 你到底想做什么?数据库?
  • 这有什么问题?看起来很棒。

标签: design-patterns ooad


【解决方案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 映射,有些人希望根据性能设计他们的数据模式,然后在对象和数据库之间进行另一种抽象映射。

【讨论】:

    【解决方案2】:

    如果你想设计一个数据库,我会这样做:

    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。这只是一个快速的答案,尝试更新你的问题,我会更新一点。

    【讨论】:

    • 数据库是旧的,此时无法更改。我们正在尝试创建业务对象 我们希望为此找到可能遇到过一两种经过验证的设计模式(或久经考验的真实对象模型)的人。流程图在设计上更简单——我们不想仅仅提出问题/问题的解决方案
    【解决方案3】:

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

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

    您在哪里存储联系方式?

    【讨论】:

    • u07ch,谢谢。表格看起来状态良好(正确标准化)。我们关心的主要是我们项目的业务对象领域。
    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多