我有几个Posts
表和一个Votes
表。如何防止在post_id
表中插入不存在的Posts
(在Votes
表中)?
// Posts_1 // Posts_2 // Posts_3
+----+---------+ +----+---------+ +----+---------+
| id | content | | id | content | | id | content |
+----+---------+ +----+---------+ +----+---------+
// Votes
+----+---------+
| id | post_id |
+----+---------+
应该注意,实际上Posts
表的结构是不同的。 (所有Posts
表都没有相同的结构),然后我不能将所有Posts
表组合为一个表。
现在我想防止在Votes
表中插入无效行。 (无post_id
个表中没有{invalid = Posts
所以,如果我只有一个表,我可以在对Votes.post_id
的{{1}}引用上创建一个外键,但问题是有几个Posts.id
表。好的,好吧,有什么建议吗?
答案 0 :(得分:2)
表结构很疯狂。您需要有一个POST索引表,它将所有帖子组合到一个单独的位置,并给出如下:
// Posts_Index
+----+---------+------------+
| id | post_id | post_table |
+----+---------+------------+
// Votes
+----+---------+
| id | post_id |
+----+---------+
否则你需要反向映射方式。那样,post_id -> votes.id
。
答案 1 :(得分:0)
解决方案可能是您在投票表中使用post_table_ref来确定投票的投票位置。必须为整个应用程序修复此post_table_ref
。
根据发布帖子的表格,您必须在投票更新查询中提供post_table_ref
。
例如:如果帖子来自post_table_01
,您必须在投票更新查询中将post_table_ref
设置为1。在从投票表中获取记录时,您将在post_table_ref
查询的WHERE
子句中使用相同的SELECT FROM VOTES
。