Компания и контакты Object Design Помощь

Я надеюсь, что кто-то (или несколько человек) может помочь нам с проблемой, с которой мы боролись несколько дней. Как организовать наши бизнес-объекты, учитывая приложенную схему?

Мы ищем любую помощь (идеи о том, где или как искать шаблон(ы) проектирования/модель(и) объекта, которые мы могли бы использовать для решения этой проблемы. Наша ситуация немного сложнее, но мы попытались максимально упростить его для целей постановки этого вопроса.

Некоторые подробности: у некоторых компаний есть продуктовые линейки, а у некоторых нет.
У каждой компании есть список контактов. Если у компании есть хотя бы одна линейка продуктов, некоторые из контактов этой компании ТАКЖЕ связаны хотя бы с одной линейкой продуктов.
Некоторые из контактов являются ссылками (деловыми/личными) для других контактов.
Каждая компания и каждый контакт может иметь ноль или более адресов.

Спасибо за любую помощь в поиске более подходящего решения (я предполагаю, что нам нужно будет использовать несколько моделей/шаблонов).

Диаграмма объекта

Увеличенный вид диаграммы (flickr.com)

** (из диаграммы) В нашей компании есть сотрудники/пользователи внутреннего приложения, которые включены в контакты, потому что они также могут быть рекомендателями и т. д.


person Steve Bargelt    schedule 27.04.2009    source источник
comment
Что именно ты пытаешься сделать? база данных?   -  person marcgg    schedule 27.04.2009
comment
Что не так с этим? Это выглядит здорово.   -  person S.Lott    schedule 27.04.2009


Ответы (3)


Вы можете использовать следующую объектную модель:

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 между их объектом и моделью данных, а некоторые хотят спроектировать свою схему данных на основе производительности, а затем иметь другое абстракционное сопоставление между объектами и базой данных.

person Srikar Doddi    schedule 27.04.2009

Если вы пытаетесь создать базу данных, я бы сделал это так:

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. Это просто быстрый ответ, попробуйте обновить свой вопрос, и я немного его обновлю.

person marcgg    schedule 27.04.2009
comment
База данных является устаревшей и не может быть изменена на данный момент. Мы пытаемся создать бизнес-объекты. Мы надеялись найти кого-то, кто мог бы найти проверенный шаблон проектирования или два (или проверенные и настоящие объектные модели) для этого. Блок-схема была проще по дизайну - мы не хотим предлагать решения, просто проблему/вопрос. - person Steve Bargelt; 29.04.2009

У нас есть похожая структура в нашем приложении, и она хорошо работает для нас. У нас есть два дополнительных стола

У нас есть концепция сайтов между компанией и адресами людей, которые могут быть привязаны к одному или нескольким сайтам в нашей схеме, и это позволяет хранить тысячи повторяющихся адресов. Вы также можете ссылаться на адрес клиента прямо в адресной книге.

Где вы храните контактную информацию?

person u07ch    schedule 27.04.2009
comment
u07ch, спасибо. Таблицы находятся в хорошем состоянии (правильно нормализованы). Наша забота в первую очередь связана с областью бизнес-объектов нашего проекта. - person Steve Bargelt; 29.04.2009