Я всегда был поклонником использования одной таблицы вместо того, чтобы разбивать ее на «активную» таблицу и таблицу «истории». Я поместил 4 столбца в эти таблицы, все отметки времени: созданы, удалены, начало, конец. «создано» и «удалено» довольно очевидно. Метки времени начала и конца предназначены для случаев, когда запись фактически была «активной» записью. Текущая активная запись будет иметь время «начала» до now()
и «конца» NULL
. Разделяя «созданное» и «начальное» время, вы можете запланировать изменения, которые произойдут в будущем.
Этот дизайн, в отличие от дизайна с двумя таблицами, позволяет легко писать запросы, которые будут автоматически работать с нужными данными. Предположим, что ваша таблица хранит налоговую ставку с течением времени ... вы не хотите, чтобы все ваши запросы, использующие налоговые ставки в своих расчетах, имели дополнительную сложность решения искать материал в таблице истории при обработке старых счетов, пример ... вы можете просто посмотреть действующую налоговую ставку на момент создания счета-фактуры в одном запросе, независимо от того, текущая налоговая ставка или нет.
Эта идея изначально не моя (хотя я сам заново придумал грубую идею, прежде чем читать о ней) ... подробное обсуждение этой идеи можно найти в этой онлайновой книге .