SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.07.2017 14:29:12

Pantela777
Завсегдатай
Зарегистрирован: 06.06.2016
Сообщений: 39

Таблицы для баланса пользователя, транзакции, заказов

Не актуально

Отредактированно Pantela777 (05.03.2018 14:01:08)

Неактивен

 

#2 01.07.2017 18:08:04

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Таблицы для баланса пользователя, транзакции, заказов

Никогда (от слова совсем!) не храните деньги в double. В decimal или int складывайте.
Есть ли вероятность того, что балансы будут нужны еще в 10-ти других валютах?
Если да, то лучше создать таблицу валют и на нее ссылаться.
Ссылку на пользователя в таблице транзакций лучше в foreign key обернуть, ну и остальные ссылки.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 01.07.2017 20:54:11

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Таблицы для баланса пользователя, транзакции, заказов

1) Ружье, висящее на стене обязательно выстрелит.
https://toster.ru/q/23947
https://stackoverflow.com/questions/628 … l-database

Лично такое реализовывать не довелось, но какие могу дать общие рекомендации:

Хранить обе валюты в таблице транзакций user_transactions.
То есть поля usd_amount и eur_amount в таблице транзакций - также как и в таблице пользователей.
Чтобы всегда, на каждом шаге представлять сколько денег было потрачено, сколько осталось, etc.

Таблица user_transactions должна через foreign key ссылыться на user_id таблице user.

Таблица order ссылается на пользователя.
Таблица product_orders - это многие ко многим, ссылается на order и на product.
то есть если купили 3 веника и 2 грелки в одном заказе, то создаются 2 записи в таблице product_orders, обе ссылаются на один order (ибо заказ один), но на разные товары в таблице product.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 01.07.2017 20:58:22

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Таблицы для баланса пользователя, транзакции, заказов

1. Просто еще не наступили на грабли. Хотите проверить грабли - может продолжать. smile Для денег нужно использовать только "точные" типы.

Неактивен

 

#5 01.07.2017 21:26:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Таблицы для баланса пользователя, транзакции, заказов

Равно как и для медицины, радиации и прочих сущностей подобного рода smile.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 02.07.2017 08:38:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Таблицы для баланса пользователя, транзакции, заказов

Если Вы хотите иметь возможность восстановить историю баланса в обеих валютах (а лучше, разумеется, так и сделать) - то надо хранить не `currency` enum('usd','eur') , а как я написал выше.
Курсы валют меняются по много раз на дню, нужно всегда писать финальный баланс  "после сделки" в обеих валютах в Вашем случае.
Остальные замечания или правки могут возникнуть, если приведете итоговую структуру.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson