#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:
Сначала давайте разложим необходимые таблицы:
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. Почти всегда «плохой» дизайн схемы — иметь много «идентичных» таблиц. Итак, да, я отвлекаю вас от этого.