マスターデータとトランザクションデータはコピペの関係
特にトランザクションデータというものが判らない方へ。
開発に携わっているとチームの中でマスターデータと
トランザクションデータという言葉が飛び交います。
ただ、この二つの違いを明確にしないまま、
なんとなくの理解で会話をすませていないでしょうか。
そんな、私のような経験を持つ方向けの記事になります。
目次
この記事で言いたいこと
- トランザクションデータはマスターデータの影響を受けたくないデータ
- マスターデータはコピーされる、トランザクションデータはペーストされる
トランザクションデータとマスターデータは両方増える
トランザクションデータとマスターデータを調べると
大枠こんな感じで特徴が出てくると思います。
- マスターデータ:ビジネスをするためのの基礎情報
- トランザクションデータ:日々ビジネスによって増えた情報
私は正直ピンときませんでした。
というのも、担当していたサービスは、
マスターデータが一日数万レコード増えていましたので
「日々ビジネスによって増えた情報」だけだと
トランザクションデータとマスターデータの違いがつかめず混乱しました。
そこで今回は
マスターデータはコピーされるデータ、
トランザクションデータはペーストされないと困るデータをもつ
という切り口でトランザクションデータを理解したいと思います。
トランザクションデータはペーストされないと困るデータをもつ
マスターデータとトランザクションデータについて具体的な例は
商品と注文になります。
例えば、
8/1から、高級メロンを一つ10,000円の商品として売り始めます。
しかし売れ行きが予想外に好調だったので、
8/8から、ひとつ15,000円で販売するようにしました。
このとき、8/2に高級メロンを10,000円で2つ注文すると
商品と注文のデータはこのようになります。

ここでペーストされないと困るデータに注目すると
「商品名」と「商品単価」になります。
なぜ困るかを説明するために「商品単価」をコピペせずに「商品ID」経由で
マスターデータを参照するようしてみましょう。

8/2に最高級メロンを10000円で注文したはずの注文データが
8/8以降では15,000円になってしまいました。
これでは、クレームが殺到しますね。
クレームにならないように「正しい情報」にするには
最初の10,000円という金額を注文データのほうで持っている必要があります。
トランザクションデータはマスターデータが変化しようとも
その影響は受けたくないデータということです。
「情報の正しさ」のため「日々増える情報」
高級メロンの例から、マスターデータを参照せずにトランザクションデータに
ペーストするのは情報の正しさを担保するということがわかりました。
これはトランザクションデータの冒頭の特徴
- トランザクションデータ:日々ビジネスによって増えた情報
につながります。
「正しい情報」を担保するためにペーストしていくと、
必然、ペーストされた分だけデータが増えます。
「日々増えていく」という特徴は、情報の正しさを担保するための
結果だと考えられないでしょうか。
まとめ
結論まとめます。
- トランザクションデータはマスターデータの影響を受けたくないデータ
- マスターデータはコピーされる、トランザクションデータはペーストされる
情報を正しく保とうとすると、ペーストが必要になる場面がでてきます。
そのペーストした先こそトランザクションデータと呼べるデータです。
テーブル設計の際、パフォーマンスなどのことを考えてしまうと
参照することに考えが引っ張られます。
参照するということは、使用するデータ量は小さくなり、
またパフォーマンスが劣化しづらくなります。
参照はメリットがあるんです。
しかしながら、トランザクションデータにその考え方を持ち込んでしまうと
情報の正しさが犠牲になります。
「トランザクションデータはマスターデータ参照すると困るデータ」
このような考え方はいかがでしょうか。