正規化テーブルに列を追加する操作に関するルールと制約事項を以下にまとめます。
- 1つのテーブルには1つのNORMALIZE列しか含めることができません。
- 非正規化テーブルを正規化するには、その定義を変更してADD normalize_option定義を指定します。
- 正規化テーブルに新しい列を追加しても、その列はnormalize_ignore_columnsリストに自動的に追加されません。
- 無視列リストに列を追加した場合、Teradata Databaseは正規化テーブルを再正規化します。
- Teradata Databaseが非正規化済みのテーブルを正規化するときに、複数の行を1つとして正規化する場合、無視列の値は非確定になります。
- ALTER TABLEリクエストでADD normalize_ignore_columnsオプションを指定することで、normalize_ignore_columns列リストを変更できます。この場合、完全な正規化句と無視列を指定します。
- テーブルの正規化の追加と削除を同じALTER TABLEリクエストで行なうことはできません。
既存のテーブルにNORMALIZEオプションを追加する操作に関するルールと制約事項を以下にまとめます。
- NORMALIZEオプションで指定する列は、PERIODデータ型であるか、擬似PERIOD列である必要があります。
- TRANSACTIONTIME列をNORMALIZE列として指定することはできません。
- 正規化条件を明示的に指定しない場合のデフォルトは、ON MEETS OR OVERLAPSです。
- 正規化する変更対象のテーブルに、BLOBデータ型、CLOBデータ型、JSONデータ型、またはXMLデータ型の列が含まれている場合は、これらの列をNORMALIZEオプションのnormalize_ignore_column_nameリストに指定する必要があります。
- Teradata Databaseは、変更対象のテーブルの、正規化する行に対して、UNIQUE制約とPRIMARY KEY制約の両方を評価します。正規化された行がUNIQUEまたはPRIMARY KEY制約に違反する場合、Teradata Databaseはリクエスト元にエラーを返します。
- Teradata Databaseは、変更対象のテーブルについて、正規化後のテーブルに挿入される行に対してCHECK制約を評価し、この制約に違反する場合は、リクエスト側にエラーが返されます。
このアクションによって、正規化されたPERIOD列の最初または最後に制約が指定されている場合に発生する可能性のある、セキュリティの問題が防止されます。この場合、入力行はCHECK制約に違反するものの、正規化された行は違反しません。この状況は、UNIQUE制約では発生しません。
正規化テーブルから列を削除する方法については、正規化テーブルからの列の削除を参照してください。