2

我正在使用 mysql,并且正在为我正在制作的网站处理架构。我有点卡住了,因为我有用户、社区(用户组)、活动(由一个或多个用户或社区参与的用户或社区制定的计划)和 rsvps(包含用户/社区的日期回复了一项活动)。我为用户、社区和活动创建了一个表,但我被困在 rsvps 上:

我遇到的问题是,理想情况下我会为 rsvps 表​​提供类似的东西:

用户/COM ID ACT_ID DATE 去吗?
U 2342 1 2012 年 7 月 1 日是的
U 1342 1 2012 年 7 月 2 日假
U 2842 1 7/1/12 真
C 5342 1 2012 年 7 月 1 日假

ID 是用户表或社区表的外键约束,具体取决于 USER/COM 属性的值。现在我很确定这样做是不可能的,所以我只是想知道你会怎么做。

最后一点:除了 rsvp 表之外,我还有其他几个需要能够同时使用用户或社区的表,所以我希望 rsvp 表的想法尽可能简单。

如果您需要更多信息,请告诉我,谢谢:)

4

2 回答 2

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。然后,特定于用户的所有数据都将存储在用户表中,对于社区也是如此。

但我不确定,这是个好问题。这可能会有点复杂。

于 2012-07-22T01:50:58.100 回答
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 个唯一键。

这样,您可以让您的外键正常工作。此外,我总是有一个内容不同的专栏......

于 2012-07-22T02:14:04.850 回答