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。。