ヌル可能列は1NFから5NFまで可能ですが、私が読んだものによれば6NF内にはありません。
「最初の正規形が実際に何を意味するか」をクリス・デートよりよく知っている場合にのみ。XおよびYは両方ともNULL可能であり、実際にいくつかの行のxおよびyが両方ある場合null
、次いでWHERE x=y
得られませんtrue
。これは、nullが値ではないことの合理的な疑いを超えて証明します(実際の値は常にそれ自体に等しいため)。また、RMは「テーブルのすべてのセルに値が存在する必要がある」と規定しているため、nullが含まれている可能性のあるものは関係のものではないため、1NFの問題は発生しません。
Nullable列は一般的に、最初の正規化を破ると主張していると聞いたことがあります。
その議論の根底にある正当な理由については、上記を参照してください。
しかし、実際には非常に実用的です。
それが世界の残りの地域全体で通常発生する頭痛の影響を受けない場合のみ。そのような頭痛の1つ(他のnull
現象と比較して、それは軽微な問題です)は、WHERE x=y
SQLでは実際にを意味するという事実ですWHERE x is not null and y is not null and x=y
が、ほとんどのプログラマーは単にその事実を認識せず、単に読んでいるだけです。時には害はありませんが、そうでない場合もあります。
実際、null許容列は、最も基本的なデータベース設計ルールの1つに違反しています。1つの列に個別の情報要素を組み合わせないでください。ヌルは、ブール値「このフィールドは実際に存在する/存在しない」と実際の値を組み合わせるため、まさにそれを行います。