データベース|令和元年度 秋期 ITパスポート試験(特別措置試験) 問87
売上伝票のデータを関係データベースの表で管理することを考える。売上伝票の表を設計するときに,表を構成するフィールドの関連性を分析し,データの重複及び不整合が発生しないように,複数の表に分ける作業はどれか。
- 結合
- 射影
- ✓ これが正解正規化
- 排他制御
解説
重複や不整合を防ぐために表を分けていく作業が正規化です。
売上伝票をそのまま一つの表にすると、同じ商品名や同じ得意先名が、伝票の数だけ繰り返し現れます。重複が多いと置き場所が無駄になるだけでなく、名前を直すときに直し漏れが出て、食い違いが生まれます。一つの表の中に古い名前が残ります。そこで、列どうしの関わりを調べて、繰り返し現れるまとまりを別の表へ切り出します。この作業を正規化といいます。商品の表、得意先の表、売上の明細の表という具合に分け、互いを結び付けるための列を置きます。こうしておけば、商品名を直すときは商品の表を一箇所直すだけで済みます。関係データベースの設計では、まずこの形に整えることが土台になります。分けた表は、必要になったときにつなぎ直して使えばよいので、見たい形が失われるわけではありません。よって最も適切なのは正規化です。
ほかの選択肢はなぜ違うのか
- 結合は、分かれている複数の表を、共通する列を手掛かりにつなぎ合わせる操作です。分けたものを使うときに行うので、設計の段階で表を分ける作業とは向きが逆になります。そもそも表を分けていなければ、この操作の出番もありません。
- 射影は、一つの表から必要な列だけを縦に抜き出す操作です。見たい部分だけに絞って取り出すために使うもので、表の形そのものには手を触れません。重複をなくすために表を組み替える設計の作業とは、行う時期も目的もまるで違います。
- 排他制御は、複数のプログラムが同じデータへ同時に書き込もうとしたときに、あとになって食い違いが起きないようにする働きです。動かしている最中に効く仕組みであり、表の形をあらかじめどう設計するかという話ではありません。
この問題に関係する言葉
- 正規化
- 結合
- 射影
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:令和元年度 秋期 ITパスポート試験(特別措置試験) 問87
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)