与多个表相关的Mysql注释表

时间:2018-09-09 13:32:48

标签: mysql sql database relational-database

由于基本可以在任何内容下进行注释,所以我不确定如何将该关系转换为数据库设计模式。

    CREATE TABLE comments (
    id INT(11) NOT NULL PRIMARY KEY,
    content TEXT NOT NULL,
    authorId INT(11) NOT NULL,
    FOREIGN KEY(authorId) REFERENCES users(id)
    );

如您所见,注释通过将作者的ID存储在数据集中,也确实与users表有关系。但是,评论本身可以在帖子或视频下面,这是两个单独的表格。 这是我的问题:我应该为两个关系(video_comments和post_comments)创建一个联结表,还是应该以其他任何方式创建它。另外,应有一个ON DELETE CASCADE约束,该约束应导致视频被删除,并删除与此视频相关的评论。

2 个答案:

答案 0 :(得分:0)

我认为您可以创建commentable_idcommentable_type来让您知道此ID属于哪个表 至于这部分

  

此外,应设置ON DELETE CASCADE约束,该约束应导致视频被删除,并删除与其相关的评论

我不知道该怎么做,我想如果我在您的位置,我会在删除视频之前使用代码进行处理,然后检查是否有任何评论并将其删除。

答案 1 :(得分:0)

这是您可能要考虑的另一种方法:

  1. 添加名为“ itme_id”或类似名称的列以存储 video_id或post_id
  2. 在两个视频上创建for/after delete triggers 并张贴表格,在 使用魔术表中的信息触发。

通过这种方式,您不必创建新表或使用级联对象。这只是我的假设,请让我知道这是否对您有意义。