PRIMARY KEYまたはUNIQUE制約を指定して定義された列にはnullを設定できないだけではなく、明示的にNOT NULLとして定義する必要があります。しかし、NULL受入可能な列は、UPIおよびNUPIの列定義でされる。これはデータベース設計の良い例とはいえません。インデックス定義において、NULL受入可能列を許可できるのは、非常に特殊な条件下のみです。
言葉の意味からして、SQLのnullは値が存在しないことだけをテーブルわすので、他のものと等しくしたり比較することはできないとしても、複数の固有インデックス列にあるnullは互いに等しいものとして扱う必要があります。nullのプライマリ インデックス行のすべては、ハッシュ処理の結果が同じAMPになるため、UPIであっても、NULL受入可能にすると行分布に歪みが発生することがあります。SQLのnullに関するその他の意味上の不整合については、Teradata Vantage™ - データベースの設計、B035-1094を参照してください。
UNIQUEまたはUNIQUE PRIMARYとして宣言されているインデックスの内容 | 結果 |
---|---|
単一の列 | その列がnullの行はテーブルに1つだけ存在できます。 |
複数の列 | 固有性が定義されている場合、重複行は許可されないため、テーブルの中の複数の行の値がすべて同じということは不可能です。 |
データベースの設計、さまざまな状況におけるnullの問題が発生する可能性、およびこれらの問題の回避方法の詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。