加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-03-06 06:17:40 所属栏目:编程 来源:网络整理
导读:我正在尝试在网站上创建一个用于私人消息传递的表.我创建了下表,我认为这是有效的,但我真的很感激一些反馈. 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 N

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

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`.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读