• ベストアンサー

表の切り替えについて

お尋ねします。 富士通のDBMSであるSymfoWAREを使用して業務構築を検討しておりますが、実現方式に不明な点がありますので質問させていただきます。 (処理概要) 1.定義情報のまったく同じ、表Aと表Bが存在する。 2.表Aにユーザアプリが登録・照会処理を行っている間  に、表Bに対してバッチ処理でデータの入れ替えを行  う。 3.バッチ処理完了後は、表Bをユーザーアプリに表Bを参 照させる。 (質問) 1.ユーザーアプリに判定処理を入れる事無く表Aを参照し  ていたのを表Bに参照させる事は可能でしょうか? 2.仮に不可能である場合、類似の実現方法はありますでし  ょうか? 3.DBMSがオラクルであれば実現できますでしょう   か? 以上、お手数をおかけ致しますがよろしくお願いします。

  • kiyoto
  • お礼率79% (163/205)

質問者が選んだベストアンサー

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.1

SymfoWareは、知らないのですが、Oracleでは、ビューを使用すればできると思います。 まず、Aに対するビューを作成し、アプリケーションを作成したビューを参照するようにする。2.の作業終了後、作成したビューをBを参照するように変更する。 これで一応できると思います。 (シノニムを使ってもできるかもしれない) 参考になればと思います

kiyoto
質問者

お礼

この方法で、検討していく事に致しました。 大変助かりました。

kiyoto
質問者

補足

回答どうも有難うございました。大変参考になりました。 SymfoWareも基本的にはoracleと同じようなので、この考え方は利用できると思います。参考にした考えをbourbonさんの回答に補足書き込みさせていただきました。 問題等ありましたら、またレスお願いします。

その他の回答 (1)

  • bourbon
  • ベストアンサー率46% (18/39)
回答No.2

msystemさんの方法はなかなか可能性があるお答えだと思います。 ただ、その場合ユーザがAに対して行っていた変更をどのように Bに反映させるのかが問題になるのではないでしょうか? Aの変更情報をBに反映させなくて良いのならば、参照先をBにすれば できますけど、表Aと表Bは整合性を保つ必要はないのでしょうか?

kiyoto
質問者

お礼

bourbonさんのご指摘のとおり、Aに対して行っていた変更内容はBに反映させる必要があります。そこで、下記の方法で検討する事に致しました。 ご指摘有難うございました。 (処理内容) 1.表Bに対してバッチ処理でデータの入れ替え終了後、表Aに対してのユーザーからの更新権限を剥奪する。 2.表Aから変更データを抽出し、表Bに対して反映させる。 3.表Aのビューを削除し、表Bのビューで作成しなおす。 4.表Aにユーザーからの更新権限を付与する。

kiyoto
質問者

補足

bourbonさんのご指摘のとおり、Aに対して行っていた変更内容はBに反映させる必要があります。そこで、下記の方法を考えてみました。 (処理内容) 1.表Bに対してバッチ処理でデータの入れ替え終了後、表Aに対してのユーザーからの更新権限を剥奪する。 2.表Aから変更データを抽出し、表Bに対して反映させる。 3.表Aのビューを削除し、表Bのビューで作成しなおす。 4.表Aにユーザーからの更新権限を付与する。 (疑問) 1.更新権限を表Aから剥奪した場合、ビューからも剥奪されますか? 2.表Aのビューから、表Bへのビューへ切り替える間に参照を行うユーザーアプリは、排他がかかりますか? 以上、ご意見をお願いします。

