ITパスポート 2015年 秋期 問79
問題文
ファイルのあるレコードが変更されたときに、変更された内容を特定する方法として、適切なものはどれか。
選択肢
ア:ファイルのサイズ及び更新日時を記録しておく。
イ:ファイルの複製をとっておき、後で照合する。(正解)
ウ:レコードの件数をファイル内に記録しておく。
エ:レコードをキー項目で昇順に並べておく。
🔒 解説は解答すると表示されます
ファイルのあるレコードが変更されたときに、変更された内容を特定する方法【ITパスポート 解説】
正解の理由
ファイル全体ではなく「どのレコード(行)が、どの項目(列)で変わったか」を特定するには、変更前の内容と変更後の内容を直接比べる必要があります。したがって、変更前の状態のファイルを保存しておき、後で比較する方法が適切です。選択肢の中では、ファイルの複製をとっておき後で照合する方法がこれにあたり、正解は イ です。
理由をかみ砕くと:
- 変更内容を「特定する」=どのレコードのどのフィールドが変わったかを明らかにする必要がある。
- そのためには「変更前の値」と「変更後の値」を並べて比較できるデータが必要。
- ファイルの複製を保存すれば、複製(変更前)と現ファイル(変更後)を照合(=比較)して差分が分かる。
(補足)ここでいう「レコード」はデータの一まとまり、表で言えば1行分のデータを指します。照合は単に「一致するか比較すること」です。
解法ステップ
- 変更前のファイルを安全に保存する
- 日付やバージョン名を付けてコピーを作る(例: data_20260714.bak)。
- 変更後のファイルと保存しておいた複製を比較する
- レコード単位、フィールド単位で比較する。差分がある箇所が変更箇所。
- 差分の表示方法を決める
- 「どのレコード(キー項目)」が変化したか、さらに「どの項目(カラム)」が変わったかを出力する。
- 必要ならログや証跡を残す
- 誰がいつ変更したかを記録しておくと運用で役立つ。
実例(簡単な考え方):
- レコードに主キー(社員IDなど)があれば、同じキーで行を照合する。
- フィールドを1つずつ比較し、値が異なるものを差分として報告する。
選択肢別の誤答解説
-
ア: ファイルのサイズ及び更新日時を記録しておく。
- ファイルのサイズや更新日時で「何か変わった」ことは検出できますが、どのレコードが、どの項目をどのように変更したかは分かりません。更新日時は「いつ更新されたか」の目安であり、内容の特定には不十分です。
-
イ: ファイルの複製をとっておき、後で照合する。
- 正解。複製(変更前)と現在(変更後)を直接比較できるため、変更されたレコードと項目を特定できます。
-
ウ: レコードの件数をファイル内に記録しておく。
- 件数はレコードの増減(追加・削除)は分かることがありますが、既存レコードの内容変更(値が変わる)は検出できません。件数が同じでも中身は変わるからです。
-
エ: レコードをキー項目で昇順に並べておく。
- 並べておくことは検索や比較を簡単にしますが、自体が変更検出手段ではありません。並べ方は比較を効率化する手段にはなりますが、変更を特定するには「比較する対象(変更前データ)」が必要です。
よくある誤解
-
「更新日時が変われば、どのレコードが変わったか分かる」
- 更新日時はファイル単位やレコード単位で記録できる場合もありますが、ファイル全体の更新日時だけではどのレコードか特定できません。レコード単位のタイムスタンプが無ければ意味が薄いです。
-
「並べ替えておけば差がすぐ分かる」
- 並べ替え(ソート)は比較を簡単にしますが、比較対象がなければ意味がありません。並べ替えは補助技術です。
-
「件数が同じなら内容は変わっていない」
- 件数が一致していても、既存レコードのフィールドが書き換えられていることはよくあります。件数は完全な判定には使えません。
補足コラム
実務やより便利な手法
- レコード単位での「更新日時」や「更新者(who)」をカラムに持たせる方法があります。これにより、どのレコードがいつ誰によって変更されたかが分かります(例:updated_at, updated_by)。
- チェックサム(ハッシュ):各レコードの値から計算した短い値(ハッシュ)を保存しておき、後でハッシュを比較すると変更の有無を高速に判定できます。ハッシュは「データの短い代表値」と考えると分かりやすいです。注意点は「どの項目が変わったか」はハッシュだけでは分からない点です(差分は別途必要)。
- データベースなら監査(Audit)機能やトリガ(自動処理)を使って変更履歴を自動で記録する方法もあります。これらは手作業の複製より効率的で信頼性が高いです。
- 差分ツール(diff)や専用の比較スクリプトを使えば、大きなファイルの比較も自動化できます。
簡単な例(概念):
- 元データ:A,B,C の3レコード
- 更新後データ:A,B',C (Bが更新)
- 比較結果:レコードBのフィールドXが「old → new」と表示されれば完了。
FAQ
Q. 複製を常に保持するのは容量が心配です。どうすればよいですか?
A. フルコピーではなく差分バックアップ(前回から変わった部分だけ保存)や、ハッシュ+変更履歴を組み合わせる方法が有効です。データベースなら変更ログだけを保存する監査機能を使うと効率的です。
A. フルコピーではなく差分バックアップ(前回から変わった部分だけ保存)や、ハッシュ+変更履歴を組み合わせる方法が有効です。データベースなら変更ログだけを保存する監査機能を使うと効率的です。
Q. チェックサム(ハッシュ)を使うとすべて解決しますか?
A. ハッシュは「変わったか」を素早く検出するのに有効です。ただし、どのフィールドが変わったかを知るには、差分比較が別途必要です。ハッシュとレコード比較を併用するのが実務的です。
A. ハッシュは「変わったか」を素早く検出するのに有効です。ただし、どのフィールドが変わったかを知るには、差分比較が別途必要です。ハッシュとレコード比較を併用するのが実務的です。
Q. 手作業での比較は現実的ですか?
A. 小さなファイルなら可能ですが、現場では自動化(スクリプトやツール)を使うのが一般的です。自動化すればヒューマンエラーも減ります。
A. 小さなファイルなら可能ですが、現場では自動化(スクリプトやツール)を使うのが一般的です。自動化すればヒューマンエラーも減ります。
関連キーワード: データ比較、差分検出、バックアップ、変更履歴、チェックサム、監査ログ、トリガ、レコード比較, バージョン管理

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

