Нужно создать структуру SQL

Цена договорная
12 июля 2022, 00:13 • 12 откликов • 111 просмотров
В общем, у меня есть готовая структура, но она слишком ограниченная. Нужен человек для реструктуризации и написания готовых запросов.

Есть профили аккаунтов. Каждый профиль - это куча каких-либо данных (самые простые - логин/пароль), набор которых мы должны легко конфигурировать (добавлять/убирать) и фильтровать, т.е. сегодня у нас профиль + 10 полей заполняем (разного типа), а завтра подумали и сделали к заполнению 25 полей разного типа (input/textarea/date/datetime).

Поэтому я сделал 3 таблички. В первой (profiles) я внёс в структуру следующие поля поля:
- не изменяются (id / created_at / owner)
- поля, которые я хочу фильтровать (для вывода на фронт)

Затем я создал profiles_fields. Табличка для дополнительных полей, которые я могу как включать (is_active=1 - значит на фронт выводим это поле с конфигурацией (input/textarea/select, какой style надо применить для этого и т.п.) из этой таблички), так и выключать. При этом в табличке истории у меня всегда будет idшник, чтоб я понимал, что это за поле было раньше такое (чтобы избежать путаницы при добавлении новых/удалении старых).

Описание табличек:
- profiles (структура: id / owner (владелец профайла) / checked_at (timestamp), need_check_at и др)
- profiles_fields (структура: id / label / label_ru / is_active (используется ли это поле для истории в данный момент или нет) и др)
- profiles_history (структура: id / created_at / profile_id (profiles.id) / field_id (profiles_fields.id) / value)

Так вот, эта вся система у меня сейчас работает, но я упираюсь в свою кривую технологию в следующих моментах:
- неудобно фильтровать, если поле не было включено в основную табличку profiles. Если тянуть из profiles_history values, то слишком большая нагрузка (я только сделал миграцию с предыдущей версии и уже 13к строк. Дальше будет больше - в течение пары недель думаю, что история будет как-минимум увеличена до 50к строк).
- если вносить в основную табличку profiles все поля, которые я хочу фильтровать, то я упираюсь в гибкость системы, т.е. если мне захотелось профильтровать какое-то, то мне надо менять структуру основной таблички, подтягивать ей последние значение из истории и лишь затем проводить выборку - слишком много действий.

Ищу человека, который сможет провести грамотную реструктуризацию и написать примеры SQL запросов + проконсультировать дополнительно по моим глупым вопросам.
Общение предпочтительнее в телеге и текстом. В качестве ускорения всего процесса - могу голосом.