データベースに登録された情報を変更する際、変更前の情報も確認できるようにコピーとして保存しておこうとしています。
現状は登録情報と履歴は同じテーブル posts で管理し、変更履歴のレコードだけは「parent_id」として最新のデータのIDをもたせることで区別しています。parent_id が null のものは最新の情報となります。
最新のレコードと履歴のレコードを並べて表示することでタイトルなどに変更があったことを知ることができるようにするつもりです。
テーブルが1つだけならこれでも実現できるのですが、1つのレコードは複数の画像を持つため、images テーブル側に関連するレコードの id を持たせています。
この場合履歴のレコードを見ても画像に関する情報は含まれていないため、画像に変更があったかどうかを知ることができません。
履歴を保存する際に変更前の関連画像のIDすべてをJSONなどの形で posts.images カラムに保管すれば一応変更の有無を知ることはできますがあまりきれいなやり方ではないような感じがします。
将来的に画像以外に関連するテーブルが増えていく可能性も考慮するならどういった設計にするのがいいのでしょうか?
追記
テーブル構造は概ね下記のようになっています
テーブル posts
id, title, content, parent_id
テーブル images
id, post_id, url
回答2件
あなたの回答
tips
プレビュー