【问题标题】:private message database design私信数据库设计
【发布时间】:2011-10-22 12:30:33
【问题描述】:

我正在创建一个简单的私人消息系统,我不确定哪个数据库设计更好。

第一个设计是一个message表,一个message cmets表:

Message
---------------
id
recipientId
senderId
title
body
created_at

MessageComment
---------------
id
messageId
senderId
body
created_at

第二个设计是一个用于消息和 cmets 的表,以及一个附加字段 messageId,因此我可以将消息链接为 cmets。

Message
---------------
id
recipientId
senderId
messageId
title
body
created_at

我想听听你的意见!

【问题讨论】:

    标签: database private-messaging


    【解决方案1】:

    在这种情况下,我会投票给一张桌子。

    一般来说,只要两个表中的数据相同或非常相似,并且它们所代表的逻辑概念密切相关,我就会将它们放在一个表中。如果数据有很多差异或者概念真的不同,我会把它们做成两张表。

    如果您创建了两个表,并且发现自己经常编写将两者结合的查询,则表明它们应该合并。

    如果您制作了一张表,但您发现有许多字段对于案例 A 始终为空,而其他字段对于案例 B 始终为空,或者您对字段赋予了尴尬的双重含义,例如“for type A 这个字段是邮政编码,但对于 B 类,它是产品序列号”,这表明它们应该被分解。

    【讨论】:

      【解决方案2】:

      使用单个表是最有利的。

      它允许更好的消息线程可能性并减少重复工作,即当您想要添加列时会发生什么。

      【讨论】:

        【解决方案3】:

        我宁愿使用第一个并在两个表中都包含一个附加字段del_code。因此,您将能够隐藏已删除的消息,并且仍将它们保存在您的数据库中。

        【讨论】:

          猜你喜欢
          • 2012-02-04
          • 1970-01-01
          • 2016-07-06
          • 1970-01-01
          • 2012-07-15
          • 2021-08-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多