固有インデックスではNULL受入可能列が有効 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

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>を参照してください。