17.10 - normalize_option - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

normalize_columnの正規化条件。

隣接または重複するPERIOD列または派生PERIOD列の2つの値を結合します。2つの入力値に対する正規化操作の結果は、その2つの入力期間値の合併である3つ目の期間値になります。

NORMALIZEオプションは、テーブルごとに一度だけ指定できます。

正規化テーブルには、隣接または重複する列値を正規化したデータ値が同じになる2つの行は存在しません。そのため、そのテーブルで新しい行を挿入する場合や既存の行を更新する場合、その行は、新しい行と同じデータ値を持つすべての既存の行や、隣接または重複する列値を正規化したすべての既存の行と結合されます。

揮発テーブルに対しては、NORMALIZEオプションは指定できません。

NORMALIZEオプションは、単一の正規化する列と正規化条件の指定が必須です。また、正規化処理から指定した列を排除するALL BUT列リストの指定は任意です。

ALL BUT (normalize_ignore_column_name)
指定した列セットを正規化プロセスから除外します。
BLOB、CLOB、XML、地理空間、JSON、またはDATASETデータ型を持つ列によって定義されたテーブルを正規化するには、これらの列をnormalize_ignore_column_name列セットのメンバーとして明示的に指定する必要があります。
ON normalize_column
テーブルを正規化するためのPERIOD列または派生PERIOD列。
これはTRANSACTIONTIME列にはできませんが、VALIDTIMEまたはその他のPERIOD列にできます。
ON OVERLAPS
2つの入力のPERIOD列または派生PERIOD列が時間的に重複している部分に基づいて、テーブルを正規化します。
ON MEETS OR OVERLAPS
ON OVERLAPS OR MEETS
2つの入力のPERIOD列または派生PERIOD列が時間的に重複している部分、または重複していないが時間的に連続している部分に基づいて、テーブルを正規化します。
正規化条件として、ON MEETSを指定することはできません。

例: NORMALIZE

このCREATE TABLEリクエストでは、duration列を正規化するテーブルを定義します。行は、列emp_idproject_namedept_idの値が同じで、durationの期間値が隣接または重複する場合にのみ正規化されます。

     CREATE TABLE project (
       emp_id	   INTEGER,
       project_name	   VARCHAR(20),
       dept_id	   INTEGER,
       duration	   PERIOD(DATE),
     NORMALIZE ON duration);

次のCREATE TABLEリクエストは、duration列で正規化する同様のprojectテーブルを定義しますが、正規化を無視する列としてdept_idを指定します。そのようなテーブルの場合、行は列emp_idproject_nameの値が同じで、durationの期間値が隣接または重複する場合にのみ正規化されます。

     CREATE TABLE project (
       emp_id	   INTEGER,
       project_name	   VARCHAR(20),
       dept_id	   INTEGER,
       duration	   PERIOD(DATE),
     NORMALIZE ALL BUT(dept_id) ON duration);