Мой Rails engine, использующий PostgreSQL, импортирует статистику по нескольким
метрикам из Google Analytics:
- Visitors -
int - Goal 1 Completions -
int - Goal 2 Completions -
int - Goal N Completions -
int - Transactions Amount -
int - Transactions Revenue -
decimal
Это engine, который будет монтироваться к разным клиентским сайтам. И в будущем, кроме целей и e-commerce данных, там может оказаться всё что угодно (например, социальные метрики и т.д.). Поэтому моя задача сделать архитектуру максимально гибкой: типы метрик должны добавляться не через изменение архитектуры БД, а через внесение в справочник метрик новых типов (чуть ниже есть визуализация схемы).
Вот как выглядела бы таблица со статистикой по метрикам в базе, если бы все метрики были int:
- id -
int - date -
date - metric_id -
int - metric_amount -
int
Но есть Transactions Revenue (деньги), который
decimal, и у меня есть 2 пути:
Путь #1. Сделать все
metric_amount decimal- id -
int - date -
date - metric_id -
int - metric_amount -
decimal
Путь #2. Добавить nullable колонку для Revenue
- id -
int - date -
date - metric_id -
int - metric_amount -
int - metric_revenue -
decimal
Примерная схема пути #2 выгладит так:

Какой вариант правильный? Или оба неправильные и есть более оптимальное решение?