|
|
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Добрый день, господа программисты! Создатю небольшую базу данных для игры. База должна содержать информацию о профилях (индекс, количество пройденных уровней, число заработанных апгредов и т.п.) причём в базе должна присутствовать информация о том сколько апгрейдов заработал профиль в том или ином уровне! то есть prof_id level_num upgrade_num 1 1 R 1 2 R 1 3 R 2 1 R 2 2 R 2 3 R 3 1 R 3 2 R 3 3 R где R - случайное число (к примеру от 0 до 10) Последнее что пришло в голову - это создать для каждого профиля таблицу levels-upgrades, но эта идея не особо радует т.к. при создании новых профилей придется создавать дополнительные таблицы. Помогите оптимизировать базу безболезненно)))) Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 16:40 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateПомогите оптимизировать базу безболезненно Я не вижу предпосылок к оптимизации. Зачем она Вам понадобилась? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 18:29 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Куда ещё нормализовывать? Итак 6НФ ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 18:32 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 18:40 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Блин, но тут явно есть какая-то зависимость... При удалении определенного уровня у профиля, нужно удалить и все последующие его уровни. Как и при вставке, должны быть вставлены все предшествующие. Гуру, просветите, что это за зависимость? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:01 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekbПри удалении определенного уровня у профиля, нужно удалить и все последующие его уровни. Как и при вставке, должны быть вставлены все предшествующие Это ещё почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:14 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekb, при удалении профиля обнуляются значения всех пройденных уровней не более о какой вставке вы говорите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:18 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, а... уровни не обязаны быть последовательными... Я почему-то решил, что в базе есть ещё такое упорядочивающее отношение: Текущий уровеньСледующий уровень12233445...... Если уровни нельзя перескакивать, то что это за зависимость? jazzmusicmate, я имел ввиду удаление и вставку уровней. Например, человек прошел уровни с 1 по 5. Потом, вдруг, оказывается, что на 3 уровне он использовал чит, и мы решаем удалить информацию о прохождении этого уровня. Что делать с 4 и 5 уровнями? Или он каким-то образом пройдет 8-ой уровень, минуя 6 и 7. Текущая схема данных позволит нам вставить запись о 8-ом уровне, не вставляя 6 и 7. Это явная аномалия. В принципе, вопрос больше теоретический ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:34 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekb, честно говоря не заморачивался по поводу слежений за пройденными уровнями с читами)) система работает следующим образом: после прохождения каждого уровня игрока перебрасывает на сцену где он может выбрать уровень из списка т.е. каждый пройденый уровень открывает последующий если игрок удаляет профиль то чистится соответствующая запись в таблице profiles и таблица levels-upgrades, которая хранит значения всех заработанных на каждом уровне апгрейдов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:41 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
вообще я именно как раз заморачивался над тем как связать профиль из таблицы profiles и данные о количестве пройденных уровней с их апгрейдами. В итоге остановился всё таки на том, что буду при создании профиля создавать таблицу SQL -запросом которая в имени будет иметь id этого профиля(например если profileid=2 то таблица назовется levels-upgrade_2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:45 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmate, нафига?? ) Чем prof_idlevel_numupgrade_num не устраивает?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:51 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
я конечно новичёк в работе с базами данных, но мне кажется что запрос удаляющий информацию из таблицы такой структуры будет выполнятся несколько дольше чем запрос чистящий таблицу привязанную к определенному профилю. Поправте меня господа если я ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 19:56 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekbпозволит нам вставить запись о 8-ом уровне, не вставляя 6 и 7. Это явная аномалия Разве? Если чел прошёл 8 уровень, не пройдя 7-й - это проблема игры, а не схемы данных. Схема должна поразумевать усточивость к небольшим изменениям в исходной постановке задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:12 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, но если исходная постановка подразумевает игру с упорядоченными уровнями, то отмена этой упорядоченности, имхо, уже достаточно сильное изменение. Не факт, что пропущенные уровни - это проблема игры, раз схема данных их допускает, она уже не идеальна ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:22 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateмне кажется что запрос удаляющий информацию из таблицы такой структуры будет выполнятся несколько дольше чем запрос чистящий таблицу привязанную к определенному профилю. А сколько миллионов уровней в твоей игре? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:27 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, конечно же миллионов нет и профилей также не миллионы единственное о чем я заморачивался так это об упорядоченности данных в БД да и с точки зрения ООП это звучит логичнее имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:31 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateконечно же миллионов нет Тогда нет и проблем с удалением записей из таблицы. Точка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:32 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateда и с точки зрения ООП это звучит логичнее имхоТогда заводи для каждого профиля отдельный класс, чоуж )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:34 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekb, отдельный класс для профиля имеется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:35 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmate, для каждого профиля ) class Profile1 {} class Profile2 {} и т.д. Грубо говоря (один) класс соответствует (одной) таблице, (один) экземпляр класса / объект соответствует (одной) строке таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:37 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Ares_ekb, класс имеет интерфейс в котором содержится данные профиля - этот класс 1 нет смысла создавать class Profile1, class Profile2 поскольку инициализация (или конструктор как вам будет угодно) будет менятся в зависимости от выбранного профиля - ведь невозможно играть одновеременно под несколькими профилями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:42 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateкласс имеет интерфейс в котором содержится данные профиля - этот класс 1 нет смысла создавать class Profile1, class Profile2 Но какой-то смысл в создании отдельных таблиц на каждый профиль ты же нашёл... Вот и в твоём ООП класс Profile1 имеет интерфейс профиля первого игрока, класс Profile2 имеет интерфейс профиля второго игрока и т.д. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:49 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
jazzmusicmateнет смысла создавать class Profile1, class Profile2Тогда нет смысла создавать таблицы levels-upgrade_1, levels-upgrade_2 и т.д. Т.к. количество таблиц, грубо говоря, соответствует количеству классов. И дело даже не в том, что человек не может играть одновременно под двумя профилями, а в том, что эти классы Profile1, Profile2 и т.п. один в один будут дублировать друг друга, они будут отличаться только названием. Как и таблицы levels-upgrade_1, levels-upgrade_2, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:50 |
|
||
|
Нормализация Базы Данных
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, в том то и смысл что класс Profile сам создает дополнительную таблицу для своего экземпляра, и так же благополучно её удаляет при своём уничтожении. Но это не значит что мне нужно следить за свеми профилями одновременно поскольку этим занимается класс Profile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2012, 20:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37873895&tid=1541616]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 322ms |

| 0 / 0 |
