問題 No.2097
関係データベースの正規化の進行に伴うトレードオフや運用上の影響に関する記述として、不適切なものはどれか。
【正解の解説】
正規化を進めてテーブルを細かく分割するほど、データの登録や更新時に発生する排他制御のロック競合が必ず減少する。
テーブルを細かく分けると、データ更新時の範囲が狭まるため一見競合が減るように思えますが、現実には複数のテーブルをまたぐ処理が増えます。これにより、かえって複数のロックを同時に取得する必要が生じ、ロック競合が激化してパフォーマンスが低下することもあるため、「必ず減少する」という断言は間違いになります。
スポンサーリンク
【その他の選択肢の解説】
正規化を進めてテーブルを細かく分割するほど、データの参照時に発生する外部結合の回数が増加して検索性能が低下する場合がある。
大きな本棚から一発で書類を取り出せたものが、細かく分類されすぎて何十もの引き出しを開け直すような状態になります。データベースでも同様に、バラバラになった情報を組み立てるための結合処理が急増し、システム全体の検索スピードが落ちるというトレードオフの罠に注意が必要です。
正規化を進めて冗長性を排除するほど、データの保存に必要な物理的な記憶容量は削減されるが、依存関係の把握が複雑化する。
同じデータがあちこちに重複して書かれているノートを整理して一冊にまとめるようなもので、ノート全体の厚み(容量)はスリムになります。しかし、情報のありかが細かく分かれるため、全体像やデータ同士の依存関係を人間がパッと把握する難易度は上がってしまうという実務的なデメリットを突いた記述です。
正規化を進めてテーブルの数を増やすほど、関連する複数のデータを同時に取得する際のSQL文の記述や結合処理が複雑になる。
パズルのピースが細かくなりすぎると、元の絵を復元するのに膨大な手間がかかるのと同じ現象です。必要なデータが散らばるため、SQLを書くエンジニアの負担が増え、プログラムの可読性やメンテナンス性も悪化するという、実務でよく直面する悩ましいトレードオフの側面を正確に表しています。