Procedimiento almacenado para agregar una película

Estoy dispuesto a crear un procedimiento almacenado para agregar una película (estoy trabajando en una aplicación que almacena y enumera películas con información) y, antes de comenzar, me gustaría get información sobre cómo crearla.

Tengo las siguientes tablas:

  1. "Película" (MovieID, Nombre, Año, Longitud, Resumen)
  2. "Género", que es una list de géneros (GenreID, Género)
  3. "MovieGenre", que es una list de las películas y sus géneros. (MovieGenreID, GenreID, MovieID)
  4. "MovieRole", que almacena el nombre de los actores / directores, etc. (MovieRoleID, Name)
  5. "MovieRoleType", que almacena diferentes types de roles para una película, como actor (MovieRoleTypeID, MovieRoleType)
  6. "Cast", que es una list de los castings de películas (CastID, MovieRoleTypeID, MovieID, MovieRoleID)

Al agregar una película, debe proporcionar toda la información sobre la película, así como al less una function de película (por ejemplo, un actor) y un género. ¿Debo crear varios SP: s y ejecutarlos desde un SP, o cómo debería hacerlo?

NOTA: No te estoy pidiendo que escribas todo el SP por mí, solo pido pautas.

¡Gracias por adelantado!

Crearía varios procedimientos almacenados por separado y luego usaría una transacción para asegurarme de que las inserciones se cometieran juntas.

Vas a necesitar SP separados para agregar miembros de reparto adicionales, géneros, etc. No tiene mucho sentido para mí tener un SP grande y todo el código de soporte que se utiliza para llamar al SP y agregar una nueva película. + rol + género y luego tienen SP separados (y código de soporte) para duplicar la adición de roles y géneros. El uso de una transacción envolverá efectivamente todos sus SP por separado en una sola acción, haciendo que parezca casi un solo SP pero también le dará la flexibilidad de usar los SP individuales.

Necesitará un código de soporte para llamar a cada uno de los SP de todos modos. Código que validará parameters, manejará errores, establecerá los valores del SP, etc. Por lo tanto, necesitará funciones como AddRole, AddGenre, etc. en su aplicación. Prefiero tener una function en mi código llamada AddMovie que inició una transacción y luego invoqué cada una de estas funciones individuales. Divida el trabajo en piezas pequeñas y fáciles de probar y luego cree las funciones más grandes (AddMovie) llamando a las piezas más pequeñas que sepa que funcionan. Sería mucho más complicado build una function AddMovie que llamara a un SP diferente que básicamente hace las mismas cosas que las piezas que ya tienes.

Crearía un sproc para cada entidad, y luego posiblemente las envolvería en un SP separado llamado "AddNewMovie" o lo que sea.

AddNewMovie simplemente llamaría a los otros sprocs. Para una bonificación adicional, envuélvalos en una transacción.

Si no está familiarizado con las transactions, MSDN tiene un artículo bastante bueno