多对多数据表设计相关问题
概述
企业微信端有成员数据需要同步到本地,成员数据有几个关联数据不知道怎么设计的好。
企业微信给的数据
{
"name": "李四",
"department": [1, 2], // 所属部门ID列表,用户可以隶属多个部门
"order": [1, 2], // 所在部门排序值,和所属部门ID位数相同一一对应
"is_leader_in_dept": [1, 0], // 是否部门领导,和所属部门ID位数相同一一对应
// ... 省略其他数据
}
求助
- 寻求更好的设计
- 目前这么设计在访问某个部门成员列表时,可否根据中间表的order字段排序
- 可否根据中间表的字段is_leader_in_dept快速给用户贴领导标签
目前的设计
成员表 + 部门表 + 中间表
成员和部门多对多关联userid -> department_id,并附加额外信息,中间表如下
用户ID | 关联部门ID | 部门内排序值 | 是否领导 |
---|---|---|---|
userid | department_id | order | is_leader_in_dept |
关于这个接口拆分的个人理解:
问题 1: 给出一张中间表 我觉得这个设计比较好 无需改动
问题 2 具体 sql:查所有用三表 join 关联查询 然后 order by order desc 进行排序
问题 3 比较简单不做赘述 后端处理 前端处理都可以