2009-08-02 5 views
5

Esistono schemi per la scrittura di stored procs? Mi piace:Modelli per stored procedure?

  1. Dovremmo scrivere 1 Sp per l'aggiornamento, 1 per l'inserimento e 1 per la selezione per ogni tabella.
  2. Quando è opportuno creare viste.
  3. Come gestire le regole aziendali in SP?
  4. Come ridurre il codice duplicato ecc ecc ..

Qualsiasi buon articolo o un libro da leggere, su questi modelli ...

grazie

+1

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

+0

@HawX: non è una risposta diretta, ma utile. Grazie. –

+0

Le stored procedure rappresentano una fonte significativa di blocco del fornitore, che potrebbe essere una considerazione importante. –

risposta

6

Tipicamente, stored procedure seguono un CRUD (http://en.wikipedia.org/wiki/Create,_read,_update_and_delete) modello, ma non devono essere limitati a questo.

1) Probabilmente si desidera combinare l'aggiornamento e inserire. Se la chiave primaria è piena, allora è un aggiornamento, altrimenti è un inserto. Per i GUID e le altre chiavi generate dai client, si aggiorna prima e se il conteggio delle righe è zero, è necessario eseguire un inserimento. Il processo di inserimento/aggiornamento restituisce in genere una chiave primaria.

Avrete bisogno di un get_by_id proc oltre ad un numero di get_by_non-unique-criteria, che restituisce un numero qualsiasi di righe. L'idea è di assicurarsi che le colonne nel set di risultati siano identiche in tutti i proc get/list.

L'obiettivo di queste procedure non è necessariamente una tabella, o anche una vista, ma piuttosto un'entità logica, quindi potrebbe essere necessario fare vari join, sia per le relazioni che per le ricerche. Potrebbe essere utile restituire più set di risultati.

2) Le viste sono utili, ma non particolarmente rilevanti. A volte aiutano con il riutilizzo, ma non sempre.

3) Tutto dipende dalle regole aziendali. È certamente possibile evitare determinati tipi di danneggiamento dei dati a livello di processo memorizzato, ma esistono limiti a quanto può o deve sapere. Detto questo, ci sono casi speciali in cui si potrebbe voler mettere più logica nel proc, come il login.

4) Non è sempre possibile farlo, ma a volte è possibile calcolare il codice comune nei proc di livello inferiore che l'utente non chiama.

Spero che questo sia un inizio.