@VladislavNaida

Как лучше хранить заявки из форм в БД?

Дорого дня. Поделитесь пожалуйста мнением по данному вопросу. Учитывая тот момент, что мы не знаем сколько уникальных форм будет на сайте и с какими полями.

Я вижу 2 варианта:

1. Используя "один ко многим".
В основную записываем допустим имя, а в сводную то что придёт в формате ключ - значение.

2. Сохранять данные в json

Какой вариант по вашему мнению лучше использовать и почему?
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 3
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
1) Всегда можно рассмотреть использование нереляционной базы данных на подобие MongoDB/YDB/CouchDB. Записи в таких базах подобны JSON-документам и не имеют строгой табличной структуры, как у реляционных аналогов.
2) Ваш вариант с Many-to-many связями вполне неплох, если хотите использоваться всё же реляционную БД. Он не нарушает нормальных форм.

Лично я считаю что нереляционные базы возможны только в прототипах, мелких проектах и "по приколу". Если вы планируете масштабироваться - в будущем вам точно захочется строгой типизации.
Ответ написан
@alexalexes
А что вы так боитесь сделать в таблице кучу колонок?
У записи заявки будет type_id - тип заявки, и в зависимости от этого будет использоваться разный набор колонок. Все колонки, которые опционально будут использоваться только в определенных типах будут с допущением null значениями.
В основную записываем допустим имя, а в сводную то что придёт в формате ключ - значение.

Имеет право на жизнь, но для разработчика будет сложнее сопровождать запросы. При написании запроса, если нужно вытащить или сравнить свойства заявок, будете писать на каждый такой момент подзапрос. Если захочется получать выборки с результатами в одну строку, то придется тоже использовать кучу подзапросов, возможно, сам текст запроса нужно будет формировать динамически.
С точки зрения производительности. План запроса усложнится, нужно будет использовать индексы.
2. Сохранять данные в json

Если не будете использовать свойства, которые запишите в json для связывания таблиц, и формирования условий выборки, то можно использовать.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Дорого дня. Поделитесь пожалуйста мнением по данному вопросу. Учитывая тот момент, что мы не знаем сколько уникальных форм будет на сайте и с какими полями.


Тут вопрос такого плана, вы сами разработчики или пользователь может наклепать свою форму?

Если сами то просто накатывайте миграции и делайте свою таблицу/ы под каждую форму.

Если пользователь то вам нужно переработать архитектуру:
таблицы следующие
fieldtype - описание всех типов полей строка, телефон, подстановка, выбор, вычисляемое
forms - простая табличка с айдишниками названием и мета данными
formfields - описание полей для форм, тип данных подставляется из fieldtype , так же тут метаданные
formfieldsresult - собственно результаты заполнения, особое внимание уделите типу подстановки он хранится в виде test@ya.ru#;Тестовый пользователь, где test@ya.ru это ключ для подстановки а #; разделитель
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