Я не знаю общепринятого названия, но для этого вам не нужно имя. Если он чувствует себя хорошо, кодируйте его.
Я делал это по случаю. Обычно у меня есть какой-то номер версии или дата обновления. Теоретически вы можете написать запросы, чтобы найти запись последней версии, выберите max (version_stamp) или некоторые из них. На практике это боль, обычно требующая внутреннего запроса, чтобы найти нужную запись, а затем внешний запрос, чтобы перечитать эту запись. Таким образом, это один из немногих случаев, когда я переношу лишние данные и добавляю «текущий» флаг.
Возможно, вы захотите сделать первичный ключ равным id + current, так что вы можете найти текущую запись без сканирования.
Альтернатива, которую я использовал один раз, и я думаю, что мне нравится, но я все еще обсуждаю: есть одна таблица с полными данными и уникальным идентификатором. Иметь другую таблицу с идентификатором «reference», а затем FK для полных данных. Например:
customer_data (customer_data_id*, date_stamp, name, address, credit_card_number, whatever)
customer (customer_number*, customer_data_id)
Затем, когда customer_data обновляется, мы создаем новую запись (с новым и несвязанной customer_data_id), дать ему date_stamp и обновить клиент, чтобы указать на этот новый рекорд.
Каждый раз, когда мы хотим, чтобы customer_data, мы читаем его, присоединяясь к клиенту.
select name, address
from customer c
join customer_data d on d.customer_data_id=c.customer_data_id
where [email protected]_number
Google «таблицы sqlingingings sql» и более общие «временные данные sql». – philipxy
Плохой дизайн. Каким будет ваш первичный ключ? Я предлагаю нечто вроде 'things_current (id PK, version FK)' и 'things_history (id PK/FK, version PK, name)'. – reaanb
Эта статья объясняет, что я ищу, она называется «Медленное изменение размера» https://en.wikipedia.org/wiki/Slowly_changing_dimension –