次の各例では、テーブルに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_id、project_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リクエストを実行すると、Vantageはprojectテーブルを正規化します。