Реляционная модель: компания состоит из нескольких компаний.

моя проблема в следующем:

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

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

Зная это: HQ имеет много областей, похожих на компании.

  • А) Должен ли я создать 2 таблицы? Один позвонил в штаб-квартиру, а другой в компанию.
  • Б) Должен ли он быть рекурсивным на той же таблице?
  • в) Есть ли другой способ представить это отношение?

person TreeID    schedule 07.11.2014    source источник
comment
Я бы поместил все объекты в одну таблицу и использовал родительское поле. HQ будет иметь родительское значение NULL (или, возможно, 0). Тогда это простой запрос, чтобы получить всю структуру компании.   -  person Mr. Mascaro    schedule 07.11.2014
comment
Эй, спасибо за ваш ответ! Это хорошая идея. Но как насчет рекурсивности? База данных должна запрашивать меньше ресурсов для запроса этой таблицы, в которой хранятся HQID и companyID нет?   -  person TreeID    schedule 07.11.2014


Ответы (1)


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

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

person BobRodes    schedule 07.11.2014