<分区>
我正在尝试使用 AJAX、PHP 和 mySQL 创建网络聊天应用程序。我在数据库结构方面遇到了问题。这是我的想法:
用户表:包含用户的基本信息
聊天表:包含基本列,如“to”、“from”、“timestamp”等。
问题:
我认为这会很快变得非常困惑,因为很多用户将查询同一个表。更不用说一些安全问题了。我想为每个对话创建一个单独的表。这是一个好主意吗?您的首选结构是什么?
<分区>
我正在尝试使用 AJAX、PHP 和 mySQL 创建网络聊天应用程序。我在数据库结构方面遇到了问题。这是我的想法:
用户表:包含用户的基本信息
聊天表:包含基本列,如“to”、“from”、“timestamp”等。
问题:
我认为这会很快变得非常困惑,因为很多用户将查询同一个表。更不用说一些安全问题了。我想为每个对话创建一个单独的表。这是一个好主意吗?您的首选结构是什么?
最佳答案
每个对话单独的表格确实会非常困惑。具有足够的容量和积累的单个表将变得巨大并降低性能。
如果您不需要将每一行对话永久存储在数据库中,您可以在对话结束后从聊天行表中清除对话。如果您想在过去的对话中搜索台词,则只需将其保留在那里。 (使用其他方法来保持聊天统计等)
您可以存档对话的串联/序列化版本,即。将整个 block 放在一个 block 中,放入文件系统中的文件中,或放入包含相关元数据(用户、长度、持续时间等)的单独表中。然后只要旧对话再次活跃,只需重新加载它。
如果您确实想要分配每个表的负载,您可以例如跟踪典型的用户连接,然后生成足够数量的组专用表,或使用任何其他有效的用户聚合算法。但是,如果您确实定期清除聊天行表,则在数据库性能成为问题之前需要大量使用。
关于php - 聊天应用程序的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34982486/