В настоящее время я моделирую схему базы данных для обеспечения работы собственной системы управления событиями.Продукт предназначен для того, чтобы помочь организации отслеживать различные виды событий, которые ее участники посещают с течением времени.Требования к системе следующие:
- и
Event
могут иметь теги - , а
Event
может иметь несколько Event_Shifts
- an
Event_Shift
может иметь несколько Tags
Tags
для Event
отслеживаются только один раз, независимо от того, сколько Event_Shifts
участник посещает Tags
для Event_Shift
отслеживаются в смену и могут складываться с другими Event_Shifts
, а также с глобальными тегами Event
Я выполняю фоновое задание, которое собирает все события/ Event_Shifts в течение 24 часов в очередь и добавляет все их Tags
в таблицу Tag_Tracking_Ledger
.Я ищу способ моделировать записи в этом Tag_Tracking_Ledger
таким образом, чтобы запись могла:
- быть связанной через FK с данной комбинацией
Event
/ Event_Shift
при отслеживании Event_Shifts
- Быть связанным через FK только с
Event
(при отслеживании глобального Event
level Tags
) - Не быть связанным ни с
Event
, ни Event_Shift
, длякогда записи вводятся вручную администраторами
Существует ли стандартный способ разработки БД для этого?Я думал о том, чтобы разрешить Event
и Event_Shift
FK в Tag_Tracking_Table
быть NULLABLE
для поддержки этой функции.Аналогично, таблица Tag
, связывающая Events
и Event_Shifts
с Tags
, будет иметь поле Event_Shifts
FK равным NULLABLE
(для данного Event
нет Event_Shifts
Tags
).
Имеет ли этот дизайн какие-либо недостатки в производительности или дизайне, о которых следует знать?Это "звуковой" дизайн БД / приложения?Есть ли лучший способ подойти к этой проблеме для моделирования Event / Event_Shifts и отслеживания их тегов?Я рассмотрел использование таблицы связывания для необязательного Event_Shift
FK в Tag_Tracking_Table
, или просто разделил три различных книги, один для Events
, один для Event_Shifts
и один для ручного Admin Input
, ноэто кажется мне несколько сложнее, чем нужно.
Идеи и отзывы будут высоко оценены, спасибо SO community