Выбор дизайна базы данных Django - PullRequest
1 голос
/ 21 декабря 2011

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

class WhatsNew(models.Model):
    author = models.ForeignKey(User)
    model_update = models.CharField("Database Table", max_length=100)
    object_id = models.IntegerField("Object ID")
    object_name = models.CharField("Object Name", max_length=100)
    changed = models.TextField("Fields Updated", blank=True, null=True)
    pub_date = models.DateTimeField("Date/Time of Update", auto_now_add=True)

Я хочу, чтобы пользователь мог видеть все сделанные им изменения. Я бы сделал это, запросив приведенную выше таблицу, отфильтровав автора. Но кроме того, я хочу, чтобы пользователь увидел список внесенных им изменений, сгруппированных по идентификатору. Так, например, если пользователь 12345 отредактировал объект 2-1, затем 3-2, затем снова 2-1, затем 4-4, я хочу, чтобы пользователь мог видеть список (2-1, 3-2, 4-4), время, когда они модифицировали объект, и время, когда объект был изменен кем-либо.

Должен ли я собрать все эти данные в отдельную таблицу или попытаться запросить их из таблицы WhatsNew? Я думаю, что я должен записать его в новую таблицу, чтобы избежать, возможно, дорогостоящего запроса, но я не хочу дублировать информацию, которая уже доступна в базе данных.

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