Есть таблица Работник (id, имя, фамилия).
Есть таблица Рабочая команда. (id, дата формирования, ...?)
Рабочая команда формируется ежедневно, но количество работников заранее не известно.
Не могу понять, как правильно организовать таблицу Рабочая команда, чтобы в ней на момент формирования одной записью были необходимые работники?
История формирования рабочих команд должна быть сохранена.
В голове крутится такое решение: Рабочая команда(id, дата формирования, id_работника_1, ..., id_работника_N)
Но есть подозрение, что это бред.
Это действитнльно бред. Тогда требуется еще одна таблица:
Состав команды(ид_рабочей команды, ид_работника).
Рабочая команда будет являться этаким заголовком, с датой, номером и целями.
А состав команды будет содержать перечень рабчих, которые входят в определенный момент в определенную команду.
id рабочей группы = 1 (к ней приписываем сколько угодно работников).
при выборке делаете join двух таблиц с условием WHERE id = 1 и получаете список работников этой группы
Добавлю что в последнем варианте в таблице "работник в команде" поле id лишнее, лучше составной первичной ключ по обоим айдишником, заодно и проверка на дублирование будет автоматическая.
В таблице работник поле id_рабочей_команды под вопросом, но может быть нужно, всё зависит от деталей.
Конкретная реализация зависит от языка. Суть в том, что первичный ключ - информация, уникальная для строки, позволяющая её однозначно идентифицировать. Часто это всякие уникальные абстрактные номера (id в вашем примере), они сами по себе первичные ключи. Но бывает, что сама информация естественным образом может быть первичным ключём, например номер телефона в БД сотового оператора. При этом не всегда бывает такое, что одного поля самой информации хватает. Тогда используют составной ПК, т.е. состоящий из нескольких столбцов. Т.е. не один столбец сам по себе не является уникальным, но логическая организация информации такова, что сочетание этих столбцов уже будет уникально.
В таблице "работник в команде" ни номер команды ни номер работника не уникальны сами по себе, но вот два раза быть в одной и той же команде работник не может, следовательно оба id-ника - это составной ключ, более того следить за уникальностью этих пар - значит оберегать себя от возможных ошибок. Это может быть не очень понятно, добавь в таблицу текстовое поле "напутствие начальника" и тогда станет понятнее.