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

(Для админов - php в теги добавил для того, чтобы обозначить - выборка из базы будет осуществляться через Eloquent ORM, поэтому немаловажно эффективное решение с точки зрения производительности)

Вопрос, в проекте есть такой раздел - измерение параметров тела.
Первое, что напрашивается, сделать простую плоскую таблицу
body_dimensions
---
id
weight
bust (объем груди)
waist (объем талии)
hip (объем бедер)
fat (массовая доля жира для тех, у кого умные весы)
visceral fat (висцеральный жир)
muscle (мышцы)
bones (кости)
water (доля воды)
created_at
updated_at
user_id


Удобно и быстро. Но давайте представим - заказчик начинает под все умные весы мира накидывать кучу новых параметров по ходу дела, иные вычеркивать - получается, нам надо знатно переделать структуру таблицы. Чего не хочется.

Вариант 2

body_dimensions
---
id
created_at
updated_at
user_id

body_params
---
id
param

body_dimensions_params
---
id
param_id
user_id
value


И тут мы не зависим от того, что там добавляется - набор параметров можно свободно расширять и даже придумать вариант с выключением или мягким удалением параметров.
Но тут другая проблема - структура громоздкая и ORM-ка может начать тормозить (вопрос знающим - насколько эта схема губительна для производительности в рамках ORM-ок, в частности Eloquent?)

Третья схема - JSON

body_dimensions
---
id
created_at
updated_at
dimensions : json (тут будут измерения {param_id : value})
user_id

body_params
---
id
param


Здесь таблиц всего две - одна содержит параметры, другая результаты измерения. С точки зрения структуры - вариант самый интересный, не должен вызывать тормозов и прочее. Но вот какие могут возникнуть сложности при построении сложных запросов к базе? Как в данном случае проработан JSON - все сложное сразу в топку или хорошо проработан этот вопрос? Для себя JSON в базах данных открыл недавно, еще не совсем понимаю, как с ним составлять чистые запросы на все стандартные случае жизни.

Какой бы Вы выбрали вариант? Может есть еще какое-то 4, 5...n решение?..
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Если вы не будете связывать данные между клиентами, выводить среднею температуру по больнице, например, то база данных вам не нужна.
Вам нужно сохранять историю изменения неких параметров в файле клиента.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы