17.10 - 例: テーブルへのNORMALIZE制約の追加 - 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制約を追加するALTER TABLEリクエストの使用方法を示します。NORMALIZE制約のシステム デフォルトの条件は、次のとおりです。

  ON MEETS OR OVERLAPS

すべての例で、次の テーブル定義または同等のテンポラル テーブル定義を使用します。 テーブル定義では、NORMALIZE制約を指定しません。

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

次のALTER TABLEリクエストでは、projectテーブルを変更して、NORMALIZE制約をduration列に追加します。各行は、emp_idproject_name、およびdept_id列の値が同じで、duration列の期間値が隣接または重複する場合にのみ正規化されます。

     ALTER TABLE project 
     ADD NORMALIZE ON duration;

次のALTER TABLEリクエストでは、projectテーブルを変更して、NORMALIZE制約をduration列に追加します。dept_id列は、正規化の対象にならない唯一の列です。

各行は、emp_id列とproject_name列の値が同じで、duration列の期間値が隣接または重複する場合にのみ正規化されます。

     ALTER TABLE project 
     ADD NORMALIZE ALL BUT(dept_id) ON duration;

次のALTER TABLEリクエストではprojectテーブルを変更して、NORMALIZE制約をduration列に追加します。この制約はduration列の期間値が重複する場合にのみ適用されます。 Thedept_id列は、正規化の対象にならない唯一の列です。

各行は、emp_id列とproject_name列の値が同じで、duration列の期間値が重複する場合にのみ正規化されます。

     ALTER TABLE project 
     ADD NORMALIZE ALL BUT(dept_id) ON duration ON OVERLAPS;

次のALTER TABLEリクエストではprojectテーブルを変更して、NORMALIZE制約をduration列に追加します。この制約はduration列の期間値が重複する場合にのみ適用されます。 Thedept_id列は、正規化の対象にならない唯一の列です。

各行は、emp_id列とproject_name列の値が同じで、duration列の期間値が重複する場合にのみ正規化されます。

     ALTER TABLE project 
     ADD NORMALIZE ALL BUT(dept_id) ON duration ON OVERLAPS;

次の例では、duration列に対するON OVERLAPSのNORMALIZE条件を使用して、projectテーブルを定義します。

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

projectの定義を変更して、project_name列をALL BUT normalize_ignore列リストに追加します。さらに、既存のON OVERLAPS条件にOR MEETS条件を追加します。

     ALTER TABLE
     ADD NORMALIZE ALL BUT(dept_id,project_name) ON duration ON OVERLAPS
      OR MEETS;

このALTER TABLEリクエストを実行すると、Vantageprojectテーブルを正規化します。