在同一张表上Sequelize关系。基于多对多的数据检索

问题描述 投票:0回答:1

我有一个名为 "用户 "的表,通常有以下字段。

用户id, name, email, password, userType, jobTitle等。

现在每个用户也可以有一个经理。我如何在seuqlize中定义关系来定义特定用户的经理。

我想过的一种方法是在Users表中增加一列managerId,并且有用户的id,他是经理。

或者创建一个名为User_Manager的连接表,以userID和managerID作为外键,这样做会更好吗?

哪种方式最好,如何使用sequelize定义?

javascript foreign-keys sequelize.js relationship
1个回答
0
投票

这两种解决方案都有可取之处。

在Users表中设置一列,如 manager_id 是快捷方便的,并提供了一个简单的自助加入获得经理。

select users.id, managers.id as manager
from users
left outer join users as managers on users.id = managers.manager_id;

优点:快捷方便

缺点:如果需要更多的用户关系,则不能扩展。

连接表和添加关系名称的可能性,如经理、团队成员等,允许更多的灵活性,但更多的设置。

select  users.id, 
        user_relationship.id as manager, 
        relationships.role
from    users
left outer join relationships on users.id = relationships.user_id and relationships.role = 'manager'
left outer join users as user_relationship on relationships.to_user_id = user_relationship.id;

两者都有优点--如果你有时间,那么也许可以使用连接表。如果你永远不需要超过一个经理的关系--那就用这个表。KISS 并在用户表中添加该列。

© www.soinside.com 2019 - 2024. All rights reserved.