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

标签 javascript foreign-keys sequelize.js relationship

我有一个名为 Users 的表,它通常具有以下字段。

用户
ID,
名称,
电子邮件,
密码,
用户类型,
职称

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

我想到的一种方法是使用 managerId 向用户表添加另一列,并具有作为经理的用户的 id。

或者创建一个名为 User_Manager 的联结表,将 userID 和 managerID 作为外键会更好吗?

哪种方式最有效以及如何使用 sequelize 定义它?

最佳答案

这两种解决方案都有优点。

manager_id 这样的 users 表中的一列既快速又简单,并且提供了一个简单的自联接来获取管理器。

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 并在用户表中添加列。

关于javascript - Sequelize 同一张表上的关系。基于多对多检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62306943/

相关文章:

javascript - 传单标记集群 : Exempt marker from clustering

javascript - React - onClick 丢失 "this"

javascript - 在 jquery 中动态添加复选框和验证检查

mysql - 选择条件与单行匹配的行?

Django博客回复系统

javascript - 要求 sequilize 模块在某些快速应用程序文件中返回未定义

javascript - 调整大小时 fullpage.js 特定背景部分

php - 主键和外键同时与学说 2

node.js - 在 Sequelize 中引用同一模型的多个外键属性时出错

javascript - 添加数据以连接表