Как правильнее организовать хранение данных о полученных заявках в БД?
Есть landing page страница, на ней несколько форм при отправке которых на сервере я буду хранить сущность - заявку от этой формы. У заявки будет время, название формы, а так же заполненные поля формы, но в некоторых из этих форм есть только поле ввода номера, в некоторых и поле ввода номера и имя и почты, или только почты, так же к заявке прилагается IP пользователя, его user-agent и referer.
Название и описание формы надо хранить на сервере, а при отправке формы будет передаваться ее ID и соответственно поля. Стоит ли хранить это в реляционной БД, создавая несколько таблиц для нормализации или просто каждую заявку складывать в mongoDB в виде JSON'a?
Нужно понимать что даже если хранить JSON в PostgreSQL под gin индексом, то это будет быстрее чем Btree в Mongo. Потому что using index with vodka ! JSON в PostgreSQL можно и не нормализовать, там есть flyweight шаблон, так что ничего лишнего он хранить не будет - посмотрите примеры работы. А вот в реляционных табличках какого-нить enum будет более чем достаточно, хотя я обычно не ленюсь, и создаю кучу табличек с id name +unique, и отдельным ts полем для поиска.
программист, python, django, mysql, git, hg, linux
Смотря как обрабатывать будете. В монге хранить - это сырые данные, придется обработчик свой писать.
В реляционной БД хранить - можно будет сикулями вытягивать. Для начала сделайте одну таблицу в БД со всеми возможными полями, причем укажите что не все поля обязательны и записывайте в эту таблицу все что с формы приходит. Потом стандартными сикулями или ОРМом (какой ЯП у вас?) обработаете данные.