ITパスポート平成30年春期 問81

問81

顧客名と住所,商品名と単価,顧客が注文した商品の個数と注文した日付を関係データベースで管理したい。正規化された表として,適切なものはどれか。ここで,下線は主キーを表し,顧客名や商品名には,それぞれ同一のものがあるとする。

分類

テクノロジ系 » データベース » データベース設計

正解

解説

正規化の目的は、データの冗長性を排除しデータベースの整合性を維持しやすくすることです。具体的には、1つのデータが格納されているのは1箇所(1事実1箇所)になるように表を分解していき、更新処理に伴う異常の発生を防ぎます。

正規化の詳細な手順について説明することは避けますが、ここでは「1事実1箇所」を基準に適切な表分解となっているかどうかを判断します。
  • 正しい。1人の顧客に固有の情報(顧客名と住所)は"顧客"表に分離され、1つの商品に固有の情報(商品名と単価)は"商品"表に分離されています。これにより1人の顧客のデータは"顧客"表の1つの行だけに、1つの商品のデータは"商品"表の1つの行だけに存在することになります。
  • 顧客名が"顧客"表と"注文"表の両方に存在するので不適切です。
  • 顧客名が"顧客"表と"注文"表の両方に存在するので不適切です。
  • 1人の顧客が複数回の注文を行うと、"注文"表に同一の顧客名・住所が格納されることになります。この状態で、例えば顧客の住所を変更するとなると、該当するすべての行の値を同時に変更しなければなりません。もし1つでも更新作業から漏れるとデータベースの整合性が低下してしまうことになります。
© 2009-2019 ITパスポート試験ドットコム All Rights Reserved.

Pagetop