がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

マスターと似非マスター

マスターテーブルってのがあるです。
大抵の設計は、そういったテーブルへの主keyだけを持って、詳細な情報はマスターテーブルから引っ張ってくるです。


例えば…


ECサイトで、商品情報は、商品IDだけを持って、値段名前その他は商品マスターテーブルから取得するです。
アフェリエイト系サイトで、広告に結びついてる報酬単価は、広告マスターテーブルから取得するです。
いわゆるコードの類は、コードIDだけを持って、コードテーブルから名称などを取得するです。


一通りダウト。
例えば。


ユーザが画面遷移で購入遷移を流した瞬間と、実際に請求をかけるタイミング、その他で「値段を変えられてしまった」ら?
広告の報酬単価を修正してしまったら?
コードに紐尽く名前が間違っていたからといって修正されてしまったら?
データがずれて、色々と面倒になる事請け合いです。


ぢつは。
マスターテーブルってのは「不変である事」が前提であるはずなのに、実際には「わりとコロコロ変更される性質を持つ」場合があるです。
そういった性質を持つテーブルを「似非マスター」と呼称してみます。
っつか、ぶっちゃけほとんどのマスターテーブルが「似非マスター」だったりするのですが orz


ある角度できれいに行くなら、マスターと同じ情報を、必要なところに必要なだけcopyしていく必要があるです。
例えばECサイトを組むなら、ユーザからの、いわゆる「受注情報」内に、金額などは明記しておいた方が安全です。
ただ、それをあんまりきっちりとやると今度は「エラい事データがふくれあがる」訳でして。
コードテーブルなんかは、有効日付とかを持つ事で「過去の時間軸のデータを取得できる」事で、ほぼ「不変」を実装したりします。


このあたり、ある程度運用してから気付いたりすると色々と痛かったりするので。
早めに脳内で検討しておくと、とりあえず地獄を見ずにすみます。


っつわけで、あなたに質問。
そのマスターテーブルは、似非ではありませんか? 本当に?