- ベストアンサー
マスタデータ更新の方法とは?
- システム開発初心者の方がマスタデータ更新の方法についてアドバイスを求めています。
- 現在はシステム管理者のみがAccessからマスタデータを更新していますが、リーダークラスの人もできるようにしたいとの要望があります。
- マスタデータの更新方法として、一時テーブルや変更用テーブルを使用する方法や、フラグを設けてSQL文を発行する方法が考えられますが、どのような方法が適切でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
実際に私はあまりこの手のものを作ったことがないのであまり的確なアドバイスにならないかもしれませんが、 何がいつ誰によってどう変更(追加)されたかを知る必要があるなら直接リンクテーブルのデータを変更することはできないと思います。 ログの必要がなければ、それこそリンクテーブルのデータを連結フォームから変えてしまえばよいわけですけど、そうだったらこんな質問は出ないですよね。 >削除は、解除フラグがあるものは解除フラグを立てるだけ これは、実際はマスタの更新なので現実に発生する処理は追加及び更新の2種類と考えてよいと思います。 私が作るなら、 (1)非連結フォームにA.dbよりデータを読み込む仕組みを作り、読み込む際にその内容をログテーブルに保存して (2)フォーム上でマスタデータの変更を行い変更内容をA.dbに書き込むSQL文を作って、ローカルのテーブルに、登録ユーザーIDや変更時刻、 などとともに保存しておき、 (3)sqlを実行させます。 sqlをいれたテーブルと読み込んだデータテーブルがそのままログになります。 アクセスにVBAでたくさん書くことに関しては、ちょっと抵抗があるので可能であればVBなどを使われたほうがちょっと安心できるかもしれません。 アクセスで全部作られるなら、こまめにバックアップを取りながら、、、 あまりVBAで書きたくないなら(クエリなどで片付けたいなら(考えられた方法の(1)とほとんど同じですが、全マスタデータをローカルに持ってくる必要はない。) (1)1マスタデータをB.mdb上の仮テーブル及びログテーブルに読み込み、 (2)連結フォームで変更をさせ、B.mdbのテーブルに保存しておく。 (3)(2)で作ったデータ内容をa.dbに反映させる。 どちらのケースでもフォーム上では新規登録であるかどうかの判断は インデックスになるIDなどを一度マスタテーブルを検索して重複しているデータがあれば更新であるし、新規であれば追加ということになります。
その他の回答 (2)
スーツのデザイナでプログラマではありません。 ですから、かなりトンチンカンだと思いますが... 1、Accessプロジェクトでなく、なぜ、 mdb なのかと思いました。 2、データベースの管理は、SQL文の発行で全て済ましてしまうが基本と思いますが... 3、テンポラリファイルは SQL Server に作成することも出来るのではないのかなあ・・・ こんな、他愛もない感想を持ちました。
お礼
s_huskyさんも、ありがとうございます。 基礎がわかっておらず、理解できないため、調べてから、検討させていただきたいと思います。 こういうことをおっしゃっていたのか! と分るようになるといいのですが。。。 勉強不足ですみません。
マスター変更の運用規則というのがどういうものかによりますが、 例えば変更を即座に反映させたいのか、バッチ処理などで決まった時間に反映させるのかによります。 また、変更前のマスターの状態を再現させる必要があるかどうかによってつくりが変わってきます。 あと、現在のマスターに開始日、終了日などのフィールドがあるか教えていただけますでしょうか?
補足
こんにちは! お答えありがとうございますね。 マスタデータへのデータ登録は、あっても1週間に1回くらいです。(追加したいデータにより、更新/追加/削除にかかわるレコードの数はまちまちです) ローカルPCにてデータを一通り更新し終わったら、すぐにマスタDBへは反映させたいと思います。 (バッチではなく、リアルタイムになるのでしょうか?) マスタDBの設計があまりよくないため(でも、これを直すほどの手間はかけられない)、データの入力(DB構造)を覚えるのに時間がかかりますので、リーダーさんから入力してもらったデータに間違いがないか、最初の頃は、システム管理者がチェックできるようにするかということも悩んでいます。 本来でしたら、A.DBのリンクテーブルをローカルのB.mdbに作成し、直接、更新/追加/削除を行うのが一番簡単なんですが、上記点から、一時テーブルに保存して、変更したところがわかるようにしたいと思います。 (すみません、日本語おかしいかもです。。。) >また、変更前のマスターの状態を再現させる必要があるかどうかによってつくりが変わってきます。 なので、再現させる必要もあるかもしれません。 現在のマスターには、開始日・終了日のフィールドはありません。解除フラグはあります。 ・追加はデータ追加 ・更新(変更)はそのまま変更 ・削除は、解除フラグがあるものは解除フラグを立てるだけ(マスターにより解除フラグがないものもあるので、削除する場合も有9 という感じです。 意味、わかりますでしょうか??
お礼
ありがとうございます。 せっかくお返事いただきましたのに、私の中でどうも理解できません(;_;) 追加・更新の2種類でOKというのと、全てのマスタエータをローカルに持ってこなくて良い ということは、大変勉強になりました。 ありがとうございますね。 これを頭に入れて、もう少し調べてみることにします。 ありがとうございました!