基于 MySQL Stack 的消息设计

标签 mysql database-design

<分区>

假设您正在开发一个消息系统。一个非常基本的,你想保持简单,以便它易于备份、易于编码等。而且速度很快,并允许随着时间的推移进行扩展。

您如何看待用于处理此问题的基于堆栈的系统?

例如,您有一条由“收件人”、“发件人”、“时间戳”和“消息”组成的消息。您需要做的就是堆叠这些消息,当用户登录并想要检查他们的消息时,您需要做的就是遍历列表并找到 To == 当前登录用户的所有实例。

您认为这是处理此问题的好方法吗?或者你认为有更好的方法吗?有什么建议吗?

最佳答案

你可以设计一个 domain object并使用 SPLObjectStorage堆叠消息。

我会在 SQL 级别进行过滤(针对 === 当前登录的用户),因此您只需加载用户需要阅读的消息。这减少了加载时间。

编辑:

所以你有一个表叫做

消息

  • 编号
  • 发件人编号
  • 收件人编号
  • 留言
  • 发送日期

还有一个叫做

的表

用户

  • 编号
  • ...

与其他各种领域。这样您就可以通过 users.id = messages.senderIdusers.id = messages.recipientId 连接两个表。您应该考虑在 senderId 和 recipientId 上放置两个索引。

关于基于 MySQL Stack 的消息设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469026/

相关文章:

sql - 数据库设计: how to indicate if a column data is public or private

sql-server - 数据库设计帮助——分层数据

sql - SQL Server 的安全库

mysql - 带有便利设施的建筑物的 SQL 结构

php - 删除foreach中带有复选框的数据

PHP/MySQL 每周轮值表

sql - 自定义表单生成器的数据库设计(和结果存储)

mysql - 使用 JSON 文件或 SQL 的用途

sql - Mysql查询返回服务器负载平均值

php - 我想使用 PhP 删除组合框中的选定项目,并且该项目也必须反射(reflect)在数据库中