私信数据库设计

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。因此,您将能够隐藏已删除的消息,并且仍将它们保存在您的数据库中。

【讨论】:

以上是关于私信数据库设计的主要内容,如果未能解决你的问题,请参考以下文章

消息系统的设计

基于微信小程序奶茶商城系统的设计与实现(源码+数据库文件).rar

采用JAVA设计一个小型图书管理程序(只要增删查改)

爬虫架构设计

机房建设方案设计

数据库课程设计SQLServer数据库课程设计(学生宿舍管理),课设报告+源码+数据库关系图