コース: プログラミングの基礎:データベース
今すぐコースを受講しましょう
今すぐ登録して、24,600件以上登録されている、業界エキスパート指導のコースを受講しましょう。
第二正規化を行う
このレッスンでは、 主キー以外の項目を すべて主キーに従属させる、 第二正規化について説明します。 第二正規化を行う前に、 テーブルが第一正規形になっている 必要があります。 第一正規化のあとに 第二正規化は行われます。 「第二正規形の条件」は、 主キーの値が決まれば、 各項目の値が自動的に決まる ということです。 これは主キー以外の項目は、 すべて主キーに従属するということです。 「従属」とは、あるデータ項目が決まれば、 他のデータ項目も 一意的に決まることを言います。 第二正規形は、 複合主キーを使用している場合に限り 問題になります。 「複合主キー」とは、 2つ以上の列で構成される主キーです。 では、第一正規形ではあるが、 第二正規形ではないテーブルを例に 説明してみましょう。 情報系のスクールの データベースのテーブルがあります。 「コースID」「コース日」「コース名」 「教室」「定員」「受講人数」などを含む 「受講テーブル」があります。 さてここでは、主キーとして 2つの列を使うように定義されています。 これは「複合主キー」です。 例えば、コースID「SQL101」は複数存在し、 「コースID」列だけでは 行を一意に特定できず、 主キーにはなりません。 けれども、特定の日に、特定のコースは ひとつだけ存在するので、 「コースID」と 「コース日」を組み合わせれば 一意になります。 そのため、この2つの列を組み合わせて 複合主キーにしています。 さて、「第二正規形」では、 主キー以外の項目は、 すべて主キーに所属しなければなりません。 つまり「コース名」「教室」「定員」 「受講人数」のすべてが、 複合主キーの「コースID」と「コース日」に 従属する必要があります。 「2019-6-1」の「SQL101」のコースは、 「SQL基礎」で、教室は「4A」 定員は「12人」で、 現在の受講人数は「8人」です。 この中の「教室」「定員」「受講人数」は、 この複合主キーに従属しているので 問題ありません。 けれども「コース名」はどうでしょうか。 コースIDが「SQL101」なら、 コースIDはすべて「SQL基礎」です。 「コース日」が何日でも 「コース名」は変わりません。 つまり「コースID」が決まれば 「コース名」も一意に決まります。 複合主キーの半分があれば…