需求场景:
需要利用数据库来实现用户已读公告列表/未读公告列表/全部公告列表
实现思路:
原本的思路是建立一张用户公告关联的表,将所有公告和用户关联起来,然后用状态来判断和修改。但是这样用户一多,比如用户有10000个,每增加一条公告,就要多增加10000条数据,对数据库非常不友好。于是逆向思维,用户每次读取一张公告就判断表中是否有数据,如果没有就在表中插入一条数据。
具体实现:
首先准备两张表,公告表notice以及已读公告表notice_read。
CREATE TABLE `notice` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL COMMENT '公告标题',
`introduction` varchar(500) DEFAULT NULL COMMENT '简介',
`is_picture` int(2) DEFAULT NULL COMMENT '是否显示主图 0不显示 1显示',
`picture` varchar(2000) DEFAULT NULL COMMENT '主图'