【问题标题】:How to orginize a DB that is used to compare tables, where the main index is generated AFTER the creation? (JS + Node + MySQL + sequelize)如何组织用于比较表的数据库,在创建后生成主索引? (JS + Node + MySQL + 续集)
【发布时间】:2021-02-04 05:56:46
【问题描述】:

我会尽量简单地解释它,想象一下表格是这样的:

在 X 项目上工作

ID Name
157 Dan
234 Ben
276 Jess

在 Z 项目上工作:

ID Name
157 Danny
567 Franklin

工人指数:

ID Name
157 Daniel
234 Benjamin
276 Jessica
375 Arnold
567 Frank

我想从主索引开始查询以得到类似的东西

ID Name name on project X name on Project Z
157 Daniel Dan Danny
234 Benjamin Ben null
567 Frank null Franklin

现在我可以使用 LEFT JOIN 使其工作,但我不知道如何在此处实现一些数据完整性,并使用 sequelize 使其变得简单。 主要问题是主索引是在创建项目之后创建的。 有点像这样:

  1. 创建项目表(没有工人 ID)。
  2. 生成工作人员 ID
  3. 通过遍历所有表创建一个主索引。
  4. 根据主索引中的 ID 进行查询,以根据 ID 了解哪个工作人员正在处理哪个项目。

有没有办法创建这些连接?我将如何基于这个数据库进行查询?

编辑: 搜索时,我使用的是 ID 数组

【问题讨论】:

    标签: javascript mysql sql node.js sequelize.js


    【解决方案1】:

    首先,让我们列出所需的表格:

    workers:使用真实姓名和worker_id 作为主键
    projects:使用project_id
    w_p:使用worker_id 和@ 的多对多映射表987654327@和project_idPRIMARY KEY(project_id, worker_id), INDEX(worker_id, project_id)

    现在对所需的SELECT 进行测试。

    【讨论】:

    • 所以你的意思是,我不应该为每个项目设置一个单独的表,而应该只给他们一个不同的 ID,以便在包含工人和项目的一张大表中使用?恐怕它只会在我需要更新项目表、删除行等时变得更加混乱。或者,如果我只想从那 1 个表中读取数据
    • 如果有很多“相同”的表,几乎总是一种“糟糕的”模式设计。所以,是的,我正在引导你远离那个。
    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多