Обычно мы разрешаем отношение «многие ко многим», вводя третью таблицу, называемую различными именами ... таблица отношений, таблица соединений, таблица ссылок и т. Д.
В качестве примера:
CREATE TABLE `employment`
( employee_id INT(11) NOT NULL COMMENT 'PK, FK ref employee.id'
, contractor_id INT(11) NOT NULL COMMENT 'PK, FK ref contractor.id'
, PRIMARY KEY (employee_id, contractor_id)
, UNIQUE KEY employment_UX2 (contractor_id, employee_id)
, CONSTRAINT FK_employment_contractor FOREIGN KEY contractor_id REFERENCES contractor(id)
, CONSTRAINT FK_employment_employee FOREIGN KEY employee_id REFERENCES employee(id)
)
Чтобы представить отношение между «сотрудником» и «подрядчиком», мы вставляем строку в эту таблицу.
Иногда само отношение может иметь атрибуты.В этом примере могут быть некоторые даты, которые мы хотим отслеживать (контракт, начало, завершение).Может быть статус («согласовано», «выполняется», «завершено», ...)