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

Привет.

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

Есть какие-то подводные камни в этом вопросе? Может кто опытом поделиться, как лучше делать подобные вещи?
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ответы на вопрос 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 записываете в него текущее состояние атрибутов и дату изменения.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
INOBITEC Воронеж
от 55 000 до 80 000 ₽
ITECO Москва
от 120 000 ₽
ГК «СТАРТЕКС» Новосибирск
от 120 000 до 150 000 ₽
21 февр. 2020, в 21:48
12000 руб./за проект
21 февр. 2020, в 21:45
12000 руб./за проект