我正在php / mysql应用程序中构建一个noticeboard模块。这个想法是管理员可以将通知发布给单个用户,用户组(按角色),可能是用户/组/角色的组合,系统中的每个人。
我最初的想法是使用以下架构来解决我发送给单个用户或单个用户角色的问题:
notices
----------------
notice_id
notice_date
notice_title
notice_text
notice_recipients <-- linked to user_role_id (from user_roles table)
我不确定如何在数据库中没有重复行的情况下记录2个组和/或50个单独的收件人。是否可以将所有 user_role_id 存储在一个 notice_recipients 字段中,然后以某种方式读取该字段的内容以显示在每个用户的布告栏中?
答案 0 :(得分:5)
您需要一个联接表:
notices
----------------
notice_id
notice_date
notice_title
notice_text
和
notices_users
----------------
notice_id
user_id
创建通知时,请将其写入notces表。然后对于应该接收它的每个用户,在notices_users中添加一行。如果您已显示它,请将其从notices_users中删除或添加状态字段。