2009-08-02 14 views
5

¿Hay algún patrón para escribir procs almacenados? como:Patrones para procedimientos almacenados?

  1. Deberíamos escribir 1 Sp para actualizar, 1 para insertar y 1 para seleccionar para cada tabla.
  2. Cuándo es bueno crear vistas.
  3. ¿Cómo administrar las reglas comerciales en SP?
  4. Cómo reducir el código duplicado, etc, etc ..

Cualquier buen artículo o un libro para leer sobre estos patrones ...

gracias

+1

Lea este: http://stackoverflow.com/questions/718282/best-books-in-database-design-and-optimization –

+0

@HawX: No es una respuesta directa, pero útil. Gracias. –

+0

Los procedimientos almacenados son una fuente importante de bloqueo de proveedor, que puede ser una consideración importante. –

Respuesta

6

Típicamente, procedimientos almacenados siguen un CRUD (http://en.wikipedia.org/wiki/Create,_read,_update_and_delete) patrón, pero no tienen que estar limitados a esto.

1) Probablemente desee combinar la actualización y la inserción. Si la llave primaria está llena, entonces es una actualización, de lo contrario es una inserción. Para los GUID y otras claves generadas por el cliente, primero debe actualizar y si el recuento de filas es cero, debe hacer una inserción. El proceso de inserción/actualización generalmente devuelve una clave principal.

Le va a interesar un procedimiento get_by_id y un número de get_by_non-unique-criteria, que devuelven cualquier cantidad de filas. La idea es asegurarse de que las columnas en el conjunto de resultados sean idénticas en todos los procesos get/list.

El objetivo de estos procedimientos no es necesariamente una tabla, o incluso una vista, sino más bien una entidad lógica, por lo que es posible que deba realizar varias combinaciones, tanto para relaciones como para búsquedas. Puede ayudar a devolver múltiples conjuntos de resultados.

2) Las vistas son útiles, pero no especialmente relevantes para esto. Algunas veces ayudan con la reutilización, pero no siempre.

3) Todo depende de las reglas comerciales. Ciertamente puede evitar ciertos tipos de daños a los datos en el nivel de procuración almacenado, pero existen límites de cuánto puede o debe saber. Una vez dicho esto, hay casos de propósito especial en los que es posible que desee poner más lógica en el proceso, como el inicio de sesión.

4) No siempre se puede hacer, pero a veces se puede factorizar código común en procesos de stord de nivel inferior que el usuario no llama.

Espero que esto sea un comienzo.

Cuestiones relacionadas