時間表現の必要性 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - ANSIテンポラル テーブル サポート

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/kit1592007446534.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1186
Product Category
Software
Teradata Vantage

アプリケーションによっては、時間経過に伴って情報が変化するデータベースの設計や構築が必要になる場合があります。これはテンポラル テーブル サポートなしでも可能ですが、複雑なものになります。

次に示すように定義されたPolicyテーブル(ここでは保険契約のPolicyテーブル)を使用する、保険会社のアプリケーションについて考えてみます。

CREATE TABLE Policy(
   Policy_ID INTEGER,
   Customer_ID INTEGER,
   Policy_Type CHAR(2),
   Policy_Details CHAR(40)
   )
UNIQUE PRIMARY INDEX(Policy_ID);

このアプリケーションでは、Policyテーブルの行で表わされるポリシーが有効になる時期を記録する必要があるとします。方法の1つに、DATE型列をStart_DateというPolicyテーブルに追加する方法があります。アプリケーションで、ポリシーの期限が切れたことも知る必要がある場合は、対応するEnd_Date列を追加できます。

このテーブルの新しい定義は、次のようになります。

CREATE TABLE Policy(
   Policy_ID INTEGER,
   Customer_ID INTEGER,
   Policy_Type CHAR(2),
   Policy_Details CHAR(40)
   Start_Date DATE,
   End_Date DATE
   )
UNIQUE PRIMARY INDEX(Policy_ID);

ただし、何点かの複雑さが伴います。例えば、ある顧客が保険契約の有効期間中にその保険契約を変更すると、新しい保険契約の条件を格納する新しい行の作成が必要になります。その保険契約の条件は、保険契約が変更された時点から保険契約が終了するまで有効になります。ただし、変更前の保険契約の条件も、履歴を残すために重要になります。元の行は保険契約の開始時点で有効だった条件を表わしますが、保険契約がいつ無効になったかではなく、保険契約の条件がいつ変更されたかを反映させるために、元の行のEnd_Dateを更新する必要があります。

さらに、この種の変更によって複数の行が同じPolicy_IDの値を保持することになり、このテーブルのプライマリ インデックスに変更が必要になります。このテーブルにどのような変更を加えるにしても、Start_Date列とEnd_Date列の明示的な変更について考慮しなければならなくなります。問合わせはさらに複雑化します。

テーブル内にDateTime型列が1つ以上あるだけでは、テーブルはテンポラル テーブルにならず、データベースはテンポラル データベースになりません。テンポラル データベースでは、企業が管理する情報の時間依存性を記録する必要があります。

Vantageは、ANSI準拠のテンポラル テーブルに対して組み込みのサポートを提供します。標準的なSQL文のテンポラル変種により、次第に変化するデータを作成、変更、問合わせ、および変更することができます。問合わせと変更には、時間次元を参照するテンポラル修飾子を含めることができます。テンポラル修飾子は、データに対する基準またはセレクタとして機能します。この問合わせや変更は、時間の基準を満たすデータにのみ作用します。

テンポラル列とテンポラル文は、次第に変化する情報を表わすことができるアプリケーションの作成を促進します。