pulpul 日本の試験

ITストラテジスト 概念書 · データベース

関係データベースの表設計と正規化

関係データベースの表設計は、表の列の組み合わせを適切に分けて、データの重複や更新時の矛盾を減らす作業である。その中心が正規化であり、属性間の関数従属性に基づいて表を分解する。主キー、候補キー、外部キーを正しく決めることで、表どうしの参照関係も明確になる。

正規形の段階と判定の条件

第1正規形は、一つの属性に複数の値を入れた繰返し属性がない状態である。 第2正規形は、非キー属性が主キーの真部分集合に関数従属しない状態であり、候補キーの一部だけで決まる属性を別の表に分けることで実現する。 第3正規形は、非キー属性が主キーに推移的に関数従属しない状態である。段階が上がるほど、表の関数従属性は単純になり、更新時の不整合が起きにくくなる。

第2正規形から第3正規形への分解

第2正規形の表であっても、候補キー以外の属性どうしに関数従属性があれば、推移的な従属が残っており第3正規形ではない。この場合は、その従属性を取り出して別の表に分解する。 一方、候補キーの一部から非キー属性への部分関数従属を分けるのは第2正規形への手順であり、一つの属性に複数値が入る状態を単一値に分けるのは第1正規形への手順である。段階ごとに対象となる従属性の種類を区別することが重要である。

外部キーと参照制約の動作

外部キーは、参照する側の表に置かれ、参照される側の表の主キーや候補キーの値を指す列である。参照先の行を削除するときの動作は、ON DELETE の指定で決まる。CASCADE を指定すると、参照している行も連鎖して削除される。 RESTRICT を指定すると、参照している行が残っている間は参照先の削除が拒否される。SET NULL は外部キー列をNULLにするため、その列がNULLを許すことが前提となる。SET DEFAULT は外部キー列を既定値に変更する。いずれも、参照行そのものを消すかどうかで区別する必要がある。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む