Дизайн базы данных: отношение ИЛИ - PullRequest
3 голосов
/ 24 мая 2010

У меня есть база данных с таблицей «users», содержащей данные о моих пользователях. Каждый пользователь должен быть связан с компанией или колледжем. Я хочу иметь две отдельные таблицы «колледж» и «компания», каждая с полем «ID». Итак, как мне связать каждую запись в таблице пользователей с компанией или колледжем?

Суть в том, что я хочу установить отношение "ИЛИ" в базе данных.

Ответы [ 3 ]

6 голосов
/ 24 мая 2010

Вы можете использовать отношение подтип / супертип. Сохраните все общие поля в таблице организация . Таблицы College и company содержат только поля, относящиеся к этим объектам.

user_organization

2 голосов
/ 24 мая 2010

Вы можете использовать справочную таблицу «учреждение» или «организация» со структурой, например,

InstitutionId[PK], InstitutionType, LookupKey

, где LookupKey - это PK для компании или колледжа.

Или,

InstitutionId[PK], CompanyId[FK], CollegeId[FK]

В обоих случаях вы ссылаетесь от пользователя к учреждению, а затем на компанию и / или колледж.

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

1 голос
/ 24 мая 2010

Я бы создал реляционные таблицы. UserCollege и UserCompany. Таким образом, вы даже можете иметь пользователей, которые связаны с обоими при необходимости в будущем. Если нет, просто создайте запись отношения на одном из обоих

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...