関連するQ&A

  • DBトラブルの解析方法について

    1、システム構成 (1)クライアント(Windows XP Professional) (1)VB6で作成した業務プログラム (2)oo4o(Oracle Object For Windows) (2)サーバ(HP-UX9000/800) (1)Oracle(DBMS) (ハードウェアが5台あり、ハードウェア毎にインスタンスが1つ作成済み。) (各インスタンスには、複数のユーザを作成済み。) (便宜上、各インスタンスをA,B,C,D,Eと呼ぶ。) 2、業務プログラムのoo4oを利用したDBAの流れについて 以下で挙げる処理1~4を順番に、GUIからの入力で実行します。 (1)処理1 (1)セションAを開始して、インスタンスAに接続。 (2)セションAからインスタンスAの複数の表の1レコードをロックする。 (3)セションAからDBリンクを利用して インスタンスBのオブジェクト(表など)を参照する。 (2)処理2 (1)セションBを開始して、インスタンスCに接続する。 (2)セションBからインスタンスCの1つの表1レコード参照してロックする。 (3)セションBからロックしたレコードを更新する。 (4)セションBをコミットする。 (3)処理3 (1)オペレーションCを開始して、インスタンスCに接続する。 (2)セションCからインスタンスCの複数の表の1レコード参照してロックする。 (3)セションCからインスタンスCの複数の表の登録・更新 (4)処理4 (1)セションAをコミットする。 (2)セションBをコミットする。

  • 複数のシートから一覧表を作成する方法

    次のことを実現させる方法を教えてください。 シート 「あ」「い」「う」があります。 ※例としてはシートを3つあげましたが、 このシートはどんどん数が増えていきます。 シート「あ」   A   B 1 鈴木 1976/1/1 シート「い」   A   B 1 佐藤 1977/1/1 シート「う」   A   B 1 山田 1978/1/1 そこから一覧表を作成したいのです。 その一覧表のシート名を「一覧表」とします。 シート「一覧表」(実現したいシート内容)   A    B   C 1 シート名 名前 生年月日 2 A     鈴木 1976/1/1 3 B     佐藤 1977/1/1 4 C     山田 1978/1/1 参照元のシートが固定されているなら   A    B   C 1 シート名 名前 生年月日 2 あ    あ!A1 あ!B1 3 い    い!A1 い!B1 4 う    う!A1 う!B1 と直接参照先を書けばいいのですが、 この方法では、シートが増えるたびに B列、C列にえ!A1 え!B1というように参照先を その都度書いていかなければいけません。 だから、一覧表で、シート名(A列)を入力ただけで、 自動的にそのシートに記載されている 名前と生年月日が反映されるようにしたいのです。 例えば今A3には「い」と記載されていますが、 これを「あ」と変更すると 以下のようにしたいのです。 B3のセルの中身は い!A1 → あ!A1 C3のセルの中身は い!B1 → あ!B1 一覧表のセルB列、C列にどのように記入すれば自動化できるでしょうか?

  • 表からの合計

    お世話になります、集計についてお教えください。 上段のような表があります。そしてこれを下段のような数字を合計した表に組み替えたいと思います。 この下段の表の黄色い部分に入れる数式を考えています。 上段の表に合計を示す行と列を挿入すればsumifを活用することで出来るかと思うのですが、できれば上段の表は生データとして触らないようにしたいのです。 また、実際のデータはかなりの行と列の数となっており、構成要素も多岐にわたるので手作業を加える相対参照などは避けたいと思っています。 加えて、今後の活用の点からもピボットなどの機能ではなく、関数を組み合わせた数式で処理したいと思っています。 どのようにすればよいかお教えくだされば幸いです。 A A B B あ 1 2 3 4 あ 5 6 7 8 い 9 10 11 12 い 13 14 15 16 い 17 18 19 20 A B あ い

  • バッチファイル内の分岐をSQLの結果を判断して行いたい

    バッチファイルにてあるプログラムのサービスを止める処理を行います。サービスを止める条件はOracleのデータを参照しなければなりませんのでバッチファイルでその条件を取得したいのですが、何か方法はありますか。

  • Oracle 参照用ユーザー作成

    Oracle 9i で新規で参照専用のユーザーを作成しています。 が、うまく作成できなかったため質問したいと思います。 現在、下記のようなデータベース、ユーザー名となっています。 データベース :A ユーザー :A これに対して、以下のユーザーを作成しました。 ユーザー :B ロール :CONNECT システム権限 :select any table execute any procedure この状態で、データベースAに対してユーザーBへ接続はできますが、 SELECT文を実行しても、”ORA-00942:表またはビューが存在しません”メッセージが表示されます。 そこで、BのロールをDBAにしたり、オブジェクト権限に、データベースAの表に対して 使用可能な権限としてSELECTを指定したりしたのですが、やはり同様のメッセージが表示されました。 データベースAの表を見れていない状況だと思うのですが、どのように、Aの表を参照するよう 設定してやるのかがわかりません。 何が不足しているのかご教授下さい。 よろしくお願い致します。

  • 表の外部結合を行いたい

    2つの表データがあるとします。 2つの表は別シートでもいいし、同一シートでもいいです。 例) ・表A コード 名称  1   A  3   B ・表B コード 名称2  1   あいう  2   かきく これを外部結合のようにしたいです。 ・結果 コード  名称  名称2  1    A   あいう  2        かきく  3    B アクセルなどでは無く、エクセルで実現したいのですが 出来るのでしょうか?

  • 2つの表の合成

    Excel2003です。5列目まで同項目で6列目以降の項目が異なる2つの表を、5列目をキーにそれぞれ並び替えた時、A表にあってB表に無い行があります。逆はありません。このA表にあってB表にない行を、B表に追加する方法が知りたいです。追加行は6列目以降は空白でかまいません。統合かと思いましたが、2つの表から参照するようで表として作成する事ではないようです。 どうぞ宜しくご教示下さい。

  • Oracle複数の表をもとにmerge文を実行

    Oracle11gでSQL文の質問 merge文を3つ以上の表を使いたいのですが mergeの実行で表Aに表B,表Cの値の挿入はできますか? mergeは表Aと表Bの2つの表の間のやり取りだけのでしょうか? よろしくおねがいします

  • 表の値を組み合わせて新しい表を生成したい

    表の値を組み合わせて新しい表を生成したい 元となる表は↓のようなものです。 0  0501  A 1  0502  B 2  0503  C 3  0504  D 4  0505  E 5  0506  F 6  0507  G 7       H 8 9 10 これをもとに繰り返し処理を行い、↓のような新しい表を生成したいのです。         A  B  C  D  E  F  G  H 0  0501 0  0502 0  0503 0  0504 0  0505 0  0506 0  0507 1  0501 1  0502 1  0503 1  0504 1  0505 1  0506 1  0507 2  0501 2  0502 2  0503 2  0504 2  0505 2  0506 2  0507 3  0501 3  0502 3  0503 3  0504 3  0505 3  0506 3  0507 ・ ・ ・ VBAもOKwaveも初心者です。あつかましいのですが、どなたかVBAの例文を作っていただけないでしょうか・・・ ようするには、もとの表の値を使って、集計表を作りたいのです。

  • 表引きの関数で困っています

    よろしくお願いします VLOOKUP関数ですが うまく表引きできません  2列の表でA列B列にデーターをいれた表があります D1には 式 =vlookup(D1,A1:B10,2,false))です D1にA1からB101での表を参照して 数値を引っ張っています いつもはうまくいきますが A1が 通し番号の場合はOKで ランダムな数値になりますと 引っ張れません 同じ数値が複数あると 最初のものだけ ひろいます 通し番号でなくて ランダムな数値でも 引っ張るにはどんな関数なんでしょうか サルにもわかるように やさしく 教えてください