Mysql 我应该如何映射许多用户和部门之间的关系
我有以下实体Mysql 我应该如何映射许多用户和部门之间的关系,mysql,database,database-design,Mysql,Database,Database Design,我有以下实体 部门有许多用户,用户有许多记录 现在,我希望用户可以看到相同部门的所有记录 我很困惑我是否需要在部门和记录之间建立关系,或者它可以通过用户进行遍历您只需要从部门到用户之间建立1-n关系,从用户到记录之间建立1-n关系。然后,通过查找该记录分配给的用户所属的部门,您就知道该记录属于哪个部门。如果用户有id\u部门并且记录有id\u用户,那么您就可以获得与某个部门相关的所有记录。您可以使用子查询: SELECT * FROM Records WHERE user_id IN (SELE
部门
有许多用户
,用户有许多记录
现在,我希望用户可以看到相同部门的所有记录
我很困惑我是否需要在
部门
和记录
之间建立关系,或者它可以通过用户进行遍历您只需要从部门
到用户
之间建立1-n关系,从用户
到记录
之间建立1-n关系。然后,通过查找该记录分配给的用户所属的部门,您就知道该记录属于哪个部门。如果用户有id\u部门
并且记录有id\u用户
,那么您就可以获得与某个部门相关的所有记录。您可以使用子查询:
SELECT * FROM Records WHERE user_id IN (SELECT User.id FROM User WHERE department_id = 123)
示例代码:
SELECT a.batsman_id,a.matchs,a.hundreds,b.country_type, c.player_name
FROM batsman a INNER JOIN countrycode b ON a.country_code=b.country_code
INNER JOIN players c ON a.player_id=c.player_id
ORDER BY a.batsman_id;
屏幕截图:
SELECT a.batsman_id,a.matchs,a.hundreds,b.country_type, c.player_name
FROM batsman a INNER JOIN countrycode b ON a.country_code=b.country_code
INNER JOIN players c ON a.player_id=c.player_id
ORDER BY a.batsman_id;
联接比子查询更有效
这就是您可以尝试使用内部联接
SELECT * FROM records AS r
INNER JOIN
users AS u ON (r.user_id = u.user_id)
WHERE u.department_id = 1
你的目标是什么?有什么问题?“现在所有用户都可以看到同一部门的所有记录”那么你想要这样还是什么?你应该提到你想要什么,我不明白。@Hardy我想如果我有这种关系,查询同一部门的记录可能会更容易好,现在更清楚了。见@Lie Ryan answer。。