Создание схемы базы данных для отслеживания Events и Event_Shifts, каждый с необязательными тегами, в Ledger - PullRequest
0 голосов
/ 17 марта 2019

В настоящее время я моделирую схему базы данных для обеспечения работы собственной системы управления событиями.Продукт предназначен для того, чтобы помочь организации отслеживать различные виды событий, которые ее участники посещают с течением времени.Требования к системе следующие:

  • и 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

...