powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация Базы Данных
35 сообщений из 35, показаны все 2 страниц
Нормализация Базы Данных
    #37873537
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа программисты!
Создатю небольшую базу данных для игры. База должна содержать информацию о профилях (индекс, количество пройденных уровней, число заработанных апгредов и т.п.) причём в базе должна присутствовать информация о том сколько апгрейдов заработал профиль в том или ином уровне! то есть
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, но эта идея не особо радует т.к. при создании новых профилей придется создавать дополнительные таблицы.
Помогите оптимизировать базу безболезненно)))) Заранее спасибо
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateПомогите оптимизировать базу безболезненно

Я не вижу предпосылок к оптимизации. Зачем она Вам понадобилась?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873780
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда ещё нормализовывать? Итак 6НФ )
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873793
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы!
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873819
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, но тут явно есть какая-то зависимость... При удалении определенного уровня у профиля, нужно удалить и все последующие его уровни. Как и при вставке, должны быть вставлены все предшествующие. Гуру, просветите, что это за зависимость? )
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873828
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekbПри удалении определенного уровня у профиля, нужно удалить и все последующие его уровни. Как и при вставке, должны быть вставлены все предшествующие
Это ещё почему?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873829
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
при удалении профиля обнуляются значения всех пройденных уровней не более о какой вставке вы говорите?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873836
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов,

а... уровни не обязаны быть последовательными... Я почему-то решил, что в базе есть ещё такое упорядочивающее отношение:
Текущий уровеньСледующий уровень12233445......
Если уровни нельзя перескакивать, то что это за зависимость?

jazzmusicmate,

я имел ввиду удаление и вставку уровней. Например, человек прошел уровни с 1 по 5. Потом, вдруг, оказывается, что на 3 уровне он использовал чит, и мы решаем удалить информацию о прохождении этого уровня. Что делать с 4 и 5 уровнями? Или он каким-то образом пройдет 8-ой уровень, минуя 6 и 7. Текущая схема данных позволит нам вставить запись о 8-ом уровне, не вставляя 6 и 7. Это явная аномалия.


В принципе, вопрос больше теоретический )))
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873842
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
честно говоря не заморачивался по поводу слежений за пройденными уровнями с читами))
система работает следующим образом:
после прохождения каждого уровня игрока перебрасывает на сцену где он может выбрать уровень из списка т.е. каждый пройденый уровень открывает последующий
если игрок удаляет профиль то чистится соответствующая запись в таблице profiles и таблица levels-upgrades, которая хранит значения всех заработанных на каждом уровне апгрейдов.
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873844
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще я именно как раз заморачивался над тем как связать профиль из таблицы profiles и данные о количестве пройденных уровней с их апгрейдами. В итоге остановился всё таки на том, что буду при создании профиля создавать таблицу SQL -запросом которая в имени будет иметь id этого профиля(например если profileid=2 то таблица назовется levels-upgrade_2)
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873849
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmate,

нафига?? ) Чем
prof_idlevel_numupgrade_num не устраивает??
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873853
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно новичёк в работе с базами данных, но мне кажется что запрос удаляющий информацию из таблицы такой структуры будет выполнятся несколько дольше чем запрос чистящий таблицу привязанную к определенному профилю. Поправте меня господа если я ошибаюсь
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873858
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekbпозволит нам вставить запись о 8-ом уровне, не вставляя 6 и 7. Это явная аномалия
Разве? Если чел прошёл 8 уровень, не пройдя 7-й - это проблема игры, а не схемы данных. Схема должна поразумевать усточивость к небольшим изменениям в исходной постановке задачи.
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873864
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов,

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

А сколько миллионов уровней в твоей игре?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873872
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
конечно же миллионов нет и профилей также не миллионы единственное о чем я заморачивался так это об упорядоченности данных в БД да и с точки зрения ООП это звучит логичнее имхо
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873874
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateконечно же миллионов нет
Тогда нет и проблем с удалением записей из таблицы. Точка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873875
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateда и с точки зрения ООП это звучит логичнее имхоТогда заводи для каждого профиля отдельный класс, чоуж ))
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873878
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
отдельный класс для профиля имеется)
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873879
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmate,

для каждого профиля )
class Profile1 {}
class Profile2 {}
и т.д.

