php - 聊天应用程序的数据库设计

标签 php mysql database-design

<分区>

我正在尝试使用 AJAX、PHP 和 mySQL 创建网络聊天应用程序。我在数据库结构方面遇到了问题。这是我的想法:

用户表:包含用户的基本信息

聊天表:包含基本列,如“to”、“from”、“timestamp”等。

问题:

我认为这会很快变得非常困惑,因为很多用户将查询同一个表。更不用说一些安全问题了。我想为每个对话创建一个单独的表。这是一个好主意吗?您的首选结构是什么?

最佳答案

每个对话单独的表格确实会非常困惑。具有足够的容量和积累的单个表将变得巨大并降低性能。

如果您不需要将每一行对话永久存储在数据库中,您可以在对话结束后从聊天行表中清除对话。如果您想在过去的对话中搜索台词,则只需将其保留在那里。 (使用其他方法来保持聊天统计等)

您可以存档对话的串联/序列化版本,即。将整个 block 放在一个 block 中,放入文件系统中的文件中,或放入包含相关元数据(用户、长度、持续时间等)的单独表中。然后只要旧对话再次活跃,只需重新加载它。

如果您确实想要分配每个表的负载,您可以例如跟踪典型的用户连接,然后生成足够数量的组专用表,或使用任何其他有效的用户聚合算法。但是,如果您确实定期清除聊天行表,则在数据库性能成为问题之前需要大量使用。

关于php - 聊天应用程序的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34982486/

相关文章:

mysql - 对使用 UNION 或 JOIN 感到困惑

php - 替代 file_get_contents?

php - 当条件设置时,Android fcm接收来自mysql的通知

mysql - 插入字段时它不会自动生成 ID cakephp3

sql - MySQL 如何处理 WHERE 测试?

mysql - 连接多个表的数据库设计最佳实践

php - Laravel 验证使用 或

php - PHP中如何将对象转换为特定格式的数组

mysql - DATE_FORMAT 没有在 mysql 中选择我的格式

mysql一对一消息优化表查询