创建一个数据库模式以将每个带有可选标签的事件和Event_Shifts跟踪到分类帐

时间:2019-03-17 20:11:22

标签: database-design calendar nullable modeling

我目前正在对数据库架构进行建模以支持自定义事件管理系统。该产品旨在帮助组织跟踪其成员随时间推移而参加的各种活动。该系统的要求如下:

  • Event可能有标签
  • 一个Event可能有多个Event_Shifts
  • 一个Event_Shift可能有多个Tags
  • Tags的{​​{1}}仅跟踪一次,无论成员参加了多少Event
  • Event_Shifts
  • Tags每班都会被跟踪,并且可能与其他Event_Shift以及全局Event_Shifts的标签叠放

我正在运行一项后台作业,该作业将24小时内的所有Event / Event_Shifts拉入队列,并将其所有Event添加到Tags表中。我正在寻找一种方法来对此Tag_Tracking_Ledger中的条目进行建模,以使条目可以:

  • 在跟踪Tag_Tracking_Ledger时通过FK与给定的Event / Event_Shift组合相关联
  • 通过FK仅与Event_Shifts关联(在跟踪全局Event级别Event时)
  • 在管理员手动输入条目时,TagsEvent都没有关联

是否有标准的声音数据库设计方法来解决此问题?我当时正在考虑允许Event_Shift中的EventEvent_Shift FK成为Tag_Tracking_Table,以支持此功能。同样,将NULLABLETagEvents关联的Event_Shifts表将Tags FK字段设为Event_Shifts(对于给定的{{ 1}}没有NULLABLE Event)。

此设计是否需要注意任何性能或设计缺陷?这是“声音”数据库/应用程序设计吗?有没有更好的方法来解决此问题,以对Event / Event_Shifts建模并跟踪其标签?我曾考虑过在Event_Shifts中为可选Tags FK使用链接表,或者只是拆分出三个不同的分类帐,一个用于Event_Shift,一个用于Tag_Tracking_Table,以及一个用于手册Events的工具,但在我看来,这比需要的要复杂。

感谢并感谢SO社区

0 个答案:

没有答案