Как релизовать хранение истории сущности в реляционной базе?

Привет.

Стоит задача сделать хранение историй некой сущности. Это как строка в СУБД, имеющая UID, так и связи с другими таблицами.
Никогда подобные истории не проектировал.
Пока вижу только то, что "история" с точки зрения РСУБД - это все те же стандарные строки и связи, только с новыми ID. Но, что бы была возможность вытащить историю по документу, полагаю, надо на уровне ВСЕХ сущностей, которые будут задействованы в системе, делать ВТОРОЙ идентификатор, который будет уникален в рамках одной версии.

Есть какие-то подводные камни в этом вопросе? Может кто опытом поделиться, как лучше делать подобные вещи?
  • Вопрос задан
  • 357 просмотров
Пригласить эксперта
Ответы на вопрос 3
duhbox
@duhbox
Вот тут
https://habr.com/ru/post/101544/
короткое и прозрачное описание разных вариантов организации версионности.
Ответ написан
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Смотря как это история будет использоваться потом. Если просто для того, что бы иметь возможность восстановить данные или посмотреть кто и что изменил. То простым вариантом будет сбор сущности со всеми связями в объект json и сохранение в таблице типа
id | related_id | date_create | user_id | json_data
Ответ написан
BojackHorseman
@BojackHorseman
...в творческом отпуске...
делаете еще одно отношение с тем же набором атрибутов, суррогатным ключом и полем modified_date. триггером before update записываете в него текущее состояние атрибутов и дату изменения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Migo group Ростов-на-Дону
от 60 000 до 90 000 руб.
Элерон Москва
от 120 000 до 160 000 руб.
19 мая 2019, в 06:01
1000 руб./в час
19 мая 2019, в 04:21
8000 руб./за проект
19 мая 2019, в 00:35
3000 руб./за проект