Каково лучшее решение / практика для такой ситуации?
У меня есть таблица, которая может ссылаться на несколько таблиц (объектов)?
Вот пример для таблицы UserCalendar. Это таблица, в которой пользователь сохраняет свое событие, а также системные вставки в эту таблицу сзади. Пользователь выполняет некоторые сервисы, которые имеют крайние сроки и которые также включены в эту таблицу. Проблема в том, что нет такой таблицы, как таблица UserEvent. Пользователь должен сохранить все свои события в этом календаре в качестве описания. Я должен сделать это как можно проще.
Я могу придумать это двумя способами.
1)
UserCalendar
UserCalendarId | UserId | Описание | ObjectType | ObjectId
Используя эту опцию, мне не пришлось бы FK этой таблицы. Я мог только изменить ObjectType (Уведомление, Сервис, Календарь) и использовать идентификатор этой таблицы в качестве ObjectId. В случае события такой таблицы не будет, и это будет нулевое поле.
Мы называем этот псевдо FK столбец.
2)
Или я мог бы использовать, как сказано в теории, несколько таблиц для каждого FK.
UserCalendar
UserCalendarId | UserId | Описание
UserEvent
UserCalendarId | EventId
UserServices
UserCalendarId | ServiceId
Уведомления пользователей
UserCalendarId | NotificationId
...
Эта таблица внешних связей может быть n числом для каждого системного события или любого другого пользовательского события, которое относится к определенному типу
Первое решение - это быстрое внедрение.