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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проектирование БД, система заданий, задания, условия, поощрения 
V
    Опции темы
implements
Дата 21.10.2014, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток.
Возникла не до понимание как спроектировать БД для заданий с условиями для пользователей.
Суть следующая есть задания для пользователей с определенными условиями которые он должен выполнить, условия могут быть в диапазоне {1..10}, условия разные, при выполнении задания пользователь получает вознаграждения, которые тоже отличаются и могут так-же лежать в диапазоне {1..10}.
Первое, что приходит в голову создать сущьности 
1. Задания(id_условия, id_вознаграждения)
2. Условия(id)
3. Вознаграждения
Но как в условия и вознаграждениях прописать разнородные данные, можно конечно создать поля к примеру для 10 условий-10 полей, и проверять уже на стороне приложения бизнес-логики
если пустое поле пропускаем, если нет
если значение поля ==1, то делать то-то
если значение поля ==2, то делать то-то
................................................................

Думаю это бред =), кто-что может подсказать, натолкнуть

P.S. Система похожа на квесты в играх.

Это сообщение отредактировал(а) implements - 21.10.2014, 07:26
PM MAIL   Вверх
Akina
Дата 21.10.2014, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(implements @  21.10.2014,  08:24 Найти цитируемый пост)
Первое, что приходит в голову создать сущьности 
1. Задания(id_условия, id_вознаграждения)
2. Условия(id)
3. Вознаграждения

4. Пользователи

Цитата(implements @  21.10.2014,  08:24 Найти цитируемый пост)
как в условия и вознаграждениях прописать разнородные данные, можно конечно создать поля к примеру для 10 условий-10 полей, и проверять уже на стороне приложения бизнес-логики
если пустое поле пропускаем, если нет
если значение поля ==1, то делать то-то
если значение поля ==2, то делать то-то

Малопонятная фраза



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
implements
Дата 21.10.2014, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akina @  21.10.2014,  07:51 Найти цитируемый пост)
4. Пользователи

Эт само собой =)



Цитата(Akina @  21.10.2014,  07:51 Найти цитируемый пост)
Малопонятная фраза

Смотрите, допустим есть задание с условиями
1. Повысить уровень
2. Напасть куда-то
3. Построить что-то

вознаграждение
1. 100 золота
2. Доступ туда-то

И эти условия и вознаграждения кардинально разные, и мне нужно как-то их различать и хранить
PM MAIL   Вверх
implements
Дата 21.10.2014, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Добавлено через 10 минут и 32 секунды
Мммм даже можно думаю посмотреть в сторону EAV, у каждой сущности свои атрибуты и свои значения

Это сообщение отредактировал(а) implements - 21.10.2014, 08:42
PM MAIL   Вверх
Akina
Дата 21.10.2014, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(implements @  21.10.2014,  09:23 Найти цитируемый пост)
допустим есть задание с условиями
1. Повысить уровень
2. Напасть куда-то
3. Построить что-то
вознаграждение
1. 100 золота
2. Доступ туда-то
И эти условия и вознаграждения кардинально разные, и мне нужно как-то их различать и хранить 

Нет в них ничего кардинально разного. Есть условие. Есть вознаграждение при выполнении условия. Всё. Остальное - детали, атрибуты задания, которые различаются на стадии логики обработки, и ничем не различаются на стадии хранения.

При формализации задания один из главных моментов - остановиться на правильном уровне детализации.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
implements
Дата 21.10.2014, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akina @  21.10.2014,  09:51 Найти цитируемый пост)
Нет в них ничего кардинально разного.

возможно, но как я буду различать на стадии создания логики в коде, что и куда прибавлять, проверять и т.д.
к примеру 
1.собрать 100 палок
2.продать 50 палок
3.купить 10 палок

как я пойму что 1-собрать, 2-продать,3-купить
и таких фишек куча

хотя это уже не к БД вопрос =)
а так да 

Цитата(Akina @  21.10.2014,  09:51 Найти цитируемый пост)
остановиться на правильном уровне детализации. 


жаль приблизительных примеров нет или диаграмм =)
PM MAIL   Вверх
Akina
Дата 21.10.2014, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(implements @  21.10.2014,  10:59 Найти цитируемый пост)
как я буду различать на стадии создания логики в коде

В коде, мать твою, ЧЕГО??? SQL-сервера? ясен пень, нет! значит, в коде клиентского приложения (клиентского по отношению к SQL-серверу, есссно). А клиентское приложение уже должно знать, что задание с кодом 123 - это собрать сотню палок. Оно же должно плюсить палки, и когда их наберётся сто - лезть на сервер с запросом кода действия по выполнению условия.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
implements
Дата 21.10.2014, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Akina,  Да, да гдет так, тока гибкости нет =) было 123, через год, по каким либо причинам(даже машинально перепутали при составлении) стало 256, и сиди думай, что не так!!

