Dnebl
@Dnebl

Как лучше сделать структуру таблиц?

Есть таблица с заявками у заявки есть статус (Принято или Отказано).Если статус Отказано должен быть комментарий с причиной отказа.Как лучше организовать структуру таблиц?
На ум пришли следующие варианты:
1. В таблице заявок в поле статуса хранить json вида
{
'status' : "...", 
'comment' : "..."
}

2.Создать таблицу статусов примерно такого вида
таблица 1
id , 
status_name.


Создать таблицу статуса заявки
таблица 2
id, 
status_id, 
comment

В таблице заявки хранить указатель на таблицу статуса заявки(таблица 2).
  • Вопрос задан
  • 619 просмотров
Пригласить эксперта
Ответы на вопрос 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
1. В таблице заявок в поле статуса хранить json вида

В MySQL так делать не стоит, JSON поля не индексируются.

Я бы сделал так:
Создаём таблицу нужной структуры, добавляем поля:
status - ENUM (список), из двух пунктов, типа accepted/rejected. Если значений не много - список вполне подойдет.
status_comment - комментарий к статусу, который заполняется только в случае, если статус стоит как "отказано".

*Фактическое наличие поля в таблице - не говорит об обязательности его заполнения.

Если статусы планируется в последствии добавлять, можно сделать ссылку на доп. таблицу со статусами.

Или, статусы можно отмечать просто цифрой, например,
0 - отказано
1 - принято
2 - в процессе принятия решения
и т.д.

А текстовое описание каждого статуса хранить в виде констатнт класса/структуры/объекта внутри Вашей программы.

P.S. Если принципиально важно, что бы при любом статусе отличном от "Отказано" не было комментария к статусу, именно на уровне БД - на таблицу можно повесить триггер, который это поле будет очищать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы