データベースにおけるタイムスタンプとインターバルの違いについて質問です。
「達人に学ぶDB設計徹底指南書」という本を読んで勉強しています。
インターバル形式ではタイムスタンプ形式と比べて、なぜデータ変更が頻繁に発生する場合に良いのでしょうか?
もともと市町村コード、市町村名、人口という3つのカラムからなる「市町村」テーブルがあって、市町村コードがA000からA999までの1000個しかない、という場面を想定してください。
レコードを一意に特定するためには、市町村コードだけでは役不足というわけですが、代理キーは使いたくありません。
そこで、自然キーであるタイムスタンプとインターバルのテーブルへの導入を考えるわけですが、インターバルのメリットとして、引用ですが以下のようなメリットがあります。
それに関連する文章も一緒に示しておきます。
「(タイムスタンプ形式では)、2005年、2006年、2007年と、それぞれのタイミングにおける市町村のレコード集合を用意してやるわけです。データのスナップショット(断面)を必要な数だけ用意する方法といってもいいでしょう。それぞれの断面が履歴の役割を果たします。ここで付け加えた「年度」列は、連番という無味乾燥な代理キーと違って、きちんと業務的に意味を持つ列(自然キー)です。」
「このインターバル方法は、タイムスタンプ方式の欠点を克服できます。スナップショット別にデータを持つ必要はなく、データの有効期間が切れたら既存のレコードの「終了年度」に終了期限を入力するだけなので、全体としてレコード数を少なく抑えられます。これはデータ変更が頻繁に発生する場合には大きな利点です。」
データが頻繁に更新される(私の中ではいくつかの市町村がなくなって、また新しい市町村が追加されるようなものを想定しています)のを想像しても、いまいちインターバル形式の方が良いというのがイメージできません。
例えば、1000個の市町村がなくなって、それと同じだけ追加されるというのを考えると、タイムスタンプ形式ではその年度のレコード数は、その前年のレコード数と変化はありません。
一方で、インターバル形式では、1000個のレコードが新たに追加されることになります。
これのトレードオフはどのように考えれば良いのでしょうか?
インターバル形式は「データ変更が頻繁に発生する場合には大きな利点」みたいですが、これが具体的にイメージできません。
お分かりの方、解説お願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/15 09:42