2009年2月12日木曜日

RDBにおけるNULL

せっかくなので、勉強会で取り上げたネタを
書き込んでおきます。

第一弾は、RDBにおけるNULL

RDBは、プログラミング言語とは違い、
3値論理に基づいてNULLを扱います。
この3値論理上では、= NULLとした場合、
必ずunknownとなり、結果が得られません。
(C# とかやった後、思わずWhere 項目 != null
とかして、一瞬なんで出ないと思ってしまうのは私です。)

そのため、NULLを比較するための構文として
IS NULL, IS NOT NULLが存在します。

う~ん、ややこしいと思ったあなた。
3値論理でそんなこと言ってたらだめです。
関係モデル生みの親、コッドさんは、
さらに4値論理を提唱され、2種類のNULLを
扱おうとされていました。

2種類のNULL
未知     :サングラスの下の目の色とか
適応不能  :車の性別とか

分からなくはないのですが、実装されなくてよかった~。

続く。

0 件のコメント:

コメントを投稿