2012-03-07 3 views
1

Я занимаюсь созданием хранимой процедуры для добавления фильма (я работаю над приложением, которое хранит и списывает фильмы с информацией), и перед началом работы я хотел бы получить информацию о том, как чтобы создать его.Сохраненная процедура для добавления фильма

У меня есть следующие таблицы:

  1. "Movie" (MovieID, название, год, длина, Резюме)
  2. "Жанр", который представляет собой список жанров (GenreID, жанр)
  3. «MovieGenre», который представляет собой список фильмов и их жанров. (MovieGenreID, GenreID, MovieID)
  4. «MovieRole», в котором хранится имя актеров/режиссеров и т.д. (MovieRoleID, имя)
  5. «MovieRoleType», в котором хранятся различные виды ролей для кино, как актер (MovieRoleTypeID , MovieRoleType)
  6. «Cast», который представляет собой список фильмов броска (CastID, MovieRoleTypeID, MovieID, MovieRoleID)

При добавлении фильма, который вы должны предоставить всю информацию о фильме, а также по крайней мере, одну роль фильма (например, актера) и жанр. Должен ли я создать несколько SP: s и выполнить их из одного SP или как мне это сделать?

ПРИМЕЧАНИЕ: Я не прошу вас написать весь СП для меня, просто прося о каком-то руководстве.

Заранее благодарен!

ответ

3

Я бы создал несколько отдельных хранимых процедур, а затем использовал транзакцию, чтобы убедиться, что вставки были объединены вместе.

Вам понадобятся отдельные SP, чтобы добавить дополнительных участников, жанры и т. Д. Мне не имеет большого смысла иметь один большой SP и весь код поддержки, который идет на вызов SP добавить новый фильм + ролик + жанр, а затем иметь отдельные SP (и код поддержки), чтобы дублировать добавление ролей и жанров. Использование транзакции эффективно переносит все ваши отдельные SP в одно действие, создавая его почти как отдельный SP, но предоставляя вам гибкость в использовании отдельных SP.

В любом случае вам понадобится код поддержки для вызова каждого отдельного SP. Код, который будет проверять параметры, обрабатывать ошибки, устанавливать значения SP и т. Д. Таким образом, в вашем приложении вам понадобятся такие функции, как AddRole, AddGenre и т. Д. Я бы предпочел иметь одну функцию в моем коде под названием AddMovie, который начал транзакцию, а затем вызвал каждую из этих отдельных функций. Разбейте работу на небольшие, легко проверяемые части, а затем создайте более крупные функции (AddMovie), называя меньшие фрагменты, которые, как вы знаете, работают. Было бы намного сложнее создать функцию AddMovie, которая вызвала бы другой SP, который в основном делает то же самое, что и у частей, которые у вас уже есть.

1

Я бы создал sproc для каждой сущности, а затем, возможно, обернул их в отдельный SP под названием «AddNewMovie» или что-то еще.

AddNewMovie будет просто называть другие sprocs. Для дополнительного бонуса оберните их транзакцией.

Если вы не знакомы с транзакциями, MSDN имеет pretty good article

Смежные вопросы