マスターデータとトランザクションデータはコピペの関係

特にトランザクションデータというものが判らない方へ。

開発に携わっているとチームの中でマスターデータと
トランザクションデータという言葉が飛び交います。

ただ、この二つの違いを明確にしないまま、
なんとなくの理解で会話をすませていないでしょうか。

そんな、私のような経験を持つ方向けの記事になります。

この記事で言いたいこと

  • トランザクションデータはマスターデータの影響を受けたくないデータ
  • マスターデータはコピーされる、トランザクションデータはペーストされる

トランザクションデータとマスターデータは両方増える

トランザクションデータとマスターデータを調べると
大枠こんな感じで特徴が出てくると思います。

  • マスターデータ:ビジネスをするためのの基礎情報
  • トランザクションデータ:日々ビジネスによって増えた情報

私は正直ピンときませんでした。

というのも、担当していたサービスは、
マスターデータが一日数万レコード増えていましたので

「日々ビジネスによって増えた情報」だけだと
トランザクションデータとマスターデータの違いがつかめず混乱しました。

そこで今回は

マスターデータはコピーされるデータ、
トランザクションデータはペーストされないと困るデータをもつ

という切り口でトランザクションデータを理解したいと思います。

トランザクションデータはペーストされないと困るデータをもつ

マスターデータとトランザクションデータについて具体的な例は
商品と注文になります。

例えば、

8/1から、高級メロンを一つ10,000円の商品として売り始めます。
しかし売れ行きが予想外に好調だったので、
8/8から、ひとつ15,000円で販売するようにしました。

このとき、8/2に高級メロンを10,000円で2つ注文すると
商品と注文のデータはこのようになります。

ここでペーストされないと困るデータに注目すると
「商品名」と「商品単価」になります。

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

8/2に最高級メロンを10000円で注文したはずの注文データが
8/8以降では15,000円になってしまいました。

これでは、クレームが殺到しますね。

クレームにならないように「正しい情報」にするには
最初の10,000円という金額を注文データのほうで持っている必要があります。

トランザクションデータはマスターデータが変化しようとも
その影響は受けたくないデータ
ということです。

「情報の正しさ」のため「日々増える情報」

高級メロンの例から、マスターデータを参照せずにトランザクションデータに
ペーストするのは情報の正しさを担保するということがわかりました。

これはトランザクションデータの冒頭の特徴

  • トランザクションデータ:日々ビジネスによって増えた情報

につながります。

「正しい情報」を担保するためにペーストしていくと、
必然、ペーストされた分だけデータが増えます

「日々増えていく」という特徴は、情報の正しさを担保するための
結果だと考えられないでしょうか。

まとめ

結論まとめます。

  • トランザクションデータはマスターデータの影響を受けたくないデータ
  • マスターデータはコピーされる、トランザクションデータはペーストされる

情報を正しく保とうとすると、ペーストが必要になる場面がでてきます。

そのペーストした先こそトランザクションデータと呼べるデータです。

テーブル設計の際、パフォーマンスなどのことを考えてしまうと
参照することに考えが引っ張られます。

参照するということは、使用するデータ量は小さくなり、
またパフォーマンスが劣化しづらくなります。

参照はメリットがあるんです。

しかしながら、トランザクションデータにその考え方を持ち込んでしまうと
情報の正しさが犠牲になります。

「トランザクションデータはマスターデータ参照すると困るデータ」

このような考え方はいかがでしょうか。