正規化の前提知識として
テーブルとは
テーブルとは、共通点を持ったレコードの集まりです。 なので、テーブル名は英語名で複数形で書けます。複数形で書いてみてどこか不自然を感じたら、そのテーブルにはどこか間違いがあるということです。 ex. Employees Ordersキーとは
キーとは、リレーショナルデータベースのテーブルになくてはならない物の1つです。キーとは、あるレコード(1行とは限らない)を特定するための列の組み合わせ、という意味です。特に重要なキーとして、主キーと外部キーがあります。主キーとは
主キーはテーブルにおいて必ず1つ存在しなければならず、かつ1つしか存在しません。主キーはその値を指定すれば必ず1行のレコードを特定できるような列の組み合わせのことです。 「1行を特定する」 → 「一意に識別する」 → unique 主キーが存在しなければならないということは、テーブルには重複行は存在できない、ということです。 場合によっては、複数列を組み合わせなければ主キーを作れないこともあります。その場合は、複数の列を組み合わせて作るキーを複合キーと呼びます。外部キーとは
外部キーは2つのテーブルの間の列同士で設定します。 外部キーは人間の親子関係と同じ。 外部キーが設定されている場合は、データの削除は子から順に操作するのが吉。 外部キーとなる列には、コードやIDなど表記体系の定まった固定長文字列を用いる。NULLとは
データベースにデータを登録する時に、その値が定まらない時があります。その時にデータをNULLという扱いにすることができます。つまり、空欄です。 主キーとなる列には、DBMS側で暗黙にNOT NULL制約が付与されます。重複が許されないため、NULLも許されないのです。第1正規形
第1正規形の定義とは、1つのセルの中には1つの値しか含まないです。 この値のことをスカラ値と言います。スカラ(scalar)とは単一のという意味です。 なぜ、1つのセルに複数の値を入れることが認められていないのか?その理由は、セルに複数の値を許せば、主キーが各列の値を一意に決定できないからです。 これは、主キーの定義に反しています。第2正規形
第2正規形とはテーブル内で部分関数従属を解消し、完全関数従属のみのテーブルを作ることです。 やり方は、部分関数従属の関係にあるキー列と従属だけ独立のテーブルにすれば良いです。 第2正規化は必ず正規化する前の状態にテーブルを戻ることができるようになっています。これを可逆的(reversible)と呼びます。 情報を完全に保存したままテーブルを分割する操作のことを無損失分解と言います。※正規化の逆操作は結合