Удалить данные или просто пометить их как удаленные? - PullRequest
2 голосов
/ 27 ноября 2010

Я создаю веб-сайт, который позволяет людям создавать словарные уроки. При создании урока создаются новости, которые ссылаются на урок. Когда другой пользователь практикует урок, он также сохраняет ссылку на него вместе с результатом практики.

Мой вопрос: что делать, когда пользователь решает удалить урок?

Варианты, которые я рассмотрел:

  • На самом деле удалить урок из базу данных и удалить все ссылки на новости, практика результаты и т. д.
  • Просто отметьте его как удаленный и исключить ссылку из ссылки новости, результаты и т. д.

Что вы думаете? Если данные никогда не будут удалены, аля Facebook? Следует ли избегать ссылок все вместе?

Кстати, я использую Google App Engine (python / datastore). Насколько я вижу, объект db.ReferenceProperty не имеет значения None, когда указанный объект удален?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 ноября 2010

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

Сказав, что нет причин предотвращать «жесткое удаление» (когда данные фактически удаляются) в качестве административной функции, помогающей исправить ошибки.

0 голосов
/ 27 ноября 2010

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

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

Я бы начал с первого и изменил бы его позже, если потребуется.Вот почему:

  • Если вы не используете мягкое удаление, предположите, что они не будут работать так, как этого требуют будущие запросы.Вам все равно придется их переписать.
  • Если вы их используете, предположите, что никто не использует функцию, которая их использует.Теперь вы проделали большую работу и занялись обслуживанием того, что никого не волнует.
  • Если вы создадите их, вы обнаружите, что создаете функцию для их использования.См. Выше.
  • Если вы не создаете их, вы всегда можете создать их позже, когда будете лучше знать, чего действительно хотят пользователи вашей системы.

Не Создание мягких удалений дает вам больше возможностей в будущем. Опции имеют значение.Варианты истекают.Никогда не совершайте рано, если вы не знаете, почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...