(Для админов - 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 решение?..