[DB] 正規化しないことによる更新異常まとめ

どうも、tatsuです!

今回はテーブルを正規化しないことによって起こる更新異常について書いていこうと思います。
この記事を読む前に関連記事を読むことでより理解が深まると思いますので、ぜひどうぞ。

[DB] 第一正規化・第二正規化・第三正規化の違い

2017.10.21

正規化しないことによる更新異常

更新異常というのは第三正規化までされていないことが原因で発生します。
なので問題が発生するのは第一正規形か第二正規形ということになります。
 
更新異常には登録時・更新時・削除時のパターンが存在しますので、順番に説明します。
以下の第一正規形のテーブルを例にします。

登録時(INSERT)

このテーブルでは{レシート番号,商品コード}が主キーとなっていますが、部分関数従属(商品コード→{商品名,単価})や推移関数従属(店舗ID→{店舗名,住所})などが排除されていません。
 
このため、新しい商品を登録したくてもレシートが発行されないとテーブルに追加できないといった更新異常が起こります。
 
また、レシートを発行するたびに店舗名や住所は重複して登録されるため、冗長になり不整合が起きやすくなります。

更新時(UPDATE)

更新時では、例えば店舗名が変更になった場合、以下の問題が起こります。
店舗名は重複して登録されているため全ての行を同時に更新しなければ不整合が生じる

削除時(DELETE)

削除時では、例えばテーブルに1行しかない商品コードのデータがあった場合に以下の問題が起こります。
その行を削除してしまうと、1行しかない商品コードの情報が永久に失われてしまう。

データベーススペシャリスト試験への応用

データベーススペシャリスト試験の過去問を見ていると、正規化していないことによる更新異常を問う問題がよく出題されています。
 
また、回答文字数も50文字程度と多めなので、どんな時にどのような更新異常が起こるのかを覚えてしまった方が良いと思います。
 
ですが更新異常の種類はこの記事の通りなので、以下のことが分かればすんなりと問題を解くことができると思います。この機会に覚えちゃいましょう!

はっきりさせたいこと

  • 第一正規形、第二正規形のどちらなのか
  • 部分関数従属や推移関数従属している箇所はどこか
これが分かれば、あとは部分関数従属している箇所などを例に挙げた後で、どのような更新異常が起こるかを説明すればちょうどいい文字数になるのではないでしょうか。

まとめ

いかがでしたか?
今回は正規化しないことによる更新異常をまとめてみました。
ひとつひとつ着実に回答テクニックを身に着けて、データベーススペシャリスト試験に一緒にのぞみましょう!
それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です