2009-08-02 51 views
5

是否有任何用于编写存储过程的模式?例如:存储过程的模式?

  1. 我们是否应该为每个表编写1个Sp更新,1个插入和1个选择。
  2. 什么时候可以创建视图。
  3. 如何管理SP中的业务规则?
  4. 如何减少重复的代码等等等等。

任何好的文章或书籍阅读有关这些模式......

感谢

+1

阅读此人:http://stackoverflow.com/questions/718282/best-books-in-database-design-and-optimization – 2009-08-02 19:23:21

回答

6

通常情况下,存储的特效遵循一个CRUD(http://en.wikipedia.org/wiki/Create,_read,_update_and_delete)模式,但它们不必局限于此。

1)你可能要合并更新和插入。如果主键被填充,那么它是一个更新,否则它是一个插入。对于GUID和其他客户端生成的密钥,首先更新,如果rowcount为零,则需要执行插入操作。 insert/update proc通常会返回一个主键。

你会希望有一个get_by_id PROC以及一些数量的get_by_non唯一的准则,它返回任何的行数。我们的想法是确保结果集中的列在所有get/list过程中都是相同的。

这些程序的目标并不一定是一个表,甚至一个观点,而是一个逻辑实体,所以你可能需要做各种连接,无论是关系和查找。这可能有助于返回多个结果集。

2)浏览是很方便的,但不是特别相关于此。有时他们帮助重复使用,但并非总是如此。

3)这一切都依赖于商业规则。您当然可以在存储的proc级别防止某些类型的数据损坏,但是它可以或应该知道的数量有限制。话虽如此,还是有特殊用途的情况下,您可能需要在proc中添加更多逻辑,例如登录。

4)你不能总是这样做,但有时可以分解出公共代码为较低级别的斯图尔特效,用户不打电话。

希望这是一个开始。