HOME»ITパスポート平成30年春期»問81
ITパスポート平成30年春期 問81
問81
顧客名と住所,商品名と単価,顧客が注文した商品の個数と注文した日付を関係データベースで管理したい。正規化された表として,適切なものはどれか。ここで,下線は主キーを表し,顧客名や商品名には,それぞれ同一のものがあるとする。
分類
テクノロジ系 » データベース » データベース設計
正解
ア
解説
正規化の目的は、データの冗長性を排除しデータベースの整合性を維持しやすくすることです。具体的には、1つのデータが格納されているのは1箇所(1事実1箇所)になるように表を分解していき、更新処理に伴う異常の発生を防ぎます。
正規化の詳細な手順について説明することは避けますが、ここでは「1事実1箇所」を基準に適切な表分解となっているかどうかを判断します。
正規化の詳細な手順について説明することは避けますが、ここでは「1事実1箇所」を基準に適切な表分解となっているかどうかを判断します。
- 正しい。1人の顧客に固有の情報(顧客名と住所)は"顧客"表に分離され、1つの商品に固有の情報(商品名と単価)は"商品"表に分離されています。これにより1人の顧客のデータは"顧客"表の1つの行だけに、1つの商品のデータは"商品"表の1つの行だけに存在することになります。
- 顧客名が"顧客"表と"注文"表の両方に存在するので不適切です。
- 顧客名が"顧客"表と"注文"表の両方に存在するので不適切です。
- 1人の顧客が複数回の注文を行うと、"注文"表に同一の顧客名・住所が格納されることになります。この状態で、例えば顧客の住所を変更するとなると、該当するすべての行の値を同時に変更しなければなりません。もし1つでも更新作業から漏れるとデータベースの整合性が低下してしまうことになります。