У меня есть таблица MySQL следующим образом:
id, user, culprit, reason, status, ts_register, ts_update
Я думал об использовании причины в качестве поля int и сохранении только идентификатора причины, который может быть выбран пользователем, и сама причина может быть увеличена администратором.
Что я имел в виду под увеличением, так это то, что администратор может зарегистрировать новую причину, например, в настоящее время мы имеем:
Flood, Racism, Hacks, Other
Но администратор может добавить новую причину, например:
Refund
Теперь моя проблема в том, что я хотел бы разрешить моим пользователям выбирать несколько причин, например:
В отчете 01 есть причины Flood и Hack.
Как мне сохранить поле причины, чтобы я мог выбрать несколько причин, поддерживая хороший формат таблицы?
Должен ли я просто пойти дальше и сохранить его как строку и привести его как INT, когда я ищу по нему, или есть лучшие формы для его хранения?
ОБНОВЛЕНИЕ На основании ответа Джонатана:
SELECT mt.*, group_concat(r.reason separator ', ') AS reason
FROM MainTable AS mt
JOIN MainReason AS mr ON mt.id = mr.maintable_ID
JOIN Reasons AS r ON mr.reason = r.reason_id
GROUP BY mt.id