我目前正在对数据库架构进行建模以支持自定义事件管理系统。该产品旨在帮助组织跟踪其成员随时间推移而参加的各种活动。该系统的要求如下:
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
组合相关联Event_Shifts
关联(在跟踪全局Event
级别Event
时)Tags
和Event
都没有关联是否有标准的声音数据库设计方法来解决此问题?我当时正在考虑允许Event_Shift
中的Event
和Event_Shift
FK成为Tag_Tracking_Table
,以支持此功能。同样,将NULLABLE
和Tag
与Events
关联的Event_Shifts
表将Tags
FK字段设为Event_Shifts
(对于给定的{{ 1}}没有NULLABLE
Event
)。
此设计是否需要注意任何性能或设计缺陷?这是“声音”数据库/应用程序设计吗?有没有更好的方法来解决此问题,以对Event / Event_Shifts建模并跟踪其标签?我曾考虑过在Event_Shifts
中为可选Tags
FK使用链接表,或者只是拆分出三个不同的分类帐,一个用于Event_Shift
,一个用于Tag_Tracking_Table
,以及一个用于手册Events
的工具,但在我看来,这比需要的要复杂。
感谢并感谢SO社区