akk*_*kur 5 php mysql chat web
在过去的几周里,我一直在研究基于Web的聊天客户端应用程序,我有一个关于在MySql表中存储聊天消息的问题.我创建了一个名为对话的表,现在它由5个字段组成;
user1ID,user2ID,messages(mediumtext),status,timestamp.
当我测试聊天应用程序时,一切都运行得很好,但问题是每次用户发送内容时,我都会将该值作为新行附加到我的"消息"字段中.在检索消息时,我的sql代码会读取整个内容并将其显示给相应的用户.因此,数据量按添加到消息字段中的文本量线性增加.我的问题是,有没有办法只从文本字段中选择最后一行,或者是另一种可以减少传输数据量的解决方案.
Tim*_*m G 14
您需要更好的数据库模式 - 更多关系.这样做也会给你一些其他改进(密码保护聊天和多用户聊天来命名一对)
这是对您的数据库的ERD的一个看法.

5/6/2016 edit使用(希望)改进的字段类型和名称添加DDL
CREATE TABLE user
(
user_id CHAR(32),
user_login VARCHAR(255),
user_password CHAR(64),
user_email VARCHAR(400),
PRIMARY KEY (user_id)
);
CREATE TABLE message
(
message_id CHAR(32),
message_datetime DATETIME,
message_text TEXT,
message_chat_id CHAR(32),
message_user_id CHAR(32),
PRIMARY KEY (message_id)
);
CREATE TABLE user_chat
(
user_chat_chat_id CHAR(32),
user_chat_user_id CHAR(32),
PRIMARY KEY (user_chat_chat_id,user_chat_user_id)
);
CREATE TABLE chat
(
chat_id CHAR(32),
chat_topic VARCHAR(32),
chat_password CHAR(64),
user_chat_user_id CHAR(32),
PRIMARY KEY (chat_id)
);
CREATE INDEX user_login_idx ON user (user_login);
ALTER TABLE message ADD FOREIGN KEY message_chat_id_idxfk (message_chat_id) REFERENCES chat (chat_id);
ALTER TABLE message ADD FOREIGN KEY message_user_id_idxfk (message_user_id) REFERENCES user (user_id);
ALTER TABLE user_chat ADD FOREIGN KEY user_chat_user_id_idxfk (user_chat_user_id) REFERENCES user (user_id);
ALTER TABLE chat ADD FOREIGN KEY chat_id_idxfk (chat_id,user_chat_user_id) REFERENCES user_chat (user_chat_chat_id,user_chat_user_id);
Run Code Online (Sandbox Code Playgroud)