а так в принципе понятно, буду делать так.

Добавлено через 1 минуту и 2 секунды
Цитата(Akina @  21.10.2014,  11:07 Найти цитируемый пост)
В коде, мать твою, ЧЕГО??? SQL-сервера? ясен пень, нет! 

и так понятно было ЧЕГО

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


Советчик
****


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

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



Цитата(implements @  21.10.2014,  12:14 Найти цитируемый пост)
было 123, через год, по каким либо причинам(даже машинально перепутали при составлении) стало 256, и сиди думай, что не так!!

А для этого умные людит комментарии придумали. Комментарии в коде клиента, поле комментария (если недостаточно наименования и описания) в таблице... 
Не говоря уж о документировании, опытной эксплуатации, тестированиях всякческих...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
implements
Дата 22.10.2014, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akina @  21.10.2014,  14:44 Найти цитируемый пост)
А для этого умные людит комментарии придумали.

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

Ну да ладно, Вам  Akina,  спасибо, а остальное уже холивары начинаются.
PM MAIL   Вверх
Akina
Дата 22.10.2014, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



implements, я думаю, это следствие того, что СУБД не Ваш конёк. Ибо Ваш подход имхо типичен для программиста-процедурщика, редко сталкивающегося с программированием SQL - либо вся логика волочётся на клиента, либо на SQL-сервер хочется вынести то, чему на нём не место.

В частности, фраза
Цитата(implements @  21.10.2014,  12:14 Найти цитируемый пост)
было 123, через год, по каким либо причинам(даже машинально перепутали при составлении) стало 256

свидетельствует о незнании простого факта - уникальный индекс записи неизменен в течение всего срока жизни базы данных. Даже если запись с этим значением уникального индекса удалена.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
implements
Дата 22.10.2014, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akina @  22.10.2014,  08:15 Найти цитируемый пост)
что СУБД не Ваш конёк

Я этого и не отрицаю, будь бы мой конек, вероятность создание этой темы была бы, мизерная. 

Цитата(Akina @  22.10.2014,  08:15 Найти цитируемый пост)
программиста-процедурщика

не стоит делать таких выводов, с контекста моего опыта с SQL



Цитата(Akina @  22.10.2014,  08:15 Найти цитируемый пост)
свидетельствует о незнании простого факта - уникальный индекс записи неизменен в течение всего срока жизни базы данных. Даже если запись с этим значением уникального индекса удалена. 

согласен полностью, если это дело будет контролировать сама СУБД, но можно навредить к примеру ручками поменять запись, но это уже ответственность разработчика

Банально будет 1000+ заданий, не важно чего, и это надо поддерживать на стороне клиента, всегда помнить, что id=983, это значит "сделать то-то", пусть даже будут комментарии, все равно сложновато будет, ветвление проверок и т.д(что в принципе можно решить грамотным проектированием классов). Вообщем возможно другого подхода нет, буду дерзать этот.

P.S. Akina, просьба не ставить себя выше других и делать выводы по одной теме, все в чем-то сильны в чем-то слабы.

Это сообщение отредактировал(а) implements - 22.10.2014, 08:54
PM MAIL   Вверх
Akina
Дата 22.10.2014, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(implements @  22.10.2014,  09:52 Найти цитируемый пост)
все в чем-то сильны в чем-то слабы.

Вот уж с чем не приходит в голову спорить.

Цитата(implements @  22.10.2014,  09:52 Найти цитируемый пост)
Банально будет 1000+ заданий, не важно чего, и это надо поддерживать на стороне клиента, всегда помнить, что id=983, это значит "сделать то-то", пусть даже будут комментарии, все равно сложновато будет, ветвление проверок и т.д

В реальности именно так и строятся системы. Массив ссылок на функции, каждая из которых обрабатывает своё событие (задание), и вызов выбором адреса по индексу.
От нумерованного списка этих заданий всё одно не уйти. И помнить (а скорее хранить в документации) по-любому придётся.

Цитата(implements @  22.10.2014,  09:52 Найти цитируемый пост)
можно навредить к примеру ручками поменять запись, но это уже ответственность разработчика

Ну это не программная проблема, а административная.
К тому же мне лично крайне сложно придумать причину, по которой разработчик будет менять уникальный автоинкремент/ГУИД индекс записи. Который, по большому счёту, ему и видеть не положено, ибо синтетический ключ предназначен исключительно для работы подсистемы контроля целостности и непротиворечивости данных сервера БД. А у пользователя прав на просмотр, не говоря уж об изменении, этого поля не должно быть даже теоретически.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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

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

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

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

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

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


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

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

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

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

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


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

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


 




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


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

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