3

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

第一个设计是一个消息表,一个消息评论表:

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

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

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

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

我想听听你的意见!

4

3 回答 3

5

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

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

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

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

于 2011-08-08T17:17:57.173 回答
0

使用单个表是最有利的。

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

于 2011-08-08T15:50:13.480 回答
0

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

于 2011-08-08T15:52:11.930 回答