php – 用于私人消息传递的单个mysql表

前端之家收集整理的这篇文章主要介绍了php – 用于私人消息传递的单个mysql表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试在网站上创建一个用于私人消息传递的表.我创建了下表,我认为这是有效的,但我真的很感激一些反馈.

CREATE TABLE IF NOT EXISTS `pm` (
  `id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL,`to` int(11) NOT NULL,`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`subject` varchar(255) DEFAULT NULL,`message` text NOT NULL,`read` tinyint(1) NOT NULL DEFAULT '0',`deleted` tinyint(1) NOT NULL DEFAULT '0',PRIMARY KEY (`id`)
  FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

我有2列确定消息的状态:读取和删除

如果读取= 1,则接收器已读取该消息.如果删除= 1,则发件人或收件人从已发送或已收到的收件箱中删除邮件.如果删除= 2,则两个用户删除了该消息,因此从数据库表中删除该行.

最佳答案
一些评论

Charset = latin1会让一些人感到厌烦,我建议使用charset = utf8.

我建议不仅在user_id上进行外键检查,而且还要检查.

此外,我还会在日期上添加索引,因为您将在该字段上进行大量排序.

您需要在两个字段中拆分已删除,否则您将不知道哪个用户删除邮件. (deleted_by_user,deleted_by_recipient)

请注意,date是一个保留字,您需要在查询中将其更改为message_date或`backtick`.

猜你在找的MySQL相关文章