Модель отношений между тремя таблицами в четвертой таблице - PullRequest
0 голосов
/ 11 марта 2019

Таким образом, у меня есть две таблицы - таблица Student и таблица Staff, у меня также есть таблица Item, план состоит в том, чтобы студенты или сотрудники могли взять под опеку предмет, поставленный другим способом, дляПредмет, чтобы иметь хранителя (студент или персонал).Поэтому я создал новую таблицу - Item_Custodian.Как мне смоделировать отношения, которые позволили бы моей таблице Item_Custodian содержать информацию об Предмете и хранит его, будь то студент или сотрудник.Предложения, советы и т.д. приветствуются.Спасибо

1 Ответ

2 голосов
/ 11 марта 2019

Я хотел бы поделиться тремя подходами, которые я знаю для обработки таких отношений:

  • Подход 1 : определить два отдельных nullable foreign keys в Item_Custodian одна ссылка на Staff и одна ссылка на Student, что приводит к двум физическим отношениям, одно из которых всегда null.
  • Подход 2 : определить два диапазона идентификаторов для Student и Staff таким образом, чтобы не перекрывать. Затем создайте только один столбец в Item_Custodian и инициализируйте его одним из двух идентификаторов таблицы в результате чего логические отношения.
  • Подход 3 : Определите два столбца в Item_Custodian, один как логический внешний ключ, а другой как тип первого столбца (т. Е. StaffType или StudentType).

В вашем сценарии, где есть только два хранителя, я лично предпочитаю первый подход по двум причинам:

  1. Создает физическую связь между таблицами
  2. Только один столбец null не делает таблицу разреженной
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...