テーブルの制約
一意性、プライマリキー、および外部キーの制約は情報提供のみを目的としており、テーブルに値を入れるときに Amazon Redshift によって強要されるわけではありません。例えば、依存関係のあるテーブルにデータを挿入する場合、制約に違反していても挿入は成功します。ただし、プライマリキーと外部キーはプランニング時のヒントとして使用されます。アプリケーションの ETL プロセスまたは他の何らかのプロセスによってこれらのキーの整合性が強要される場合は、これらのキーを宣言する必要があります。
例えば、クエリプランナーは、特定の統計計算でプライマリキーと外部キーを使用します。これは、サブクエリの非相関化手法に影響を与える一意性と参照関係を推測するために行われます。これにより、多数の結合を配列し、冗長な結合を排除できます。
プランナはこれらのキーの関係を活用しますが、Amazon Redshift テーブルのすべてのキーがロード時に有効であることが前提となります。アプリケーションが無効な外部キーまたはプライマリキーを許可する場合、いくつかのクエリが不正な結果を返す可能性があります。例えば、プライマリキーが一意でない場合、SELECT DISTINCT クエリが重複した行を返すことがあります。有効かどうかわからない場合は、テーブルに対してキーの制約を定義しないでください。ただし、有効だとわかっている場合は、プライマリキー、外部キー、および一意性の制約を必ず宣言してください。
Amazon Redshift は、NOT NULL 列の制約を適用します。
テーブルの制約の詳細については、「CREATE TABLE」を参照してください。依存関係のあるテーブルを削除する方法については、「DROP TABLE」を参照してください。