Как лучше организовать хранение множественных текстовых данных?

Доброго дня. Озадачили обновить проект, который я делал 5 лет назад, еще до познания дзен (зачеркнуто) laravel. Сутки угрохал чтобы решить квест что откуда и почем в итоге плюнул и решил все заново сделать уже с имеющимися навыками. Есть филиалы компании. Сделаны связи филиал-сотрудник, филиал-расписание, филиал-события. Нормальные адекватные модели и связи. Филиал и к нему подгружаем необходимые данные. Все работает.
Но есть таблица mainpage. Смотрю ее структуру и ужасаюсь.

29 текстовых полей а-ля zagolovok_main about_branch и т.д.
Итого 6 строк по количеству филиалов и 29 полей.

Как сделать модель такого "поля" и прописать привязку к городу?

В одном из микропроектов я использовал пакет qcod/laravel-settings вроде. В общем - хранение по принципу key/value.

Верно ли я рассуждаю, что мне лучше сделать таблицу/модель с этими всеми полями (29 строк).

И уже через key/value заполнять данные
Branch_id key value

Я понимаю, что это из базовых вопросов, но все же?
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ну, по сути это метаданные для модели филиал. Имхо тут 3 варианта:

– хранить все эти метаданные в одном поле в таблице филиала, в виде JSON
– хранить данные в отдельной таблице, структурировано – с колонками под все эти метаданные
– хранить данные в отдельной таблице long and skinny – в виде id | branch_id | key | value

Как по мне, то структурированная таблица здесь – перебор. Таблица для метаданных – субъективная штука. Кому-то нравится, кому-то нет. JSON – современно, модно, молодежно. В PostgreSQL нативно и быстро, в MariaDB почти нативно и почти так же быстро, в MySQL хз, давно не заглядывал. Думаю уже должны были решить.
Ответ написан
Комментировать
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
Если эти 29 полей связаны с филиалами, то может часть перенести в соответствующие таблицы?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы