normalize_columnの正規化条件。
隣接または重複するPERIOD列または派生PERIOD列の2つの値を結合します。2つの入力値に対する正規化操作の結果は、その2つの入力期間値の合併である3つ目の期間値になります。
NORMALIZEオプションは、テーブルごとに一度だけ指定できます。
正規化テーブルには、隣接または重複する列値を正規化したデータ値が同じになる2つの行は存在しません。そのため、そのテーブルで新しい行を挿入する場合や既存の行を更新する場合、その行は、新しい行と同じデータ値を持つすべての既存の行や、隣接または重複する列値を正規化したすべての既存の行と結合されます。
揮発テーブルに対しては、NORMALIZEオプションは指定できません。
NORMALIZEオプションは、単一の正規化する列と正規化条件の指定が必須です。また、正規化処理から指定した列を排除するALL BUT列リストの指定は任意です。
- ALL BUT (normalize_ignore_column_name)
- 指定した列セットを正規化プロセスから除外します。
- ON normalize_column
- テーブルを正規化するためのPERIOD列または派生PERIOD列。
- ON OVERLAPS
- 2つの入力のPERIOD列または派生PERIOD列が時間的に重複している部分に基づいて、テーブルを正規化します。
- ON MEETS OR OVERLAPS
- ON OVERLAPS OR MEETS
- 2つの入力のPERIOD列または派生PERIOD列が時間的に重複している部分、または重複していないが時間的に連続している部分に基づいて、テーブルを正規化します。
例: NORMALIZE
このCREATE TABLEリクエストでは、duration列を正規化するテーブルを定義します。行は、列emp_id、project_name、dept_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_idとproject_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);