我正在开始一个新项目。这个项目目前处于规划和设计阶段,但是我可以想到一个解决方案的障碍,但它似乎并不是最优化或有组织的。任何帮助表示赞赏。
我有以下用例:
我试图围绕如何创建有效存储此信息的数据库。特别是如果我们计划扩展到谁知道有多少事件。现在,我有以下几点。在数据库设计中还有更多,但它主要是用于身份验证和用户数据的数据,所以我不包括它 - 让我知道如果看到完整的设计是否有帮助。
USER
-----------
id (pk)
EVENT
-----------
id (pk)
coordinator (fk, references USER.id)
page
workers
participants
//workers and participants are lists of USER.ids
这很简单,但我只能看到它在一个方向上有效,而不是两者都有效。查询任何给定事件的工作者和参与者将非常简单,但找到任何给定用户的事件将非常麻烦。
任何想法/批评都会非常有帮助。谢谢。
答案 0 :(得分:2)
这实际上很容易放入RDMS。您只需要为工人和参与者建立一系列多对多关系。您还可以在此表中存储特定于该事件的参与者/工作人员所需的任何其他内容。
User
----
ID
Events
------
ID
Participants
-----------
User ID
Event ID
Workers
-------
User ID
Event ID
如果参与者和工人没有其他数据存储,您可以使用单个表并表示其状态
SignUps
-------
EventID
UserID
Type ( W | P )
你甚至可以通过这种方式做协调员,以防万一有机会让一个活动有协调员
答案 1 :(得分:2)
答案 2 :(得分:0)
您可以在MongoDB中使用ID数组,但不能(有效地)在基于SQL的数据库中使用,例如SQL Server或MySQL AFAIK。
相反,如果您不使用基于No-SQL的数据库,请使用映射表存储事件和工作人员以及事件和参与者之间的关系。