2009-08-02 27 views
5

Gibt es Muster zum Schreiben gespeicherter Procs? wie:Muster für gespeicherte Prozeduren?

  1. Sollten wir 1 Sp für Update, 1 für Einfügen und 1 für jede Tabelle zu wählen.
  2. Wann ist es gut, Ansichten zu erstellen.
  3. Wie verwalten Sie Geschäftsregeln in SP?
  4. Wie doppelten Code reduzieren etc etc ..

Jeder gute Artikel oder ein Buch über diese Muster zu lesen ...

dank

+1

Lesen Sie dieses: http://stackoverflow.com/questions/718282/best-books-in-database-design-and-optimization –

+0

@HawX: Keine direkte Antwort, aber hilfreich. Vielen Dank. –

+0

Stored Procedures sind eine wichtige Quelle der Herstellerbindung, was eine wichtige Überlegung sein kann. –

Antwort

6

Typischerweise gespeicherte Procs eine CRUD (http://en.wikipedia.org/wiki/Create,_read,_update_and_delete) folgen Muster, aber sie müssen nicht darauf beschränkt sein.

1) Sie möchten wahrscheinlich update und einfügen kombinieren. Wenn der Primärschlüssel gefüllt ist, dann ist es ein Update, ansonsten ist es ein Insert. Für GUIDs und andere vom Client generierte Schlüssel aktualisieren Sie zuerst, und wenn der Zeilenzähler Null ist, müssen Sie eine Einfügung durchführen. Der Einfüge-/Aktualisierungsprozess gibt normalerweise einen Primärschlüssel zurück.

Sie werden eine get_by_id proc sowie eine Anzahl von get_by_non-unique-Kriterien, die eine beliebige Anzahl von Zeilen zurückgeben wollen. Die Idee besteht darin, sicherzustellen, dass die Spalten in der Ergebnismenge in allen Get/List-Procs identisch sind.

Das Ziel dieser Prozeduren ist nicht unbedingt eine Tabelle oder eine Ansicht, sondern eine logische Entität. Daher müssen Sie möglicherweise verschiedene Verknüpfungen erstellen, sowohl für Beziehungen als auch für Suchvorgänge. Es kann hilfreich sein, mehrere Ergebnismengen zurückzugeben.

2) Ansichten sind praktisch, aber nicht besonders relevant. Manchmal helfen sie bei der Wiederverwendung, aber nicht immer.

3) Es hängt alles von den Geschäftsregeln ab. Sie können bestimmte Arten von Datenkorruption auf der Ebene der gespeicherten Proc sicher verhindern, aber es gibt Grenzen dafür, wie viel es wissen kann oder sollte. Abgesehen davon gibt es spezielle Fälle, in denen Sie mehr Logik in den Proc einfügen möchten, wie z. B. die Anmeldung.

4) Sie können dies nicht immer tun, aber Sie können manchmal allgemeinen Code in stord-Prozesse niedrigerer Ebene ausklammern, die der Benutzer nicht aufruft.

Hoffe, das ist ein Anfang.

Verwandte Themen