データベース 正規化
ホーム > 発行済み
読者の情報処理試験合格(シスアドから高度まで)を目指しています。
作者は、アプリケーションの開発を行なっているエンジニアです。
情報処理試験の知識(理論)を、日々の業務(実践)にどう生かしていくか、その辺りの事を意識
して、発行していきます。

データベース 正規化とは


     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━     
        ★★ 『情報処理試験のお勉強(千里の道も一歩から)』 ★★
                           2004/02/29 第15号
        知識の習得は、本当に楽しいものです。
        それぞれの目標に向かって、一歩ずつ踏出して行きましょう。
     ----------------------------------------------------------------------
        まぐまぐ:711 めろんぱん:89 メル天:50 カプライト:69
        E-Magazine:46 Macky!:20 melma:13      総発部数:998
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     
      秋期にネットワークに関する出題がある科目を受験しようと考えている方。
     
      テクニカルエンジニア(ネットワーク)、情報セキュアド、ソフ開、基本情報、
      上級・初級シスアド、アプリケーションエンジニアを受験しようかと考えている
      方は、まちがいなく、申込みしておいた方が良いですよ。
      
      試験範囲の技術習得の手助けになります。
      
      ・「5分でわかる最新キーワード解説」
      ・「ネットワーク早わかり講座」
      ・「運用コストを減らすワザ50」
      ・「すご腕アナリスト市場予測」
     
      今すぐ、無料登録をして、試験対策の準備が出来る環境を、作っておくことを
      お薦めしています。
     
       実力の習得は、日頃の努力です。 貪欲に知識の習得をしましょう。
       
       ▽ http://jstudy.fc2web.com/keyman2.html
     
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


       『情報処理技術者試験一種 午前平成12年問43』
     
      次のような繰返し構造をもったレコードからなるデータを,第3正規形に正規
     化したものはどれか。ここで,下線部分は主キーを表す。また,単位と単価は商
     品コードごとに決まるものとする。
     
     ┌────┬──┬─────┬───┬──┬─────┬──┬──┬──┐
     │伝票番号│日付│顧客コード│顧客名│住所│商品コード│単位│数量│単価│
     │ ̄ ̄ ̄ ̄│  │     │   │  │     │  │  │  │
     └────┴──┴─────┴───┴──┴─────┴──┴──┴──┘
                          └─────┴──┴──┴──┘
                           └─────┴──┴──┴──┘
                                  :繰返し
     
      ア ┌────┬─────┐
        │伝票番号│顧客コード│
        │ ̄ ̄ ̄ ̄│     │
        └────┴─────┘
        ┌─────┬───┬──┐
        │顧客コード│顧客名│住所│
        │ ̄ ̄ ̄ ̄ ̄│   │  │
        └─────┴───┴──┘
        ┌────┬──┬─────┬──┐
        │伝票番号│日付│商品コード│数量│
        │ ̄ ̄ ̄ ̄│ ̄ ̄│ ̄ ̄ ̄ ̄ ̄│  │
        └────┴──┴─────┴──┘
        ┌─────┬──┬──┐
        │商品コード│単位│単価│
        │ ̄ ̄ ̄ ̄ ̄│  │  │
        └─────┴──┴──┘
     
      イ ┌────┬──┬─────┐
        │伝票番号│日付│顧客コード│
        │ ̄ ̄ ̄ ̄│  │     │
        └────┴──┴─────┘
        ┌─────┬───┬──┐
        │顧客コード│顧客名│住所│
        │ ̄ ̄ ̄ ̄ ̄│   │  │
        └─────┴───┴──┘
        ┌────┬─────┬──┐
        │伝票番号│商品コード│数量│
        │ ̄ ̄ ̄ ̄│ ̄ ̄ ̄ ̄ ̄│  │
        └────┴─────┴──┘
        ┌─────┬──┬──┐
        │商品コード│単位│単価│
        │ ̄ ̄ ̄ ̄ ̄│  │  │
        └─────┴──┴──┘
     
      ウ ┌────┬──┬─────┬───┬──┐
        │伝票番号│日付│顧客コード│顧客名│住所│
        │ ̄ ̄ ̄ ̄│  │     │   │  │
        └────┴──┴─────┴───┴──┘
        ┌────┬─────┬──┐
        │伝票番号│商品コード│数量│
        │ ̄ ̄ ̄ ̄│ ̄ ̄ ̄ ̄ ̄│  │
        └────┴─────┴──┘
        ┌─────┬──┬──┐
        │商品コード│単位│単価│
        │ ̄ ̄ ̄ ̄ ̄│  │  │
        └─────┴──┴──┘
     
      エ ┌────┬──┬─────┬───┬──┐
        │伝票番号│日付│顧客コード│顧客名│住所│
        │ ̄ ̄ ̄ ̄│  │     │   │  │
        └────┴──┴─────┴───┴──┘
        ┌────┬─────┬──┬──┬──┐
        │伝票番号│商品コード│単位│数量│単価│
        │ ̄ ̄ ̄ ̄│ ̄ ̄ ̄ ̄ ̄│  │  │  │
        └────┴─────┴──┴──┴──┘
     
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     メールマガジンがずれて見える方は、
      http://www.mag2.com/faq/mua.htm を参考にしてください。
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



