powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите с оценкой актуальности решения
10 сообщений из 10, страница 1 из 1
Помогите с оценкой актуальности решения
    #40005148
pyDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно реализовать систему начисления балов пользователю с описанием за что эти балы были зачислены. Аналогичным образом они могут отниматься.
Так вот, я себе вижу эту реализацию следующим образом:

Таблица "Balance" с полями:
"user_id" - которое одновременно будет первичным ключом. (Почему первичным? Потому что у нас нету таблицы пользователей, она на другом сервере\сервисе. Поэтому мне это показалось логичным).
"scores" - собственно сами балы пользователя.

Таблица "Description" c полями:
"text" - инфо. за что балы зачислены
"created" - когда они были зачислены
"user_id" - внешний ключ на user_id из таблицы "Balance"


Насколько коректная\кривая такая реализация?
Благодарю за ответы.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005149
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pyDevНасколько коректная\кривая такая реализация?

"Баллы пользователя" (и вообще таблица Balance) - преждевременная оптимизация, способная
вылезти боком. Для начала достаточно одной таблицы начисления баллов.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005153
pyDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, понимаю. Но если отталкиваться сугубо от условий которые я описал? У нас каждое отдельное начисление сопровождается описанием (за что они были начислены), которое нужно хранить. Здесь одной таблицой не отделаешься.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005165
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pyDev
Нужно реализовать систему начисления балов пользователю с описанием за что эти балы были зачислены. Аналогичным образом они могут отниматься.
Так вот, я себе вижу эту реализацию следующим образом:

Таблица "Balance" с полями:
"user_id" - которое одновременно будет первичным ключом. (Почему первичным? Потому что у нас нету таблицы пользователей, она на другом сервере\сервисе. Поэтому мне это показалось логичным).
"scores" - собственно сами балы пользователя.

Таблица "Description" c полями:
"text" - инфо. за что балы зачислены
"created" - когда они были зачислены
"user_id" - внешний ключ на user_id из таблицы "Balance"


Насколько коректная\кривая такая реализация?
Благодарю за ответы.


Я бы перенес "scores" во вторую таблицу. Иначе если Вася получил 5 баллов по физкультуре и 3 балла по поведению, в вашей схеме разграничение теряется, остается только сумма. Просуммировать баллы для отчета проблемы не представит.

После этого уберите первую таблицу, она лишняя.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005209
Deon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас есть такая система.

Вот как это выглядит.

1) Таблица одна, ибо в чем смысл "сводной" таблицы, если ее придется править при изменении таблицы начисления, и тот же запрос можно вызывать не КАЖДЫЙ раз при изменении, а только когда надо видеть сумму.
2) Надо продумать, всегда ли надо знать ВСЁ, или иногда баллы только одной категории. Если категории разные, лучше их ввести как вариант для простой сортировки.
3) Если баллы начисляет больше одного человека, лучше ввести поле кто начислил, чтобы знали потом с кого спрашивать.
4) Если пользователей очень сильно много, то можно еще и индекс ввести соответствующий, для оптимизации.

Итого
"used_id", "баллы", "комментарий", "категория"(опционально, для сортировки), "кто начислил"(опционально, чтобы знать ответственного)

В итоге когда надо будет посмотреть баллы пользователя, будете делать просто SELECT * WHERE user_ud='xxx', и еще можно по категории выборку сделать.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005224
pyDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за ответы.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005243
pyDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение с хранением в одной таблице понятно. Но что если нам нужно отнять какое-то количество балов от общей суммы (аналогично с описанием за что были сняты)? (Я в первом посте это упоминал).
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005247
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pyDev,

Два варианта, или сумма считается каждый раз в запросе или создаете на своей стороне таблицу пользователей в которой храните рассчитанную сумму, расчетное поле корректируется каждый раз при добавлении строки в таблицу с баллами.
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005256
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pyDevНо что если нам нужно отнять какое-то количество балов от общей суммы (аналогично с
описанием за что были сняты)?

Про отрицательные числа Вы когда-нибудь слышали?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с оценкой актуальности решения
    #40005288
pyDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Про отрицательные числа Вы когда-нибудь слышали?

Слышал :)
Всё прояснилось, разобрался. Благодарю отозвавшихся за помощь!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите с оценкой актуальности решения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]