Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прошу совета по организации БД 
:(
    Опции темы
antonivanov
Дата 25.6.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



Здравствуйте!
Пишу проект на PHP в основе которого лежит что каждый пользователь имеет личный кошелек и есть различные способы внести деньги к себе в кошелек, так же есть различные способы вывода ну и соответственно перевод между пользователями.
Ни разу не сталкивался с подобным и в интернете не нашел записей по этому поводу, поэтому прошу помощи на этом форуме.

В общем помогите пожалуйста организовать БД удобным способом, чтобы можно было быстро получить баланс каждого пользователя, склеить запрос и получить список транзакций между пользователями и реализовать стандартные операции - ввод, вывод, пересылка между счетами.

Сначала думал создать таблицу `transactions` с полями:
Код

id
user_id
operation (enum)
to_user_id
amount
date


что то типа такого, но при большом количестве записей считать каждый раз баланс каждого пользователя долго и туповато... можно еще хранить текущий баланс в таблице самих пользователей, а `transactions` использовать для истории операций, но такой вариант не слишком устраивает, т.к. в случае потери данных или форс-мажоров восстановить состояние будет сложно.. хотя..
в общем прошу совета у опытных людей.

Заранее спасибо!!!
PM MAIL   Вверх
antonivanov
Дата 30.6.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



Принял решение создать доп поле в users типа флоат - balance
и создать таблицу transactions

триггером при создании записи в transactions пересчитывать balance для конкретного пользователя...
PM MAIL   Вверх
Zloxa
Дата 30.6.2010, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



antonivanov, правильное решение.  smile 
Только ИМХО, для баланса, лучше использовать отдельную таблицу, связанную с таблицей users один к одному.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
antonivanov
Дата 30.6.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



А для чего? Какая выгода и что в ней будет содержаться?
PM MAIL   Вверх
Zloxa
Дата 30.6.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



На самом деле никогда не задкмывался.... всегда так делал и везде так делается
Что содержаться? Первичный ключ - код пользователя, атрибут - баланс. FK на справочник юзеров - опционально.
Для чего? Ну, например, чтобы избежать блокировок справочника при изменении баланса.




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
antonivanov
Дата 30.6.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



Под справочником юзера вы подразумеваете таблицу пользователей?

В принципе да, согласен, такой метод эффективнее.. Спасибо большое)

Еще вопрос: необходимо организовать возможность пересылки сообщений между пользователями... как то реализовывал, но все получилось наперекосяк, не учел тот факт что у Каждого сообщения может быть статус "прочитано" или "не прочитано" и еще пару моментов, как посоветуете реализовать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.