mysql - View 如何工作?

标签 mysql database performance data-structures

这是场景:

我有几个帖子表和一个投票表。如何防止在投票表中插入不存在的 post_id(在帖子表中)?

// Posts_1                  // Posts_2                  // Posts_3
+----+---------+            +----+---------+            +----+---------+
| id | content |            | id | content |            | id | content |
+----+---------+            +----+---------+            +----+---------+

// Votes
+----+---------+
| id | post_id |
+----+---------+

为此,我创建了一个 Post_Index 表,它将所有帖子合并到一个位置,并如下所示:

// Posts_Index
+----+---------+------------+
| id | post_id | post_table |
+----+---------+------------+

再加上这样的 FK:post_id -> votes.id

<小时/>

这是我的问题:

现在我想知道,创建一个 VIEW 而不是 TABLE 是否更好(Posts_Index)?因为帖子会一直增加,我每次都需要更新该表(在每个 Posts 表上使用 TRIGGER 来插入新行插入自身后的“Post_Index”)

<小时/>

我为什么问这个问题:

因为我在文档中读到,每次执行引用 View 的语句时,都会根据逻辑创建 VIEW。所以,我认为它需要大量的处理。

<小时/>

现在,我想知道的是:

就我而言,一个 VIEW 更好,或者一个 TABLE 和每个 Posts 表上的多个 TRIGGER ,以便在该表中创建一个新行插入每个帖子表后的表?

最佳答案

您可以将 votes.post_id 列声明为 posts.id 的外键。请参阅MySQL documentation了解更多详细信息。

关于mysql - View 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34371983/

相关文章:

mysql - 具有权限的 mysql 用户不可见数据库

java - 如何从 jsp 中的超链接调用 doPost() servlet

sql - Web 应用程序接收数百万个请求并导致在 SQL Server 2008 中每 30 秒生成数百万行插入

MySQL:按年份从特定日期分组的数据

php - 按评论数量对产品排序

单列下有多个子列的Excel表的Mysql DB表结构

java - 从 Firebase 创建 MediaPlayer 对象非常慢

java - 二维数组分配的性能

mysql - 如何更新mysql表中包含xml的列?

mysql - 无法打开 MySQL 的 .sql 文件