我希望有人(或某些人)可以帮助我们解决我们已经纠结了几天的问题。如何在附图中组织我们的业务对象?
我们正在寻找任何帮助(关于在哪里或如何搜索我们可以用来解决这个问题的设计模式/对象模型的想法。我们的情况稍微复杂一点,但我们为了提出这个问题,我们试图最大限度地简化它。
一些细节:
有些公司有产品线,有些则没有。
每家公司都有联系人列表。如果公司至少有一个产品系列,那么这些公司联系人中的一些也至少与一个产品系列相关联
一些联系人是其他联系人的参考(商业/个人)
每个公司和每个联系人可以有零个或多个地址。
感谢您寻求更合适解决方案的任何帮助(我的假设是我们需要使用多个模型/模式)。
Larger view of diagram (flickr.com)
**(来自图表)我们公司的员工/内部应用程序用户都包含在联系人中,因为他们也可以作为参考等。
答案 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)
我们的应用程序中有类似的结构,它对我们很有用。 我们有两张额外的桌子
我们在公司和地址之间有站点的概念,人们可以在我们的架构中附加一个或多个站点,并节省存储数千个重复地址。您也可以直接在地址簿中引用客户端地址。
您在哪里存储联系方式?