2014-11-07 2 views
0

моя проблема заключается в следующем:реляционная модель: Компания имеет несколько компаний

Как я должен представить в реляционной модели:

HQ имеет, по крайней мере, 0 или более (0, N) компании и ее результаты зависят 1 и только 1 HQ.

Зная, что: Штаб-квартира имеет много полей, похожих на компании.

  • A) Должен ли я создать 2 таблицы? Один называется HQ и другой компанией.
  • B) Должен ли он быть рекурсивным в той же таблице?
  • C) Есть ли другой способ представить это отношение?
+0

Я бы поместил все объекты в одну и ту же таблицу и использовал родительское поле. HQ будет иметь родительское значение NULL (или, может быть, 0). Тогда это простой запрос, чтобы получить всю структуру компании. –

+0

Эй, спасибо за ваш ответ! Это хорошая идея. Но как насчет рекуритивности? Он должен просить меньше ресурсов для базы данных, чтобы запросить эту таблицу, в которой хранятся HQID и идентификатор компании нет? – TreeID

ответ

1

Используя ту же таблицу с родительским полем работает очень хорошо сама по себе, если HQ имеет всех то же поле, что и остальные. Однако, если есть атрибуты HQ, которые не принадлежат компании, как вы говорите, тогда вам также потребуется отдельная таблица для данных, относящихся к HQ. Так что да, 2 стола. Но возьмите идею jbarker как отправную точку. Затем добавьте таблицу HQ с внешним ключом companyID. В записи HQ будет идентификатор компании, который является штаб-квартирой, который, по его словам, будет иметь значение NULL для родителя.

Что касается вашего вопроса о рекурсии, у вас будут рекурсивные отношения или «самосоединение» для данных компании, а не для данных, специфичных для HQ.

+0

спасибо !!!!! – TreeID

+0

Добро пожаловать. :) – BobRodes

Смежные вопросы