Мой 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 выгладит так:
Какой вариант правильный? Или оба неправильные и есть более оптимальное решение?