1

編集: 構造的な実装を交換しましたが、問題は同じままです。つまり、SvcRequest レコードを作成する前に、最初に Publication オブジェクトを作成します (まだ存在しない場合)。

「修正」しなければならないデータベースが与えられ、特定の問題について非常に当惑しています。簡単にするために、既に存在する 2 つのテーブル (結果) があります。この 2 つの関係を理解するのにしばらく時間がかかり、最終的に次のような従来のジャンクション テーブルに決定しました。

                     Publications (id, SvcReqID, LogID)
                             /              \
                            /                \
               SvcRequest (id)              SvcProgressLog (id)

SvcRequest と SvcProgressLog は、多かれ少なかれ兄弟テーブルであり、どちらも親への参照を含んでいます。この奇妙な階層的な関係を理解するのにしばらく時間がかかりましたが、CRUD 操作を簡単に実行できるように結合する方法が必要なだけです。

ここでのプロセスは次のとおりです。

  1. 出版物のサービス依頼が入ります。
  2. パブリケーションが存在する場合 --> 対応するパブリケーション レコードを更新します。そうでない場合は、新しいパブリケーションを作成します。その後、Web フォームから取得した情報から SvcRequest レコードを作成します。(ここで助けが必要です)
  3. 最後に、存在するがまだログに記録されていないリクエストのログ エントリを作成できます。

次の関係が存在します。

  • パブリケーション --> SvcRequest :: 1 --> 多数
  • パブリケーション --> SvcProgressLog :: 1 --> 多く
  • SvcRequest --> SvcProgressLog :: 多数 --> 多数 (-ish)

いつものように、私は助けと知恵の言葉に大いに感謝しています ;) よろしく

4

2 に答える 2

1

データベース構造と、ここでSvcRequestテーブルと呼んでいるものをサポートするすべてのテーブルが複雑なため、リクエストを「更新」(実際には挿入)するために個別に実行できる一連のストアドプロシージャを作成することを選択しました。新しいエントリを入力するためにマスターSPによって呼び出されます。

何時間にもわたる思考と設計の試行の後、これは私が思いつくことができる最良の解決策です。他の人も同様に利益を得ることができるように、それが書かれた後にいくつかのサンプルコードを投稿します。:)

于 2011-09-14T19:25:17.353 に答える
0

link_id を使用して SvcRequest および SvcProgressLog テーブルを関連付けることができない場合は、SvcProgressLog を Publication テーブルから関連付けを解除し、代わりに SvcRequest に直接関連付ける必要があります。

パブリケーション >-----+ SvcRequest +-----< SvcProgressLog

于 2011-09-13T18:31:46.857 に答える