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

Php 聊天应用程序的数据库设计,php,mysql,database-design,Php,Mysql,Database Design,我正在尝试使用AJAX、PHP和mySQL创建一个web聊天应用程序。我的数据库结构有问题。。以下是我的想法: 用户表:包含基本用户信息 聊天表:包含基本列,如“to”、“from”、“timestamp”等 问题是: 我认为这将很快变得非常混乱,因为许多用户将查询同一个表。更不用说一些安全问题了。我想为每个对话创建一个单独的表。这是个好主意吗?你喜欢什么样的结构?每次谈话单独安排一张桌子确实会很乱。单个表的容量和累积量足够大,会导致性能下降 如果不需要在数据库中永久存储每一行对话,只需在对话结

我正在尝试使用AJAX、PHP和mySQL创建一个web聊天应用程序。我的数据库结构有问题。。以下是我的想法:

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

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

问题是:


我认为这将很快变得非常混乱,因为许多用户将查询同一个表。更不用说一些安全问题了。我想为每个对话创建一个单独的表。这是个好主意吗?你喜欢什么样的结构?

每次谈话单独安排一张桌子确实会很乱。单个表的容量和累积量足够大,会导致性能下降

如果不需要在数据库中永久存储每一行对话,只需在对话结束后从chat lines表中清除对话即可。如果你想在过去的对话中搜索行,你只需要把它放在那里。(使用其他方法保存聊天统计信息等)

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


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

每个会话的单独表将非常混乱。单个表的容量和累积量足够大,会导致性能下降

如果不需要在数据库中永久存储每一行对话,只需在对话结束后从chat lines表中清除对话即可。如果你想在过去的对话中搜索行,你只需要把它放在那里。(使用其他方法保存聊天统计信息等)

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


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

在我看来,为每个会话单独设置一个表将更加混乱,也更难管理。没有更高性能的WebSocket有什么特别的原因吗?“我想为每个对话创建一个单独的表。这是个好主意吗?”没有,请不要。使用一个表。如果每个conva都有一个表的话,那会更混乱,而且数据库结构也不正确。@Matt那么,你是说大公司的所有对话都使用一个表?只是好奇?就这样想吧。根据您的想法,如果您有两个用户->一个表就足够了,但对于4个用户,您至少会有24个表(如果他们也有组对话,则不算在内)。想象一下,100个用户需要多少张表……@candh大公司不会有一台服务器,更不用说一张表了。。。如果聊天是他们业务范围内的重要交易。而且,它们的后端可能会有更健壮的功能,运行在为应用程序优化并专用于应用程序的服务器上。也就是说,如果你的音量很大,最好让聊天应用远离你的主服务器,不过你可以做表格。在我看来,为每个对话单独设置一个表格会更混乱,也更难管理。没有更高性能的WebSocket有什么特别的原因吗?“我想为每个对话创建一个单独的表。这是个好主意吗?”没有,请不要。使用一个表。如果每个conva都有一个表的话,那会更混乱,而且数据库结构也不正确。@Matt那么,你是说大公司的所有对话都使用一个表?只是好奇?就这样想吧。根据您的想法,如果您有两个用户->一个表就足够了,但对于4个用户,您至少会有24个表(如果他们也有组对话,则不算在内)。想象一下,100个用户需要多少张表……@candh大公司不会有一台服务器,更不用说一张表了。。。如果聊天是他们业务范围内的重要交易。而且,它们的后端可能会有更健壮的功能,运行在为应用程序优化并专用于应用程序的服务器上。这就是说,如果你的音量很大,最好不要使用你的主服务器上的聊天应用程序,不过你可以用它来做表格。