このたびはお世話になります。
社内における業務においてAccessで管理しているデータがあるのですが、後任担当者への説明に苦慮しておりますので、
皆さまのお知恵をいただけないでしょうか。
実は。
ごくまれにDB破損?のような状態になる(テーブルが開けなくなる)ことがありますので、当該担当者には
事象発生時に「データベースの最適化/修復」をクリック、実施するように説明していたのですが、
最近当人が作成した業務手順の資料を確認したところ、なぜか以下の4つの手順、
1.ナビゲーションウィンドウに表示されているテーブルをコピー・貼り付けする。
2.「テーブルのコピー」が新たに作成され、ナビゲーションウィンドウに表示される。
3.元のテーブルを削除する。
4.「テーブルのコピー」のリネームを行い、元のテーブル名と同一にする。
という手順を記載していたことが判明しました。
当人(一応、自称SE。ちゃんとAccessの操作を習ったわけではなく、間違った情報や考えを持っている)の
言い分としては、「テーブルが破損しているから洗い替え」をしているそうなのですが、
私自身は「そもそもテーブルのコピーとリネームをするだけで洗い替えをしたことにはならない」、
また「データベースの最適化/修復」をしない限り、DB破損やテーブルの復旧は不可能である認識です。
(そもそも洗い替えの定義自体を間違えて覚えている可能性が。。。あります。)
初歩的な質問で大変恐縮なのですが、どう説明してもらえば理解してもらえるか、トホホな状態を
お助けいただきたく、お願い申し上げます。
まず、データベースのデータの管理方法は、エクセルのブックなどのファイルの管理方法とは異なります。
ブックならディスクからメモリ上に読み込んで、更新後ディスクに上書きします。
つまりディスク上のデータ位置は連続しているし、データの順番も固定されています。
Accessの場合は、テーブルデータの更新、削除、追加した場合、データの連続性、データの並び順は保証されません。
更新した場合同じ位置に上書きされるとは限りません。
削除した場合、実際に削除されるわけではなく削除フラグを立てるだけです。
追加した場合、ファイルの最後に追加されるわけでもありません。
これは大量のデータを扱うデータベースに最適化された設計です。
つまり更新、削除、追加を繰り返すと、データの連続性はなくなり、データの並び順もごちゃごちゃになります。
このままではファイルサイズは肥大して、パフォーマンスも落ちます。
データ破損の危険性も高まります。
この非連続性を解消して、並び順もキーフィールドに合致するようにするのが「データベースの最適化/修復」という処理です。
Accessデータベースにおいて定期的な「データベースの最適化/修復」というのは必須といえます。
「テーブルのコピー」→「リネーム」で解決できる場合もあるかもしれませんが、それでは上記の非連続性は解消されませんので根本的な解決にはならないでしょう。
また、データペースにおいて、リレーションシップが設定されていれば、コピー→リネームの前にリレーションシップの削除、リネーム後にリレーションシップの再設定という作業も必要になり煩雑になります。設定ミスで破損なんてことにもなりかねません。
「データベースの最適化/修復」でやっていることは、元のデータベースファイルからデータをキーフィールドの並び順に読み込んで、新規データベースファイルに書き込むという処理をして、完了後に元のファイルを削除して新規ファイルをリネームするということをしています。つまり「洗い替え」をしているということだと思います。
経験上「データベースの最適化/修復」を定期的にやっていればめったに破損することはないです。
ただ、絶対破損しないということはないし、「データベースの最適化/修復」で修復できない場合もないとは言えないので、定期的にデータベースファイルのバックアップを取るという運用も必須でしょう。
hatenaさま
早速なるアドバイスをいただき、ありがとうございました(深々お辞儀)。
自分が想定していた内容、そのものズバリを解りやすく書いていただき、腑に落ちました。
当人が何故「テーブルのコピー」→「リネーム」を洗い替えできていると認識しているのかは
相変わらずナゾですが(しかも自称SE・・・)、
とりあえず「データベースの最適化/修復」を定期的に行うように何とか説得をして、
業務手順資料も修正してもらうように働きかけをしておきます。
それにしても、自称って困りものですね。。。(何を言っても耳を貸さないので)