Задавайте вопросы, мы ответим
Вы не зашли.
Не актуально
Отредактированно Pantela777 (05.03.2018 14:01:08)
Неактивен
Никогда (от слова совсем!) не храните деньги в double. В decimal или int складывайте.
Есть ли вероятность того, что балансы будут нужны еще в 10-ти других валютах?
Если да, то лучше создать таблицу валют и на нее ссылаться.
Ссылку на пользователя в таблице транзакций лучше в foreign key обернуть, ну и остальные ссылки.
Неактивен
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.
Неактивен
1. Просто еще не наступили на грабли. Хотите проверить грабли - может продолжать. Для денег нужно использовать только "точные" типы.
Неактивен
Равно как и для медицины, радиации и прочих сущностей подобного рода .
Неактивен
Если Вы хотите иметь возможность восстановить историю баланса в обеих валютах (а лучше, разумеется, так и сделать) - то надо хранить не `currency` enum('usd','eur') , а как я написал выше.
Курсы валют меняются по много раз на дню, нужно всегда писать финальный баланс "после сделки" в обеих валютах в Вашем случае.
Остальные замечания или правки могут возникнуть, если приведете итоговую структуру.
Неактивен