java消息机制,观察者模式问题

做一个教务管理的系统,教务人员发布了一条消息,把它存入到数据库中,然后学生打开教务管理的页面时候,系统会提醒有一条未读的教务信息,这个功能得怎么实现。

如果有很多个学生,那不是得有很多个表来保持学生是否有读取过这条消息?这个提醒的功能怎么设计,数据库怎么设计才合理,小白求解。

一张表就可以,这张表有四个字段,一个是主键id ,一个是接收消息的学生id,一个是消息内容,一个是消息状态
管理者发送消息后将这三个字段存入数据库,消息状态初始为0.
当学生登录系统,根据学生id及状态为0的条件查询出未读消息个数,可在页面上显示,学生读过消息可点击标记为已读,然后去数据库修改这条状态,改为1即可

直接数据库表中对学生有一个字段表明是否已读这条消息。这样每个学生请求的时候,根据数据库数据返回

简单点的办法就是:
使用一个表,一个消息发送多少个学生,就弄多行记录,每行记录记录对应的学生的id信息,是否读过这条消息弄个flag标志位就行了,后面的逻辑就
根据这个flag来操作。
或者使用2张表,一个消息表,一个消息个学生关联表,关联表存一些对应的状态信息,后面关联查询。

    后面数据量大的话,查询慢的话,可以使用一些内存来缓存数据或者其他消息系统。。。

个人是这样理解的,你这个有点儿像微信朋友圈点赞的,每个人点进来都会看到自己有没有点赞对吧。所以我觉得有三张表,学生表,消息表,消息学生
映射表,这个映射表里面包含消息Id和学生Id,如果学生读了这条消息,就在这张表里面插入一条记录,然后学生登录的时候,根据学生id和消息id去判断
这张表查一下,有记录,表示学生读过了,没有记录则表示没有读