database - 私信数据库设计

标签 database private-messaging

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

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

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

我想听听你的意见!

最佳答案

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

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

如果您制作了两个表,并且您发现自己经常编写查询来对两者进行并集,则表明它们应该合并。

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

关于database - 私信数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984750/

相关文章:

php - 设计连接到数据库的应用程序

ruby-on-rails - Rails 的即时通讯实现?

javascript - 不和谐中的私有(private)消息命令

具有多个计数和分组依据的 MySql 过程

instagram - 启用 Instagram 聊天 API

php - 当MySQL列为1时显示文本

sql - 无法更改 Java Derby 数据库中现有表中的列

php - 无法连接数据库 : Codeigniter

java - 映射父类(super class)上的命名查询