1

EDIT:私は構造的な実装を取り替えましたが、私の問題は変わりません。 SvcRequestレコードを作成する前にまずPublicationオブジェクト(がまだ存在しない場合は)を作成します。以前の関係のないテーブルの関連付け(SQL Server)

私は「修正」しなければならないデータベースを与えられており、特定の問題についてかなり困惑しています。簡単にするために、すでに存在していた2つのテーブル(結果)があります。これは、2つ、最終的には次のように伝統的な接合テーブルに決めたとの間の関係を把握するためにしばらくかかった:

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

SvcRequest & SvcProgressLogは多かれ少なかれ兄弟テーブルです両方の親への参照を含みます。私との間には分かりにくい階層的な関係がありますが、CRUD操作を簡単に行うための方法が必要です。次のようにここで

プロセスである:。パブリケーションが存在する場合

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

次の関係が存在します

  • 出版 - > SvcRequest :: 1 - >多くの
  • 出版 - > SvcProgressLog :: 1 - >多くの
  • SvcRequest - > SvcProgressLog ::多く - >多くの(-ish)

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

+0

受信したサービスリクエストからパブリケーションが存在するかどうかを確認できますか? –

+0

@Catcall:残念ながら、いいえ、最初にパブリケーション・テーブルと照合する必要があります。 – Chiramisu

答えて

1

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

数時間の思考と設計の試行の後、これが私が思いつく最善の解決策です。他の人も同様に役立つように、サンプルコードを書いた後に投稿します。 :)

0

LINK_IDは、あなたが出版テーブルからSvcProgressLogの関連付けを解除し、代わりに直接SvcRequestにそれを関連付ける必要がありますSvcRequestとSvcProgressLogテーブルを関連付けるために使用することができない場合は、次の

出版物> ----- + SvcRequest + ----- < SvcProgressLog

+0

私はあなたの意見を理解するのに苦労しています。 : -/ – Chiramisu

+0

パブリケーションはSvcRequestと1対多の関係を持っています。SvcRequestには、SvcProgressLogとの1対多の関係があります。 – Wil

+0

SvcRequestは、実際にはSvcProgressLogとの関係が多対多です。したがって、それらの間の "接合"テーブルの必要性。 – Chiramisu

関連する問題