【问题标题】:Sequelize Relationship on the same table. Retrieving Data based on many to manySequelize 在同一张桌子上的关系。基于多对多检索数据
【发布时间】:2020-06-10 15:10:24
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: javascript foreign-keys sequelize.js relationship


    【解决方案1】:

    两种解决方案都有优点。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 2018-08-19
      • 2018-03-19
      • 2013-06-19
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多