私信数据库设计
Posted
技术标签:
【中文标题】私信数据库设计【英文标题】: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
我想听听你的意见!
【问题讨论】:
【参考方案1】:在这种情况下,我会投票给一张桌子。
一般来说,只要两个表中的数据相同或非常相似,并且它们所代表的逻辑概念密切相关,我就会将它们放在一个表中。如果数据有很多差异或者概念真的不同,我会把它们做成两张表。
如果您创建了两个表,并且发现自己经常编写将两者结合的查询,则表明它们应该合并。
如果您制作了一张表,但您发现有许多字段对于案例 A 始终为空,而其他字段对于案例 B 始终为空,或者您对字段赋予了尴尬的双重含义,例如“for type A 这个字段是邮政编码,但对于 B 类,它是产品序列号”,这表明它们应该被分解。
【讨论】:
【参考方案2】:使用单个表是最有利的。
它允许更好的消息线程可能性并减少重复工作,即当您想要添加列时会发生什么。
【讨论】:
【参考方案3】:我宁愿使用第一个并在两个表中都包含一个附加字段del_code
。因此,您将能够隐藏已删除的消息,并且仍将它们保存在您的数据库中。
【讨论】:
以上是关于私信数据库设计的主要内容,如果未能解决你的问题,请参考以下文章