Предположим, у меня есть 3 таблицы,
Column(ID(Primary Key),name, created_by, description(FK), table_name)
ID | name | created_by | description | table_name
------------------------------------------
1 | c1 | nobody | 1 | A
------------------------------------------
2 | c2 | abc | 2 | B
Description(ID(Primary Key), data)
ID | Data
---------
1 | description1
---------
2 | description2
Formula(ID(Primary Key, name, column_id(Foreign Key))
ID | Name | column_id
---------------------
1 | f1 | 1
---------------------
2 | f2 | 2
Мне нужно добавить управление версиями в таблицу столбцов, которая содержит новую версию каждый раз, когда меняются столбцы или таблица формул.
Я планирую построить основную таблицу, в которой будут столбцы, подобные этому,
History_Column(ID(Primary Key), column_id, column_created_by, column_edited_by, column_desc, column_table_name, formula_name)
ID | column_id | column_created_by | column_edited_by | column_desc | column_table_name | formula_name
------------------------------------------------------------------------------------------------------
1 | 1 | nobody | nobody | description1 | A | f1
2 | 2 | abc | abc | description2 | B | f2
3 | 1 | nobody | abc | changed_data | A | f1
4 | 1 | nobody | cde | changed_data | B | f1
Description(ID(Primary Key), data)
ID | Data
---------
1 | changed_data
---------
2 | description2
Column(ID(Primary Key), created_by, edited_by, description(FK), table_name, version_id)
ID | created_by | edited_by | description | table_name | version_id
--------------------------------------------------------------------
1 | nobody | cde | 1 | B | 3
2 | abc | abc | 2 | B | 1
Все изменения будут обновляться непосредственно в таблицах, за исключением того, что я храню все данные в таблице истории.
Это хороший подход, я не уверен, как обращаться с внешними ключами на месте. Может кто-нибудь помочь мне решить эту проблему?