Устройство | Серийный | Дата получения | Местоположение
Ноутбук | 12349647 | 21.03.25 | Склад
Ноутбук | 12349647 | 15.01.25 | Сотрудник_1
Ноутбук | 12349647 | 30.08.24 | Склад
Ноутбук | 12349647 | 22.05.24 | Сотрудник_2
Такой способ записи с опорой на дату для построения исторической цепочки архитектурно не устройчив.
Чтобы историческая цепочка стала устойчивой, нужно вводить указатель на следующую или предыдущую запись.
ID | Устройство | Серийный | Дата получения | Местоположение | Следующий ID
11 | Ноутбук | 12349647 | 21.03.25 | Склад | null
8 | Ноутбук | 12349647 | 15.01.25 | Сотрудник_1 | 11
5 | Ноутбук | 12349647 | 30.08.24 | Склад | 8
1 | Ноутбук | 12349647 | 22.05.24 | Сотрудник_2 | 5
При всех CRUD операциях работы с историческим списком нужно корректно записывать next_id в предыдущей записи.
Можно произвольно перезаписывать все не служебные поля (кроме id и next_id), вплоть до серийника, и это не разрушит историческую цепочку.
Последняя запись в исторической цепочке всегда будет next_id is null.
Чтобы действительно корректно получать историческую цепочку, нужен рекурсивный запрос, но в простейших случаях достаточно сортировать цепочку по next_id.