学生向けにプログラミングを解説。[TOP]リレーショナル・データベースでデータベースを作成するということは、テーブルを作成することです。どのような種類のテーブルを作って、そこにどの様な情報を持たせるかを決めることを、「データベースの論理設計」と呼びます。データベースの論理設計は、テーブルの設計によって大きく変わって来ます。リレーショナル・データベースのテーブルとして好ましくない性質を持つテーブルを、そのテーブルが持っている情報を変えずに他の適当なテーブルに変えることを「テーブルを正規化する」と言います。テーブルは、重複した行がないように設計します。重複した行がないということは、1行1行がそれぞれ違っているということです。テーブルから、特定の1行を取り出すとしましょう。重複した行がないので、すべての項目を指定すれば、ある1行を取り出せます。すべての項目を指定しなくても、いくつかの項目を指定するだけで、特定の行を取り出せることもあります。した項目の組を、「主キー候補キー」あるいは「候補キー」と呼びます。「主キー候補キー」のうち重要な項目で、nullという値をとらないものを「主キー」と呼びます。nullというのは、項目にデータが入っていない状態のことです。「主キー」には、内容の重複はありえません。具体的な例を見てみましょう。出版社テーブル「books」に含まれる項目では、「登録番号(id)」が1冊ずつ違った番号になるなら、「登録番号(id)」が主キーとなります。主キーが「タイトル」では、「たまたま同じタイトルである本」というのが障害になってしまいます。「タイトル」と「著者」と「出版社」の組み合わせを主キーとしても、同じ本が何冊か登録されることが起こりえます。この場合は「登録番号(id)」を主キーとするのが正しいのです。決められたルール通りにテーブル設計することを「正規化」と言います。正規化によって、適切に分割され、保守しやすいテーブルを作成できます。正規化されたテーブルを「正規形」と言います。正規化にはさまざまな段階があります。ドメインキー正規形テーブルの項目には、複数の値を入れることはできません。「books」のテーブルに、複数の「キーワード」を付け加えるとしましょう。社会その4このテーブルでは1つの項目に複数の値が入っています。したテーブルは、次の例のように書き直して、複数の値が入らないようにしなければいけません。その4書き直した結果、複数の値が入らなくなりました。このように変更されたテーブルを、第一正規形と呼びます。第一正規形では、どの項目にも、複数の値が入っていません。第一正規化されたテーブルの主キーは「id」と「keyword」になります。いった項目の内容は、主キーの一つである「id」という項目があれば自動的に決まります。一つの主キーである「keyword」はなくてもよいのです。いう項目が「id」に関数従属しているといいます。主キーが複数あるとき、主キーの一部にだけ関数従属している項目を別のテーブルに移すことを「第二正規化」と言います。いう項目が「id」に関数従属しています。なるテーブルを別に作成するのです。第二正規化されたテーブルは[booksテーブル]と[booksのキーワードを表すテーブル]になります。その4第二正規化された[booksテーブル]では、idが主キーになります。このidは[booksのキーワードを表すテーブル]でも登場します。「1024」というidを持つ図書は、「社会」というキーワードを持っていることがわかります。[booksテーブル]と[booksのキーワードを表すテーブル]は、idという項目によって関連付けられているのです。[booksテーブル]と[booksのキーワードを表すテーブル]の関係について考えてみましょう。[booksテーブル]に「英語」という本のデータがないときに、[booksのキーワードを表すテーブル]に「英語」のキーワードがあったら変ですね。[booksテーブル]にデータがないのに、その本の「キーワード」のデータがあるということはありえないのです。逆に言うと、「キーワード」にデータを登録するときには、登録するデータのidは[booksテーブル]で既に登録されていなければなりません。この例での[booksのキーワードを表すテーブル]のid項目のことを「外部キー」と呼びます。参照整合性制約が設定されていると、次のような制約があります。[booksテーブル]に「1045」という主キーを持つ行がないとき、[booksのキーワードを表すテーブル]に「1045」の外部キーを持つ行を追加できない。[booksのキーワードを表すテーブル]に「1045」の外部キーを持つ行があるときに、[booksテーブル]から「1045」という主キーを持つ行を削除できない。次のようなテーブルがあったとします。東京このテーブルでは、「出版社の所在地」が「出版社」に関数従属しています。主キーではないキーに関数従属している項目を、別のテーブルに移すことを「第三正規化」と言います。第三正規化されたテーブルは次のようになります。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。