gpt4 book ai didi

mysql - 一张 table vs 多张 table

转载 作者:可可西里 更新时间:2023-11-01 08:07:03 29 4
gpt4 key购买 nike

我有下表:- 职位- 文件- 事件- 文件

每个帖子、文件、事件、文档都可以有评论。

什么是更好的数据库方案,为什么

第一个解决方案

  • 评论表(comment_id, author_id, comment)
  • 创建关系的 4 个表(posts_comments(post_id,comment_id),files_comments(file_id,comment_id),events_comments(event_id,comment_id),documents_comments(document_id,comment_id))

第二种方案

  • 评论表(comment_id, author_id, comment)
  • items_comments (comment_id, parent_type (enum['post', 'file', 'event', 'document']), parent_id)

什么是更好的解决方案,或者我应该使用两者中的哪一个?

最佳答案

想要/需要单个评论表可能有真正的原因。例如,它可以更简单地查看来自给定用户的所有评论。此外,搜索所有评论会更简单(将一个 FTS 索引放在一个表上就可以了)。

另一方面,如果没有令人信服的理由将评论保存在一个表中,则可能有第三种(也是相当明显的)解决方案。

为每个项目(帖子、事件、文件、文档)创建一个单独的评论表。在那种情况下,RI 关系很容易定义和描述。此外,如果您经常输入临时查询,它可以使它更简单。例如

 select * from documents d left join doc_comments c 
on d.id = c.docid
where d.id=42;

这些可能与您的情况无关或不重要,但可能值得考虑。

一个额外的随机想法:OP 中的两个解决方案都“感觉”它们正在定义多对多关系(例如,一条评论可以属于多个项目)。假设这不是所需的情况,可以使用适当的唯一索引来阻止它,......但是......它仍然具有最初的外观,这似乎可能导致可能的混淆。

关于mysql - 一张 table vs 多张 table ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602562/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com