我正在使用mysql,我正在研究我正在制作的网站的架构。我有点卡住,因为我有用户,社区(用户组),活动(由一个或多个用户或社区参与的用户或社区制定的计划)和rsvps(包含用户/社区的日期)参加一项活动)。我为用户,社区和活动创建了一个表,但我坚持使用rsvps:
我遇到的问题是理想情况下我对rsvps表有类似的东西:
USER/COM ID ACT_ID DATE Goin? U 2342 1 7/1/12 true U 1342 1 7/2/12 false U 2842 1 7/1/12 true C 5342 1 7/1/12 false
ID是用户或社区表的外键约束,具体取决于USER / COM属性的值。现在我很确定不可能这样做,所以我只是想知道你会怎么做。
最后注意:除了rsvp表之外,我还有几个其他表需要能够同时使用用户或社区,所以我更喜欢这个想法尽可能简单的rsvp表。
如果您需要更多信息,请与我们联系, 谢谢:))
答案 0 :(得分:0)
我会创建另一个连接用户和社区的表。
ID USER_OR_COMMUNITY_ID IS_USER
1 32933 true
2 2398 false
3 23278 false
4 923 false
这可能很有用,因为用户和社区可能有类似的信息类型。例如,用户也有一个名称(用户名),社区。他们也可能有一个注册日期,头像等等。所以你可以有一个表,例如这些列:id,user_or_community_id,is_user,name,date_registred。然后,特定于用户的所有数据将存储在用户表中,并且对于社区也是如此。
但我不确定,这是一个很好的问题。这可能会有点复杂。
答案 1 :(得分:0)
因为我非常喜欢外键,所以我会使用类似的东西
RSVP_ID USER_ID COM_ID ACT_ID DATE Goin?
1 2342 NULL 1 7/1/12 true
2 1342 NULL 1 7/2/12 false
3 2842 NULL 1 7/1/12 true
4 NULL 5342 1 7/1/12 false
RSVP_ID只是一些自动增量主键。您可以在user_id + act_id和com_id + act_id上添加2个唯一键。
这样,您可以让外键正常工作。此外,我总是有一个内容不同的专栏......