多对多数据表设计相关问题

概述

企业微信端有成员数据需要同步到本地,成员数据有几个关联数据不知道怎么设计的好。

企业微信给的数据

{
    "name": "李四",
    "department": [1, 2], // 所属部门ID列表,用户可以隶属多个部门
    "order": [1, 2], // 所在部门排序值,和所属部门ID位数相同一一对应
    "is_leader_in_dept": [1, 0], // 是否部门领导,和所属部门ID位数相同一一对应
    // ... 省略其他数据
}

求助

  1. 寻求更好的设计
  2. 目前这么设计在访问某个部门成员列表时,可否根据中间表的order字段排序
  3. 可否根据中间表的字段is_leader_in_dept快速给用户贴领导标签

目前的设计

成员表 + 部门表 + 中间表

成员和部门多对多关联userid -> department_id,并附加额外信息,中间表如下

用户ID 关联部门ID 部门内排序值 是否领导
userid department_id order is_leader_in_dept
讨论数量: 1

关于这个接口拆分的个人理解:

问题 1: 给出一张中间表 我觉得这个设计比较好 无需改动

问题 2 具体 sql:查所有用三表 join 关联查询 然后 order by order desc 进行排序

select * from users as u INNER JOIN `中间表` as  n on n. userid=u.id INNER JOIN `department` as d on d.id=n. department_id order by  n.order desc


问题 3 比较简单不做赘述 后端处理 前端处理都可以

2年前 评论
TalentMiao (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!