У меня есть класс Person
в подсистеме Contacts
. С другой стороны, в подсистеме CRM у меня есть понятие Customer
.Наследование и модель Id
В дизайне базы данных, я хочу создать связь между этими понятиями. Есть несколько возможных способов:
- Каждый клиент является человек, таким образом, клиент должен наследоваться от человека и клиент умирает, как только его лицо удаляется (Состав). В этом случае, мы создаем
one-to-one
отношений междуId
столбцамиCustomers
таблицы иPeople
таблицей, и мы делаемId
столбца таблицыPeople
поле идентичности, но мы явно вставитьscope_identity()
вCustomers
таблицы. - Каждый клиент имеет человек, поэтому у клиента и человека есть свой жизненный цикл (Агрегация) и он может выжить без другого. В этом случае таблица
Customers
должна иметь внешний ключ для таблицыPeople
. Плохая точка здесь в том, что у каждогоPerson
может быть многоCustomers
, что кажется странным для меня.
Какой дизайн предлагается в качестве наилучшей практики? Мне нужны твердые объективные ответы. Спасибо.
Не используйте наследование. Вместо этого используйте составной класс. – Bart