2016-05-31 4 views
0

Я пишу обозреватель пошаговой RPG. Почти каждая часть игры, включая врагов, предметы и уровни, представляет собой строки в таблице SQL, соответствующей прототипу этого объекта. Эти же данные доступны в формате Wiki, что позволяет пользователям свободно редактировать эти данные с учетом некоторых правил сообщества. Однако, если в этот момент игра была вживую, и я играл, и какой-то тролль решил сделать здоровье следующего босса «более 9000!», Это было бы разрушительно для моей кампании, и потери, которые я испытал, были бы необратимыми. Имея это в виду, я хочу реализовать своего рода «систему выпуска» для игровых данных. Пользователи могут выбрать для своего клиента для получения данных по мере их обновления или для получения данных, которые были просмотрены и протестированы в течение первого месяца. Какой был бы лучший способ сделать это (хотя я уверен, что правильный ответ: «скопируйте свою базу данных раз в месяц»)?Как я могу получить данные из базы данных SQL, как это было в определенный момент времени?

+0

Не можете ли вы изменить версию? – plalx

+0

Сначала я вижу два подхода. Вы можете либо сохранить историческую таблицу для всех изменений, как систему управления версиями, либо сохранить два значения для каждого атрибута: * хорошее и проверенное * одно и * возможно отредактированное и, возможно, небезопасное * значение. Первое, что вам нужно сделать, это решить, что вам нужно, как вы хотите, чтобы система работала. Я бы не рекомендовал копировать всю БД, оставить это для резервных копий. – Andrew

ответ

0

Для вашей цели вы хотите поместить логический столбец в своих «проверенных» таблицах и в зависимости от того, в каком режиме вы играете, запросите либо значение, для которого «проверено» истинно, либо значение, для которого «проверено» «неверно.

Изменения в значениях должны храниться в их собственных таблицах, которые добавляются к значениям прямого доступа, для которых «проверено» является ложным. Раз в месяц тестирование проверяет эти изменения и решает, какие из них должны оставаться. Затем изменения могут быть очищены, если вы предполагаете, что процесс обновления, который вы описали, является постоянным.