
9
第 章
解答は以下のとおりです。
どのモデルのテーブルにおいても、部分関数従属も推移的関数従属もないた
め、第3 正規形は満たしています。
隣接リストモデルは、非キー列からキー列への関数従属はないため、ボイス-
コッド正規形も満たしています。また、そもそも多値従属も存在しないため、第 4
と第 5 正規形も満たしていることがわかります。
閉包テーブルモデルの二つのテーブルはどうでしょうか。まず組織図テーブルに
ついては、「ツリー ID」列が候補キーになるため、ボイス-コッド正規形ではあり
ません。このテーブルは{ 社員, 役職 }、{社員 , ツリー ID}という形に無損失分解が
可能です。ただ実際は、クエリでの結合を増やしてしまうためこのような分解を行
なうメリットは少ないでしょう。他方、閉包テーブルは主キーだけから構成される
テーブルで、多値従属性がないため、第 5 正規形と言えます。
このクエリを実行すると、結果が空になります(0 行が返される)。
これはSQLの悪名高い仕様で、boss列に NULL が含まれているためにNOT IN
366