Я бы оставил ту же таблицу, но добавил бы поле dateEffective
, а затем создавал бы новую строку каждый раз, когда инструмент менялся. Затем при запросе таблицы вы можете получить версию инструмента на определенную дату, используя:
SELECT * FROM tools WHERE id=@id AND dateEffective<@thisDate ORDER BY dateEffective DESC LIMIT (0,1)
РЕДАКТИРОВАТЬ Вы можете создать другое поле с именем toolVersionId
в качестве первичного ключа.
РЕДАКТИРОВАТЬ 2 В ответ на ваш комментарий, как насчет:
SELECT *
FROM tools t1
WHERE toolVersionId IN (SELECT toolVersionId
FROM tools t2
WHERE t2.id = t1.id
ORDER BY t2.dateEffective DESC
LIMIT (0,1)
);