合格を勝取るにはコレ!! 絶対に読んでおくべきです。

▽ http://www.mag2.com/m/0000120201.htm



     『解説』
     
       今回の問題も、正規化についての問題です。
       では、正規化を進めていきましょう。
     
     ┌────┬──┬─────┬───┬──┬─────┬──┬──┬──┐
     │伝票番号│日付│顧客コード│顧客名│住所│商品コード│単位│数量│単価│
     │ ̄ ̄ ̄ ̄│  │     │   │  │     │  │  │  │
     └────┴──┴─────┴───┴──┴─────┴──┴──┴──┘
                          └─────┴──┴──┴──┘
                           └─────┴──┴──┴──┘
                                  :繰返し
     
       正規化を進めるときに、最初にやるべきことは主キーを見つけ出すことです。
       問題文に「主キーは、伝票番号である」ことを記す文言がありますが、それ
       だけでは、行を一意に特定することが出来ませんね。
     
       繰返しが複数発生した時には、伝票番号の同じ行が複数出てしまい行を一意
       に特定出来なくなってしまいます。
       そのため、主キーは{伝票番号、商品コード}にする必要があります。
     
       このようにすることにより、「定義域は単純であり繰返し項目も存在しない」
       第一正規形を満たすことになります。
     
       続いて、第二正規形にしましょう。
       第二正規形を満たす条件は「部分関数従属の排除」です。
     
       日付、顧客コード、顧客名、住所は、伝票番号に関数従属しています。
       単位、単価は、商品コードに関数従属しています。 これについては、
       問題文に記されていますね。
       よって、これらの項目を別テーブルに分けます。
       
       すると、以下のようなテーブル構成になりますね。
       テーブル名についても、妥当な名前を付けます。
       
       伝票明細(伝票番号、商品コード、数量) 主キー{伝票番号、商品コード}
       伝票  (伝票番号、日付、顧客コード、顧客名、住所) 主キー{伝票番号}
       商品  (商品コード、単位、単価) 主キー{商品コード}
     
       という3テーブルが出来ました。
     
       
       続いて、第三正規形にしましょう。
       第三正規形は「推移関数従属の排除」です。
     
       顧客名、住所は、顧客コードに関数従属しています。
       よって、これらの項目を別テーブルに分けます。
     
       すると、以下のようなテーブル構成になりますね。
       テーブル名についても、妥当な名前を付けます。
     
       伝票明細(伝票番号、商品コード、数量) 主キー{伝票番号、商品コード}
       伝票  (伝票番号、日付、顧客コード) 主キー{伝票番号}
       商品  (商品コード、単位、単価) 主キー{商品コード}
       顧客  (顧客コード、顧客名、住所) 主キー{顧客コード}
     
     
       ここで、出来上がったテーブルと設問を見比べると。。。
       同じ形のテーブルが存在している
     
      イ ┌────┬──┬─────┐
        │伝票番号│日付│顧客コード│
        │ ̄ ̄ ̄ ̄│  │     │
        └────┴──┴─────┘
        ┌─────┬───┬──┐
        │顧客コード│顧客名│住所│
        │ ̄ ̄ ̄ ̄ ̄│   │  │
        └─────┴───┴──┘
        ┌────┬─────┬──┐
        │伝票番号│商品コード│数量│
        │ ̄ ̄ ̄ ̄│ ̄ ̄ ̄ ̄ ̄│  │
        └────┴─────┴──┘
        ┌─────┬──┬──┐
        │商品コード│単位│単価│
        │ ̄ ̄ ̄ ̄ ̄│  │  │
        └─────┴──┴──┘
     
       が正解だとわかります。
     
     
     
       折角、ここまで正規化を進めたので、前々回の復習も兼ねてER図も
       考えて見ましょう。
       
       伝票明細(伝票番号、商品コード、数量) 主キー{伝票番号、商品コード}
       伝票  (伝票番号、日付、顧客コード) 主キー{伝票番号}
       商品  (商品コード、単位、単価) 主キー{商品コード}
       顧客  (顧客コード、顧客名、住所) 主キー{顧客コード}
     
        ┌──┐ ┌────┐ ┌──┐
        │伝票│→│伝票明細│←│商品│
        └──┘ └────┘ └──┘
          ↑
        ┌──┐
        │顧客│
        └──┘
     
     
       上記の様になりますね。
     
       過去にER図、正規化について扱っています。
       余力のある人はどうぞ。
       「ER図」
         [http://jstudy.fc2web.com/old_merumaga/20040201.html]
         [http://jstudy.fc2web.com/old_merumaga/20040208.html]
       「正規化」
         [http://jstudy.fc2web.com/old_merumaga/20031228.html]
         [http://jstudy.fc2web.com/old_merumaga/20040215.html]
     



合格を勝取るにはコレ!! 絶対に読んでおくべきです。

▽ http://www.mag2.com/m/0000120201.htm



     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     『お願い』
     
       ぜひ、情報処理試験のお勉強(千里の道も一歩から)を、今回受験を考えて
       いる方などに、御紹介してあげてください。
       このメールマガジン自身も、千里の道を一歩ずつ、着実に歩んでいきます。
     
      「情報処理試験のお勉強(千里の道も一歩から)」
       まぐまぐ  :http://www.mag2.com/m/0000120201.htm
       めろんぱん :http://www.melonpan.net/mag.php?005485
       メル天   :http://melten.com/m/16380.html
       カプライト :http://cgi.kapu.biglobe.ne.jp/m/8670.html
       E-MAGAZINE :http://www.emaga.com/info/megafri.html
       Macky!   :http://macky.nifty.com/cgi-bin/bndisp.cgi?M-ID=megafriday
       melma!   :http://www.melma.com/mag/20/m00102220/index_bn.html
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
       『 情報処理試験のお勉強(千里の道も一歩から) 』
       作者  :メガフラ(megafriday@yahoo.co.jp)
       HP  :http://jstudy.fc2web.com/
       発行周期:週間
     
      以下のスタンドより、発行させて頂いています。
      配信登録、配信中止も以下のアドレスよりお願いします。
     
      まぐまぐ  :http://www.mag2.com/m/0000120201.htm
      めろんぱん :http://www.melonpan.net/mag.php?005485
      メル天   :http://melten.com/m/16380.html
      カプライト :http://cgi.kapu.biglobe.ne.jp/m/8670.html
      E-MAGAZINE :http://www.emaga.com/info/megafri.html
      Macky!   :http://macky.nifty.com/cgi-bin/bndisp.cgi?M-ID=megafriday
      melma!   :http://www.melma.com/mag/20/m00102220/index_bn.html
     
     ----------------------------------------------------------------------
     <免責事項>掲載されているいかなる情報により損害を被っ
                 ても、当方では責任を負いませんことをご了承ください。
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     





情報処理試験のお勉強(千里の道も一歩から) (マガジンID:0000120201)

メールアドレス:
メールアドレス:

Powered by まぐまぐ


メインメニューに戻る

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送