Дизайн БД. Один ко многим MYSQL или Postgresql JSONB?
Здравствуйте.
Стоит задача составления самой оптимальной структуры бд для проекта. Суть в том что имеются разные виды записей с почти схожей структурой (70%), имеющие порой родительские отношения между собой (пока макс. 3 уровня вложения), а также отношения с другими таблицами. Разнести по разным таблицам не вариант, за основу идет выборка всех записей с возможностью фильтрации по типам. Поставить все в одну таблицу, не хотелось бы, поскольку будут оставаться пустые столбцы (есть случаи наследования, когда нужная информация берется из родителя, и все поля остаются пустыми кроме нужных дочернему).
Исходя из всего этого есть 2 варианта пока: Вариант 1
1) Сделать таблицу с записями:
- ИД
- ИД пользователя
2) Сделать таблицу с варчар полями записи
- Ид
-Ключ
-Значение
-Ид записи
3) Сделать таблицу с полями текстового типа (для текста, Json)
- Ид
-Ключ
-Значение
-Ид записи
4) Сделать таблицу с датами записи (или хранить даты в юниксе в таблице варчар (пт. 2), во избежание лишнего запроса и этой таблицы - здесь нужен совет)
-Ид
-Ключ
-Значение
-Ид записи
Вариант 2
Перейти на postgresql и использовать jsonb в примерном формате:
-Ид
-Данные (json)
-Ид пользователя
Важна гибкость в запросах, т.к. очень много критериев фильтрации, отношений с другими таблицами, еще и поиск нужен. А также важна скорость и потребление ресурсов, и еще перспектива оптимального расширения.