我真的需要一些帮助。我有这个项目并且对如何构建它的数据库感到困惑
我有这个一般消息。
学生有年级和部门
我需要发送不同类型的消息
- 发送给所有学生
- 发送给所有希望收到每日更新的学生
- 发送给属于指定年级的学生
- 发送给希望收到每日更新的那一年的学生
- 发送给属于类(class)的学生
- 发送给属于各个部门并希望收到每日更新的学生
- 发送给年级为 section 为的学生
- 发送给特定学生
一些功能
Resend notification to new students
Time of notification to end sending
这是我的数据库结构
message_queue
id
type
message
isWantToReceive
date_added
type
字段值为json字符串
我是这样保存的
样本值
id type Message isWantToReceive date_added
1 a:1:{s:3:"all";a:0:{}} Hi welcome! 0 2009-12-2
2 a:1:{s:6:"others";a:5:{s:7:"year";a:1:{i:0;s:11:"1";}s:10:"section";a:1:{i:0;s:7:"1";}}} Hi welcome! 0 2009-12-2
然后我有一个 cron 作业发送器,它将查询它并根据 type
发送消息。
我的问题是查询所有已发送的通知时
获取所有发送到 year 2
或 year 1 section 1
的通知
因为我的 type
字段是一个 json。你能帮我根据我的功能如何工作来重构我的数据库设计吗?
最佳答案
那么,除了您的 message_queue
表之外,您还应该有一个如下表:
student<br/>
id
year
section
wantsDailyUpdates
此表将允许您跟踪所有学生以及他们所在的年份和部分。以及他们是否希望收到每日更新。
关于MySQL数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746225/