具有多个引用的mysql外键

标签 mysql foreign-keys rdbms

我正在使用 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 表的想法尽可能简单。

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

最佳答案

我会制作另一个连接用户和社区的表格。

ID    USER_OR_COMMUNITY_ID     IS_USER
1     32933                    true
2     2398                     false
3     23278                    false
4     923                      false

这可能很有用,因为用户和社区可能拥有相似类型的信息。例如,用户有名称(username),社区也有。他们也可能有注册日期、头像等。所以你可以有一个表,例如这些列:id、user_or_community_id、is_user、name、date_registred。然后所有特定于用户的数据都将存储在用户表中,社区也是如此。

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

关于具有多个引用的mysql外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597110/

相关文章:

php - 正在迁移已弃用的应用程序(mysql_* 到 mysqli): Object of class mysqli could not be converted to string

php - 以两种不同方式分配的两个php变量之间的区别

sql - 当一个表有唯一的 FK 时,它是否应该有 PK?

database - 如何处理 1 --> 0..1 关系?

database - 这种数据结构有名称吗?

MySQL 将日期与可能返回 null 的子查询的最大值进行比较

Mysql每行选择表5

database - ERD数据库图中如何表示多个相似的外键?

django - Hadoop和Django,有可能吗?

replace - 仅使用 Redis 而不是 RDBMS 的缺点是什么?