Mysql 将相似的数据对象合并到单个表中是否有效?

Mysql 将相似的数据对象合并到单个表中是否有效?,mysql,sql,database,database-design,entity-relationship,Mysql,Sql,Database,Database Design,Entity Relationship,我需要存储大量关于我的问题和答案系统的类似数据,如投票、跟踪、书签等 在投票示例中,存储问题、答案和帖子的投票的最佳表格布局是什么 分别存储投票,即获得3个表:UserQuestionVoces、UserAnswerVoces和UserPostVoces 将投票存储在一个表中: 用户投票(id、用户id、项目id、项目类型、投票), 而:item_id和item_type是问题、答案或帖子的id和类型,投票=-1/1 如果我走第一条路,我至少会有9张桌子。 如果我采用第二种方法,也就是说,所有数

我需要存储大量关于我的问题和答案系统的类似数据,如投票、跟踪、书签等

在投票示例中,存储问题、答案和帖子的投票的最佳表格布局是什么

  • 分别存储投票,即获得3个表:UserQuestionVoces、UserAnswerVoces和UserPostVoces

  • 将投票存储在一个表中: 用户投票(id、用户id、项目id、项目类型、投票), 而:item_id和item_type是问题、答案或帖子的id和类型,投票=-1/1

  • 如果我走第一条路,我至少会有9张桌子。 如果我采用第二种方法,也就是说,所有数据都集中在一个堆中,那么在将来填写表时,它的工作速度会更慢

    在我的情况下,哪种方式是有效的?

    如果你想征求我的意见,我会选择1号门。问题、答案和帖子都是独立的,尽管是相关的“事物”。而且,这些“事物”中的每一个碰巧也有与之相关的“投票”。。。但是,实际上,“投票”不是一件“事情”

    “投票赞成一个问题”与“这个问题”密切相关。“投票赞成……”其他任何东西都是一样的。所以现在我开始思考我最有可能实际编写的查询。我很可能想写一些查询,比如说,计算一个特定问题的票数。。。我真的不想把这个问题弄得一团糟,让它要么“难以书写”,要么被迫翻阅一堆不是“问题投票”的记录。其他类型的投票与此无关,我也不想把它们过滤掉。(如果我需要写一个查询来计算“这个用户投了多少票?”,不管怎样,我都可以很容易地写出来。)


    这是我的意见。(数据库管理器可以自行考虑“效率”。设计数据库,使您需要编写的查询更容易、更清晰。)

    是时候学习已出版的关于信息建模、关系模型和数据库设计与查询的学术教科书了。(记录和使用设计的语言和工具手册不属于此类教科书。)(维基文章或网络帖子也不属于此类教科书。)几十本已出版的学术信息建模和数据库设计教科书都是pdf格式的在线免费教科书。斯坦福大学有一个免费的在线课程。(但要求外部资源是离题的。)PS不要要求我们用定制的教程重写教科书。遵循其中一条,问一个关于你陷入困境的具体问题。在工程中没有“更好”/“最好”这样的东西,除非你定义它。同样不幸的是,所有合理的实用定义都需要大量的经验,其中包含大量的因素,这些因素与对细节的敏感度混乱相互作用。做简单的设计。当你通过测量证明一个设计和你能想到的所有备选方案都有问题(无论当时是什么意思),然后问一个非常具体的问题。还应定义“更好”/“最佳”。Hi@philipxy谢谢你的回答,我没有要求任何人订购教程。根据您自己的经验,您已经知道哪种选项在性能方面更有效,这对我来说已经足够了。两种方法都可以尝试。把它作为一种学习体验。