Схема для таблицы отношений имеет несколько недостатков.Я обсуждаю их здесь .
Но вместо этого давайте изменим схему, чтобы сделать ее еще более эффективной.Вместо 3 таблиц с отображением «многие: многие» имеется только одна таблица:
CREATE TABLE requests (
id ...,
latest_status ENUM('eating', 'sleeping', 'running'),
all_statuses SET('eating', 'sleeping', 'running'),
) ENGINE=InnoDB;
(В качестве альтернативы вы можете использовать TINYINTs
, но с другим синтаксисом.)
Когда статусдля заданных request
изменений установите latest_status
и "или" новый статус в all_statuses
.
Чтобы проверить наличие последних running
: WHERE latest_status = 'running'
.
или, если используется какое-либо числовое значение: WHERE latest_status = 2
.