Как организовать базу данных, которая используется для сравнения таблиц, где основной индекс генерируется ПОСЛЕ создания? (JS Node MySQL sequelize)

#javascript #mysql #sql #node.js #sequelize.js

#javascript #mysql #sql #node.js #sequelize.js

Вопрос:

Я постараюсь объяснить это как можно проще, представьте, что таблицы выглядят так:

Работа над проектом X

ID Имя
157 Dan
234 Ben
276 Jess

Работа над проектом Z:

ID Имя
157 Дэнни
567 Франклин

Рабочий индекс:

ID Имя
157 Даниэль
234 Бенджамин
276 Джессика
375 Арнольд
567 Фрэнк

И я хочу выполнить запрос, начиная с основного индекса, чтобы получить что-то вроде

ID Имя имя в проекте X имя в проекте Z
157 Даниэль Dan Дэнни
234 Бенджамин Ben null
567 Фрэнк null Франклин

Теперь я могу заставить его работать с помощью LEFT JOIN, но я не знаю, как я могу реализовать здесь некоторую целостность данных и упростить ее с помощью sequelize. Основная проблема заключается в том, что основной индекс создается ПОСЛЕ создания проектов. Это выглядит примерно так:

  1. создает таблицы проектов (без идентификатора работника).
  2. Сгенерировать идентификатор работника
  3. Создайте ОСНОВНОЙ ИНДЕКС, просмотрев все таблицы.
  4. Запрос на основе идентификатора в основном индексе, чтобы узнать, какой работник работает над каким проектом, на основе идентификатора.

Есть ли способ создать эти соединения? И как я буду запрашивать на основе этой базы данных?

Редактировать: при поиске я использую массив идентификаторов

Ответ №1:

Сначала давайте разложим необходимые таблицы:

workers : с реальным именем и worker_id для ПЕРВИЧНОГО КЛЮЧА
projects : с project_id помощью и т. Д
w_p : таблица сопоставления «многие ко многим» с worker_id и nickname и project_id ; PRIMARY KEY(project_id, worker_id), INDEX(worker_id, project_id)

Теперь сделайте удар по желаемому SELECT .

Комментарии:

1. Итак, вы говорите, что вместо отдельной таблицы для каждого проекта у меня должна быть только одна, дающая им разные идентификаторы для использования в одной большой таблице с рабочими и проектами? Я боюсь, что это только усложнит ситуацию, когда мне нужно обновить таблицу проекта, удалить строки и так далее. Или, если я хочу просто прочитать из этой 1 таблицы

2. Почти всегда «плохой» дизайн схемы — иметь много «идентичных» таблиц. Итак, да, я отвлекаю вас от этого.