mysql правильное хранение платежей

334
06 августа 2017, 07:19

Возник следующий вопрос: сервис продает определенные услуги. У каждой услуги есть несколько цен со своим сроком действия.

Service: id, name
Service_price: service_id, period, price

Таблица Service никогда не меняется. Как лучше хранить факты покупки данных услуг?

Варианты следующие:

  1. В платеже дублировать информацию об услуге - хранить service_id, price и period.
  2. В платеже хранить только ссылку на service_price_id

В первом варианте возникает избыточность.

Во втором варианте придется запретить изменять существующие данные в таблице (добавить поле is_active = false для устаревших цен) и разрешить только добавлять новые.

Какой подход более удобен и практичен? Данные по проданным услугам используются в отчетности с группировкой по периодам и ценам.

Answer 1

При реализации по варианту 2 достаточно, например, ввести скидку некоторым категориям клиентов, чтобы развалилось всё и сразу.

В данном случае имеет место ошибка анализа. Совокупность хранящихся в таблицах Service и Service_price данных представляет собой не справочник (данные-атрибуты) связанных со сведениями о платежах данных, а шаблон, который с платежами никак не связан (в момент создания записи о платеже связь между ней и использованным для её формирования шаблоном разрывается).

Так что только вариант 1. И это НЕ дублирование.

READ ALSO
MariaDB + Galera: запросы зависают в статусе query end

MariaDB + Galera: запросы зависают в статусе query end

Всем привет! Есть кластер (2 ноды + 1 арбитратор)Запросы на него идут через maxscale proxy, настроенную таким образом, чтобы все запросы (и чтения и записи)...

298
В чем может быть ошибка mysql запрос?

В чем может быть ошибка mysql запрос?

Пытаюсь достать продукт по хешу url

348
Как в mysql скопировать из строки 0 символов?

Как в mysql скопировать из строки 0 символов?

Хочу сделать, что бы в одно запросе, проверялось условие, и в зависимости от этого, строка принимала, то или иное, значение

330