ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql-一个表与多个表

2019-11-01 10:16:29  阅读:190  来源: 互联网

标签:database-design conventions database-schema mysql


我有以下表格:
-帖子
-文件
-事件
-文件

每个帖子,文件,事件,文档都可以有评论.

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

第一个解决方案

>评论表(comment_id,author_id,评论)
> 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,评论)
> items_comments(comment_id,parent_type(枚举[‘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中的两个解决方案都有“感觉”,它们正在定义多对多关系(例如,评论可以属于多个项目).假设这不是理想的情况,则可以通过使用适当的唯一索引来防止它,但是…仍然具有初始外观,似乎似乎可能导致混淆.

标签:database-design,conventions,database-schema,mysql
来源: https://codeday.me/bug/20191101/1982799.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有