Steve のデータモデリング:バージョン管理の戦略を使いこなす
はじめに:
このブログでは、データモデリングでレコードのバージョン管理を扱う二つの異なる方法を探り、レコードとその子レコードの複数のバージョンを効率よく管理するための知見と戦略をお届けします。
こうした戦略は、バージョン管理が重要なオブジェクトモデルに取り組む設計者にとって欠かせません。
レコードのバージョン管理の方法を理解する
レコードのバージョン管理には、主に二つの方法があります。
- 対等レコード方式
- 子バージョン方式
それぞれの方法を掘り下げ、実装、利点、欠点を理解しましょう。
対等レコード方式
対等レコード方式では、レコードの各バージョンを、最上位のオブジェクトの下に別々の対等なレコードとして作ります。この方法は単純で、Salesforce が商談の下に見積を実装している方法がその例です。

実装:
各バージョンは、最上位のオブジェクトの下の別々のレコードです。
レコードの一つを主として示すことはできますが、すべてのバージョンがリストビュー、関連リスト、レポートに表示されます。
利点:
- 単純でわかりやすく実装できます。
欠点:
- すべてのバージョンが見えるので、区別しにくくなります。
- バージョン間の明確なつながりや監査証跡がありません。
きちんと強制しないと、主のレコードや作業中のレコードが複数できてしまうかもしれません。
子バージョン方式
子バージョン方式では、2階層のオブジェクトを作ります。最上位の親オブジェクトと、バージョンごとの子オブジェクトです。この方法なら、すっきりしたバージョン管理と変更履歴の仕組みが実現します。

実装:
- 最上位のオブジェクトが構成を表し、子オブジェクトが各バージョンを表します。
- 各子バージョンは自動で採番され、ステータス(例:アーカイブ済み、有効、保留中)を持ちます。
- 有効なバージョンはロックされて本番で使われ、下書きのバージョンは編集できます。
- 下書きを有効化すると、それが有効になり、前の有効なバージョンはアーカイブされます。
利点:
- 明確な監査証跡と履歴の記録が残ります。
- 一度に有効なバージョンは一つだけになります。
- アーカイブされたレコードは、変更されない履歴の記録になります。
欠点:
- 人によっては複雑に見えるかもしれませんが、フローのような重要なプロセスには必要です。
Salesforce の実装例

Salesforce は、フローで似た方法を実装しています。Salesforce には最上位のフローオブジェクトがあり、その子としてフローのバージョンがあります。各バージョンは自動で採番され、各フローとその作成日、有効化日の詳しい履歴が残ります。
この実装により、一度に有効なフローは一つだけになり、信頼できる効率的なバージョン管理の仕組みになっています。
セクション5:まとめ
レコードのバージョン管理に正しい方法を理解して選ぶことは、データモデリングで欠かせません。対等レコード方式は単純ですが、子バージョン方式はより多くの制御と効率的な監査証跡を提供します。Salesforce の実装を学び、自分のデータモデリングの課題を考えれば、ニーズに最も合う方法を選べます。
お楽しみに!
さらなる知見やヒントは、この www.SteveTechArc.com と YouTube チャンネル @SteveTechArc (opens in a new tab) で。チャンネル登録して、私たちと一緒にデータモデリングの腕を磨きましょう!
アーキテクト仲間やアーキテクトを目指す人たちと面白い考えを共有して、世界を変える手助けを!
STA 2.1