【问题标题】:Stored procedure for adding a movie添加电影的存储过程
【发布时间】:2012-03-07 18:28:41
【问题描述】:

我准备创建一个用于添加电影的存储过程(我正在开发一个应用程序来存储和列出带有信息的电影),在开始之前,我想了解一下如何创建它。

我有以下表格:

  1. “电影”(电影 ID、名称、年份、长度、摘要)
  2. “Genre”,即流派列表(GenreID、Genre)
  3. “MovieGenre”,这是电影及其流派的列表。 (MovieGenreID、GenreID、MovieID)
  4. “MovieRole”,存储演员/导演的姓名等(MovieRoleID、Name)
  5. “MovieRoleType”,存储电影的不同类型的角色,如演员(MovieRoleTypeID、MovieRoleType)
  6. “Cast”,这是电影演员的列表(CastID、MovieRoleTypeID、MovieID、MovieRoleID)

添加电影时,您必须提供有关电影的所有信息,以及至少一个电影角色(例如演员)和类型。我应该创建几个 SP:s 并从一个 SP 执行它们,还是应该怎么做?

注意:我并不是要你为我编写整个 SP,只是要求一些指导。

提前致谢!

【问题讨论】:

    标签: sql stored-procedures


    【解决方案1】:

    我会创建几个单独的存储过程,然后使用事务来确保插入一起提交。

    您将需要单独的 SP 来添加额外的演员、流派等。拥有一个大型 SP 以及调用 SP 添加的所有支持代码对我来说没有多大意义一部新电影 + 角色 + 类型,然后有单独的 SP(和支持代码)来复制角色和类型的添加。使用事务将有效地将所有单独的 SP 包装到单个操作中,使其看起来几乎像单个 SP,但也使您可以灵活地使用各个 SP。

    无论如何,您都需要支持代码来调用每个单独的 SP。将验证参数、处理错误、设置 SP 值等的代码。因此,您的应用程序中将需要 AddRole、AddGenre 等函数。我宁愿在我的代码中有一个名为 AddMovie 的函数,它启动一个事务,然后调用这些单独的函数中的每一个。将工作分解为易于测试的小块,然后通过调用您知道工作的较小部分来构建较大的函数 (AddMovie)。构建一个调用不同 SP 的 AddMovie 函数会复杂得多,该 SP 基本上可以完成许多与您已经拥有的部分相同的事情。

    【讨论】:

      【解决方案2】:

      我会为每个实体创建一个存储过程,然后可能将它们包装在一个名为“AddNewMovie”的单独 SP 中。

      AddNewMovie 只会调用其他存储过程。为了获得额外奖励,请将它们包装在交易中。

      如果你不熟悉事务,MSDN 有一个pretty good article

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-26
        • 2012-09-03
        • 2017-04-22
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多