Грубо говоря (один) класс соответствует (одной) таблице, (один) экземпляр класса / объект соответствует (одной) строке таблицы.
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873887
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
класс имеет интерфейс в котором содержится данные профиля - этот класс 1
нет смысла создавать class Profile1, class Profile2 поскольку инициализация (или конструктор как вам будет угодно) будет менятся в зависимости от выбранного профиля - ведь невозможно играть одновеременно под несколькими профилями
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873895
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateкласс имеет интерфейс в котором содержится данные профиля - этот класс 1
нет смысла создавать class Profile1, class Profile2
Но какой-то смысл в создании отдельных таблиц на каждый профиль ты же нашёл... Вот и в
твоём ООП класс Profile1 имеет интерфейс профиля первого игрока, класс Profile2 имеет
интерфейс профиля второго игрока и т.д.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873896
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateнет смысла создавать class Profile1, class Profile2Тогда нет смысла создавать таблицы levels-upgrade_1, levels-upgrade_2 и т.д. Т.к. количество таблиц, грубо говоря, соответствует количеству классов.

И дело даже не в том, что человек не может играть одновременно под двумя профилями, а в том, что эти классы Profile1, Profile2 и т.п. один в один будут дублировать друг друга, они будут отличаться только названием. Как и таблицы levels-upgrade_1, levels-upgrade_2, ...
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873900
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
в том то и смысл что класс Profile сам создает дополнительную таблицу для своего экземпляра, и так же благополучно её удаляет при своём уничтожении. Но это не значит что мне нужно следить за свеми профилями одновременно поскольку этим занимается класс Profile
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873906
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmate,

а какие ещё классы у тебя есть? Чем они отличаются друг от друга?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873909
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
для внесения работы с БД сушествует еще 1 класс - синглтон который занимается обновлением информации в БД а также содержит екземпляр класса текущего профиля
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873914
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmate,

ага, т.е. у этого синглтона и профиля разные свойства, методы, разное назначение? Почему ты создал именно 2 класса, ни 1, ни 3, ни 10?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873918
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
классов на самом деле не 2 а гораздо более (враги, игрок, состояние игры и др) просто при помощи именно этих 2-ух я работаю с данными бд
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873943
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmate,

блин, по-моему, я проиграл ;( Новые классы и новые таблицы создаются по одним и тем же принципам. Если у тебя нет классов типа состояние игры 1, состояние игры 2, ..., игрок 1, игрок 2, игрок 3 ... то и таблиц совершенно одинаковых, но просто с разными номерами не должно быть.

Смысл базы данных в том, чтобы одинаковые данные хранить в одной таблице.

Ну, или, допустим, понадобится сделать какой-нибудь рейтинг игроков: список людей с количеством пройденных уровней. Если у каждого человека будет отдельная таблица с пройденными уровнями, то как ты построишь этот список?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873949
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb,
не думал пока об этом но думаю что сформирую это дело sql запросом - не думаю что это будет сложно
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873955
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekbjazzmusicmate,

Если у тебя нет классов типа состояние игры 1, состояние игры 2, ..., игрок 1, игрок 2, игрок 3 ... то и таблиц совершенно одинаковых, но просто с разными номерами не должно быть.

согласен именно по этому и обратился с таким вопросом поскольку не знал как правильно строит структуру бд
какие предложения?
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37873958
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekbно если исходная постановка подразумевает игру с упорядоченными уровнями, то отмена этой упорядоченности, имхо, уже достаточно сильное изменение
Совершенно нет. Это ерунда с точки зрения хранилища.

Ares_ekbНе факт, что пропущенные уровни - это проблема игры
Факт. Нельзя всю логику вешать на хранилище, так как при её изменении придётся менять схему БД, а это как правило неприятная операция, связанная с вопросом переноса данных, проверки крректности операции и прочего. Если в простых случаях ещё прокатит, то в чуть более сложных наступает армагеддец, если заранее не заложить такую возможность.

Ares_ekbраз схема данных их допускает, она уже не идеальна )
Глупости это всё. Вопросы контроля целостности данных вполне могут быть отделены от схемы в привычном её понимании. В данной ситуации, если надо каскадное удаление записей или каскадную вставку, или наоборот restrict, проще это сделать триггером. Можно конечно и без триггера, а ссылкой на предыдущий уровень в ключе, но тогда каскадная вставка будет через задницу, и вообще это будет весьма тупо с точки зрения возможной модификации условий игры.
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37874011
jazzmusicmate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо господа! думаю тему можно закрывать - вроде разобрался
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37874150
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов,

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

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

Мне интересно 1) что это за вид зависимости и 2) как его можно устранить.
...
Рейтинг: 0 / 0
Нормализация Базы Данных
    #37874151
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jazzmusicmateкакие предложения?Если в нескольких таблицах одинаковые или очень похожие столбцы, то в большинстве случаев их нужно объединять в одну таблицу. Также как и в ООП. Если у двух классов практически идентичные свойства и методы, то это один класс.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация Базы Данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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