関係データベースで表を分けるのはなぜか
ITパスポート試験 令和元年度秋期 問87 / データベース › データベース設計
過去問にチャレンジ
売上伝票のデータを関係データベースの表で管理することを考える。売上伝票の表を設計するときに,表を構成するフィールドの関連性を分析し,データの重複及び不整合が発生しないように,複数の表に分ける作業はどれか。
- ア
結合
- イ
射影
- ウ
正規化
- エ
排他制御
会話形式の解説
講師注目するのは、フィールド、つまり表の項目同士の関係を調べて、表を分けるという点です。
受験者複数の表が出てくるので、結合かと思いました。
講師結合は、既にある複数の表を関連する項目でつなぐ操作です。表を分けて設計する作業は正規化です。
受験者正規化では、何を基準に表を分けるのですか。
講師項目間の関係を分析します。データの重複や、更新時の不整合を減らすために表の構成を整理します。
受験者射影も表に関係する用語ですが、表を分ける操作ではないのですか。
講師射影は、表から指定した列を取り出す操作です。項目の関係を分析して表を設計する作業とは異なります。
受験者排他制御は、データの不整合を防ぐという点で似ている気がします。
講師排他制御は、複数の処理によるデータへの同時アクセスを制御する仕組みです。この問題で問われている表の設計作業には当たりません。
受験者表を分けて設計するなら正規化、既にある表をつなぐなら結合、と区別すればよいですね。
講師そのとおりです。「複数の表」だけで判断せず、分ける作業なのか、つなぐ操作なのかを確認しましょう。
まとめ
正解は正規化です。項目間の関係を分析して表を分け、データの重複や更新時の不整合を減らす設計作業を指します。結合は表同士をつなぎ、射影は指定した列を取り出す操作です。排他制御は、複数の処理による同時アクセスを制御する仕組みです。
解答・解説
正解はウです
この問題のテーマ
関係データベースで、データの重複や更新時の不整合を減らすための表の設計作業を問う問題です。
解き方の考え方
「フィールドの関連性を分析する」「複数の表に分ける」という部分に注目します。これは、重複や不整合を減らすために表の構成を整理する正規化の説明です。ほかの選択肢は、表からデータを取り出す操作や、同時アクセスを制御する仕組みとして区別します。
選択肢ごとの解説
- ×ア 結合アの結合は、複数の表を関連する項目でつなぐ操作です。表をどう分けて設計するかを指す言葉ではないため、当てはまりません。
- ×イ 射影イの射影は、表から指定した列を取り出す操作です。フィールドの関連性を分析して表を分ける作業ではないため、当てはまりません。
- ○ウ 正規化ウの正規化は、項目間の関係を分析し、表を適切に分ける設計作業です。データの重複や更新時の不整合を減らすという目的も、問題文と一致します。
- ×エ 排他制御エの排他制御は、複数の処理によるデータへの同時アクセスを制御する仕組みです。表の構成を分析して分ける作業ではないため、当てはまりません。
補足
「複数の表」という語だけで結合を選ばないようにしましょう。表を分けて設計するのが正規化で、既にある表をつなぐのが結合です。
POINT
- 正規化は、項目間の関係を分析して表を分ける設計作業です。
- 正規化の目的は、データの重複や更新時の不整合を減らすことです。
- 結合は表同士をつなぎ、射影は指定した列を取り出す操作です。
- 排他制御は、複数の処理が同時にデータへアクセスする場面に関係します。
