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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен совет по организации БД, Ведение счета для пользователей 
:(
    Опции темы
Pankon
  Дата 12.10.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужен совет по организации БД, для решения задачи следуюшего характера:

Есть Юзеры на счет которых приходят условные пункты, после определенных действий юзера;
Юзеры могут свои пункты тратить, на определенные вещи;
Каждый Юзер может смотреть свое состояние "Счета" и свои приходы(и по какому поводу), расходы(и по какому поводу)...
"Хозяин базы" может смотреть всевозможные отчеты и статистики...

Порассуждав немного и прикинув - сколько будет записей, можно сделать вывод, что состояние счета Юзера простым суммированием в таблице приходы и отниманием суммы из таблицы расходы, будет очень "накладно(время)" для БД...

Кто знает, как это делается в подобных случаях(например банковские счета, кредитные карточки и. т.д.) smile 





PM MAIL   Вверх
LSD
Дата 12.10.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



В Oracle есть такая штука: материализованное представление (обсуждалось тут).
Вообще неплохо бы указать какой сервер(сервера) предполагается использовать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Pankon
Дата 12.10.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LSD @  12.10.2006,  10:27 Найти цитируемый пост)
какой сервер(сервера) предполагается использовать
 MS SQL 2005

PM MAIL   Вверх
Paradox
Дата 12.10.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а завести отдельную таблицу "Состояние счета" нельзя ? и поддерживаеть ее актуальность либо с помощью хранимых процедур, либо (что не очень красиво) триггеров ?


--------------------
---
PM MAIL WWW   Вверх
LSD
Дата 12.10.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Paradox @  12.10.2006,  14:08 Найти цитируемый пост)
и поддерживаеть ее актуальность либо с помощью хранимых процедур, либо (что не очень красиво) триггеров ?

Нельзя.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Paradox
Дата 12.10.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



почему нельзя, если не секрет ?


--------------------
---
PM MAIL WWW   Вверх
LSD
Дата 12.10.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Я был не совсем прав, есть некоторые проблемы, но это возможно.
Пусть у нас  есть такая сводная таблица. Первая транзакция добавляет запись в таблицу приходов, затем читает из таблицы сводной таблицы текущее значение, прибавляет к нему требуемую величину. В этот момент вторая транзакция добавляет запись в таблицу приходов, затем читает из таблицы сводной таблицы текущее значение (без учета данных первой транзакции), прибавляет к нему требуемую величину. После того как обе транзакции закончатся коммитом, в итоговой таблице будут неверные данные.

Единственный выход это блокировка на уровне строк. Но не знаю, как с этим делом в MS SQL Server. И вообще блокировки это зло.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Paradox
Дата 13.10.2006, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



тоже самое будет и при простом выгребании суммы по строкам из таблицы приходов
если1 транзакция добавила туда запись и не закончилась, а вторая начинает в это время читать sum по таблице приходов,то данные, внесенные первой транзакцией, она также не увидит.


--------------------
---
PM MAIL WWW   Вверх
LSD
Дата 13.10.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Paradox @  13.10.2006,  06:43 Найти цитируемый пост)
тоже самое будет и при простом выгребании суммы по строкам из таблицы приходов если1 транзакция добавила туда запись и не закончилась, а вторая начинает в это время читать sum по таблице приходов,то данные, внесенные первой транзакцией, она также не увидит.

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Pankon
Дата 13.10.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я внимательно читаю ваши посты... smile
Спасибо за рассуждения.

Но ввывод для себя я еще не сделал...

С нетерпением жду продолжения.. smile 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




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


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

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