□投稿者/ ONnoji -(2018/10/21(Sun) 18:31:40)
| 2018/10/21(Sun) 22:00:42 編集(投稿者) 2018/10/21(Sun) 18:41:37 編集(投稿者) 2018/10/21(Sun) 18:33:25 編集(投稿者) 2018/10/21(Sun) 18:32:03 編集(投稿者)
> 寄り道コメントへの質問です(^^;) > > ところでここで言う「トランザクション」の意味というか、 > 「マスターとトランザクション」の違いについて、ざっくりと > 教えていただけますか? > > 余のボキャブラリに「トランザクション」はなかったので、 > ネットでちょっと当たってみたが、よく判らなかった(;_;)。
まず、「トランザクション」でちょん切ってしまうと、
・トランザクション・プロセッシング(トランザクション処理)※RDBMSの標準機能
と、
・トランザクションデータ(マスタデータと対極をなします)※データの性質の区別
との、どちらなのか分からなくなりますので、省略しないことをおススメします。 今回取り上げているのは、トランザクションデータとマスタデータの方です。
新規に書くのは大変なので以下に引用させていただきます。
こちら ↓ 【引用】フォームアプリケーションの練習をする ( ソフトウェア ) - ブログ版−桐のイベント道場 - Yahoo!ブログ https://blogs.yahoo.co.jp/siliconvalley_bay_7565/58233113.html
マスターデータとトランザクションデータを区別することが重要です。
この点が理解できていないと、変てこなデータ処理をしてしまいます。
こういう基本的な事柄は、桐関係の掲示板やHPで扱われることが殆どありません。
しかし、実はここがキモなんです。
マスターデータとトランザクションデータは桐固有の知識ではありません。
処理系にどんな言語を使おうと、どんなデータベースを使おうと知っておかなければならない基本知識です。
以下にネットで見つけた記事を引用しよう。
【引用】マスターデータとトランザクションデータって結局なんぞや – gomokulog http://gomocool.net/gomokulog/?p=906
データベースに触れると、割とすぐに当たり前のように使われている言葉、マスターデータ(マスターテーブル)とトランザクションデータ(トランザクションテーブル) とはなんぞや。
色々解釈ありますが、私的には、
メンテナンスされ、常に最新なデータが反映されているのがマスタデータで、原則削除しないで履歴として残しておくデータがトランザクションデータです。
例えば、ネットで商品を購入し、その時の明細が以下のような感じだとします。
===================
4/20 注文番号 OR0000132
商品A (Item02001) 10000円 2個 小計20000円 商品B (Item02002) 5000円 1個 小計5000円
合計 25000円
===================
これは購入後マイページで、見れるとします。
その後、商品Aが思ったより売れるので、お店が12000円に値上げしました。
新たにECショップでみると、12000円で売られていて、「安いときに買えてよかった。」って経験ありませんか?
後から、マイページの購入履歴で見たとき、購入履歴の商品の値段が12000円になるわけが無いですよね?
このように、売る時には常に最新のデータを表示するためのデータがマスタデータです。 しっかりメンテナンスされて、もちろん正規化されています。
そして、売れた後に証拠として残されるべき情報がトランザクションデータです。 原則削除は行わず、キャンセルになった場合などはステータス情報などが、”キャンセル済み”などになります。 値段などはシステムのミスなどでなければ、改変することはありません。 このように、履歴、証拠として残しておくデータで、それ故、日ごろの業務(transaction)を行っていると増えていくデータといういみで、トランザクションデータというようです。
よく、日ごろの業務を行うとお客様データは増えていくから、マスタではなくトランザクションデータではないのかという疑問を抱くことがあるのですが、お客様が現住所を変更したら、変更しますよね。過去の住所は原則必要ないですよね? このようにメンテナンスされていくのでマスタデータといえます。
まぁ、私も今でも、「あれ、これってマスタだっけトランザクションだっけ?」と迷うような曖昧なデータはありますが・・・、そこらへん慣れですかね。
ちなみに以前、データベースの正規化(正規形)とはなんぞや の最後の方で、正規化しないデータもあると書きましたが、まさにそれがトランザクションデータです。
例えば、注文テーブルなどは、第二正規化あたりでよく止めておきます。
上を第二正規化まで進める下記のようになる。
そして、多くはここから正規化を行わない。
なぜなら、第三正規化は、導出項目である小計や合計など、購入時(取引時)の値段を削除するからです。 また、第三正規化では、商品をマスタ化する必要があるが、商品名や商品の値段は変わる可能性があり、変わるたびに過去の購入時の金額や商品名も変わってしまうことになる。
まぁ、難しいこと考えずに消したら困るし変わったら困るなら、それ以上は何もしなければいいだけやね。
|
|