2012-03-07 20 views
1

ムービーを追加するためのストアドプロシージャを作成しています(ムービーを保存して情報をリストするアプリケーションで作業しています)。開始する前に、それを作成する。 ムービーを追加するためのストアドプロシージャ

I持って、次の表:

  1. ジャンル(GenreID、ジャンル)
  2. のリストである "ムービー"(MOVIEID、名前、年、長さ、要約)
  3. "ジャンル"、
  4. "MovieGenre"は、映画とそのジャンルのリストです。俳優のように、映画の役割の異なる種類を格納俳優/監督など(MovieRoleID、名前)の名前
  5. "MovieRoleType" を記憶(MovieGenreID、GenreID、MOVIEID)
  6. "MovieRole"、(MovieRoleTypeIDさんをキャスト、映画(CastID、MovieRoleTypeID、MOVIEID、MovieRoleID)のリストがあり、MovieRoleType)
  7. 「キャスト」、

あなたはすべての映画についての情報だけでなく、を提供しなければならない映画を追加します少なくとも1つの映画の役割(例えば、俳優)およびジャンル。いくつかのSPを作成して1つのSPから実行するか、どうすればよいですか?

注:私はSPの全文を書く必要はありませんが、いくつかのガイドラインを求めるだけです。

ありがとうございます!

答えて

3

私はいくつかの独立したストアドプロシージャを作成し、トランザクションを使用して挿入が一緒にコミットされたことを確認します。

キャストメンバーやジャンルなどを追加するには、別のSPが必要になります。大きなSPを1つ持ち、SPを呼び出すためのサポートコードをすべて新しい映画+役割+ジャンルを追加してから、役割とジャンルの追加を複製するために別々のSP(およびサポートコード)を作成します。トランザクションを使用すると、すべての個別のSPを1つのアクションにまとめて1つのSPのように見せることができますが、個々のSPを柔軟に使用することができます。

とにかく個々のSPを呼び出すには、サポートコードが必要になります。パラメータを検証したり、エラーを処理したり、SPの値を設定するコードなどです。アプリケーションにAddRole、AddGenreなどの関数が必要です。私はむしろ、トランザクションを開始し、これらの個々の関数のそれぞれを呼び出すAddMovieというコード内に1つの関数を持つことになります。仕事を小さくして簡単にテストできる部分に分割し、作業が分かっている小さな部分を呼び出すことで、より大きな機能(AddMovie)を構築します。 AddMovieの機能を構築するのははるかに複雑ですが、基本的には既に持っているものと同じことをたくさん行う別のSPを呼び出します。

1

私は各エンティティごとにsprocを作成し、それらを「AddNewMovie」などの別のSPでラップすることもできます。

AddNewMovieは他のsprocsを呼び出すだけです。ボーナスを追加するには、それらをトランザクションでラップします。

取引に精通していない場合、MSDNにはpretty good article

関連する問題