Использование базы данных циклического проектирования сущностей

database data-modeling

30 просмотра

1 ответ

3 Репутация автора

Я хотел бы хранить данные компании, у которой есть филиал, и у каждого филиала есть свой отдел. У меня есть следующие варианты:

  1. Создайте компанию, филиал и подразделение для хранения 3 различных данных.
  2. создать одну сущность с циклическими отношениями и использовать тип компании для дифференциации. Возможная структура данных: компания (id, CompanyName, type, parent) возможные данные:

Компания.

Id> CompanyName> Тип> Родитель

1> Honda> HQ> NULL

2> Honda US> B> 1

3> Honda Japan> B> 1

4> Honda US HR> D> 2

5> Продажи Honda в США> D> 2

Я склонен использовать вариант 2, как будто есть новое требование, такое как Конгломерат, в качестве высокого уровня вариант 2 сможет решить его, не вводя новую таблицу.

Будет ли этот дизайн иметь смысл, или это вызовет проблемы в будущем? Прокомментируйте, пожалуйста.

Автор: Setiaman Lee Источник Размещён: 18.07.2016 10:49

Ответы (1)


0 плюса

24299 Репутация автора

Решение

У вас есть два связанных, но отдельных вопроса для ответа.

Во-первых, как мне хранить отношения наследования в реляционной базе данных ? Компания, отдел и филиал - все это экземпляры «бизнес-единицы» - если они в основном одинаковы, вы можете использовать одну таблицу, но если они все довольно разные, одна таблица часто является плохим дизайном (см. Другой ТАК вопрос для большего контекста).

Второй вопрос: «Как мне сохранить иерархические отношения в моей модели наследования?». Для согласованности я бы сохранил это в той же модели, которую вы выбрали для своего решения наследования; но может иметь смысл иметь отдельную таблицу «отношений». Это позволит вам иметь дело с неожиданными отношениями - например, филиал может быть совместным предприятием между двумя отделами.

Автор: Neville Kuyt Размещён: 18.07.2016 11:16
Вопросы из категории :
32x32