Wie lautet Ihre Namenskonvention für gespeicherte Prozeduren? [geschlossen]


122

Ich habe verschiedene Regeln für die Benennung gespeicherter Prozeduren gesehen.

Einige Leute stellen dem sproc-Namen usp_ voran, andere mit einer Abkürzung für den App-Namen und wieder andere mit einem Eigentümernamen. Sie sollten sp_ in SQL Server nicht verwenden, es sei denn, Sie meinen es wirklich so.

Einige beginnen den Proc-Namen mit einem Verb (Get, Add, Save, Remove). Andere betonen die Entitätsnamen.

In einer Datenbank mit Hunderten von Sprocs kann es sehr schwierig sein, einen geeigneten Sproc zu finden, wenn Sie glauben, dass bereits einer vorhanden ist. Namenskonventionen können das Auffinden eines Sprocs erleichtern.

Verwenden Sie eine Namenskonvention? Bitte beschreiben Sie es und erklären Sie, warum Sie es anderen Optionen vorziehen.

Zusammenfassung der Antworten:

  • Jeder scheint die Konsistenz der Benennung zu befürworten, so dass es für jeden wichtiger sein könnte, dieselbe Namenskonvention zu verwenden, als welche bestimmte verwendet wird.
  • Präfixe: Während viele Leute usp_ oder ähnliches verwenden (aber selten sp_), verwenden viele andere Datenbank- oder App-Namen. Ein cleverer DBA verwendet gen, rpt und tsk, um allgemeine CRUD-Sprocs von denen zu unterscheiden, die für Berichte oder Aufgaben verwendet werden.
  • Verb + Nomen scheint etwas beliebter zu sein als Nomen + Verb. Einige Benutzer verwenden die SQL-Schlüsselwörter (Auswählen, Einfügen, Aktualisieren, Löschen) für die Verben, während andere Nicht-SQL-Verben (oder Abkürzungen für sie) wie Get und Add verwenden. Einige unterscheiden zwischen Singluar- und Plural-Substantiven, um anzugeben, ob ein oder mehrere Datensätze abgerufen werden.
  • Gegebenenfalls wird am Ende ein zusätzlicher Satz vorgeschlagen. GetCustomerById, GetCustomerBySaleDate.
  • Einige Leute verwenden Unterstriche zwischen den Namenssegmenten, andere vermeiden Unterstriche. app_ Get_Customer vs. appGetCustomer - Ich denke, es ist eine Frage der Lesbarkeit.
  • Große Sammlungen von Sprocs können in Oracle-Pakete oder Management Studio-Lösungen und -Projekte (SQL Server) oder SQL Server-Schemas aufgeteilt werden.
  • Undurchschaubare Abkürzungen sollten vermieden werden.

Warum ich die Antwort gewählt habe: Es gibt so viele gute Antworten. Danke euch allen! Wie Sie sehen können, wäre es sehr schwierig, nur einen auszuwählen. Der, den ich gewählt habe, hat mich beeindruckt. Ich bin dem gleichen Weg gefolgt, den er beschreibt - ich habe versucht, Verb + Nomen zu verwenden und dann nicht alle Sprocs zu finden, die für den Kunden gelten.

Es ist sehr wichtig, einen vorhandenen Sproc lokalisieren zu können oder festzustellen, ob überhaupt einer existiert. Schwerwiegende Probleme können auftreten, wenn jemand versehentlich einen doppelten Sproc mit einem anderen Namen erstellt.

Da ich im Allgemeinen an sehr großen Apps mit Hunderten von Sprocs arbeite, bevorzuge ich die am einfachsten zu findende Benennungsmethode. Für eine kleinere App könnte ich Verb + Nomen befürworten, da es der allgemeinen Codierungskonvention für Methodennamen folgt.

Er befürwortet auch das Präfixieren des App-Namens anstelle des nicht sehr nützlichen usp_. Wie mehrere Personen betonten, enthält die Datenbank manchmal Sprocs für mehrere Apps. Das Präfixieren des App-Namens hilft also, die Sprocs zu trennen UND DBAs und anderen zu helfen, zu bestimmen, für welche App der Sproc verwendet wird.


1
Wofür steht usp?
Midhat

2
Ich glaube, dass usp für "user procedure" steht. Das unterscheidet es von den Systemprozeduren mit dem Präfix "sp_". Das ist eine wichtige Unterscheidung, wie Sie in den Antworten lesen können.
DOK

danke dok. grazie mille
Midhat


1
Ich stimme dem zu, nur weil es geschlossen ist, hoffentlich um zu zeigen, dass solche Fragen für die Community nützlich sind.
Tsilb

Antworten:


66

Für mein letztes Projekt habe ich usp_ [Action] [Object] [Process] verwendet, also zum Beispiel usp_AddProduct oder usp_GetProductList, usp_GetProductDetail. Jetzt hat die Datenbank jedoch mehr als 700 Prozeduren. Es wird viel schwieriger, alle Prozeduren für ein bestimmtes Objekt zu finden. Zum Beispiel muss ich jetzt 50 ungerade Add-Prozeduren für das Produkt hinzufügen und 50 ungerade für das Get usw. suchen.

Aus diesem Grund plane ich in meiner neuen Anwendung, Prozedurnamen nach Objekt zu gruppieren. Außerdem lösche ich den USP, da ich der Meinung bin, dass er etwas überflüssig ist, abgesehen davon, dass es sich um eine Prozedur handelt, die ich vom Namen von abziehen kann das Verfahren selbst.

Das neue Format lautet wie folgt

[App]_[Object]_[Action][Process]

App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add 
App_Product_GetList
App_Product_GetSingle

Es ist hilfreich, Dinge zu gruppieren, um sie später leichter finden zu können, insbesondere wenn eine große Anzahl von Sprocs vorhanden ist.

In Bezug darauf, wo mehr als ein Objekt verwendet wird, stelle ich fest, dass die meisten Instanzen ein primäres und ein sekundäres Objekt haben, sodass das primäre Objekt in der normalen Instanz verwendet wird und auf das sekundäre im Prozessabschnitt verwiesen wird, beispielsweise App_Product_AddAttribute.


3
Was ist, wenn mehr als ein Objekt beteiligt ist? Was ist beispielsweise, wenn der Sproc Informationen sowohl aus der Kunden- als auch aus der Auftragstabelle abfragt?
DOK

2
Danke Mitch, lass uns das klären. Dieses "App" -Präfix ist ein Platzhalter für eine andere Abkürzung, die den Namen (oder das Akronym) der tatsächlichen App angibt. Wenn 3 Apps eine Datenbank gemeinsam nutzen, gibt es möglicherweise ICA_Product_Add, CRM_Product_Add und BPS_Product_Add.
DOK

2
Warum sollten Sie jede Prozedur dreimal für drei Apps duplizieren? Der Sinn von Store Procedures besteht darin, einen einzigen Ort zu haben, an dem eine bestimmte Aktion ausgeführt wird. "ICA_Product_Add, CRM_Product_Add und BPS_Product_Add" zerstört das.
Jason Kester

3
Jason, diese Sprocs werden möglicherweise in verschiedene Tabellen eingefügt. Sie können unterschiedliche Eingabeparameter oder Rückgabewerte haben. Oder sie haben ein anderes Verhalten. Wenn die Sprocs dasselbe tun, stimme ich zu, sollte es nur eine Version geben. Wie jemand anderes vorgeschlagen hat, haben gemeinsam genutzte Sprocs möglicherweise kein Präfix.
DOK

1
Wenn Sie mehrere Anwendungen haben, die dieselbe Prozedur aufrufen, müssen Sie besonders vorsichtig sein. Jede Änderung an diesem Prozess kann diese mehreren Apps beschädigen. In Bezug auf die Benennung handelt es sich um eine Grauzone, aber Sie können sie als allgemein / global oder als alles bezeichnen, was Sie für richtig halten. @localghosts: Danke, dass du informativ bist.
dnolan

36

Hier einige Erläuterungen zum Problem mit dem Präfix sp_ in SQL Server.

Gespeicherte Prozeduren mit dem Präfix sp_ sind System-Sprocs, die in der Master-Datenbank gespeichert sind.

Wenn Sie Ihrem Sproc dieses Präfix geben, sucht SQL Server zuerst in der Master-Datenbank und dann in der Kontextdatenbank nach ihnen und verschwendet so unnötig Ressourcen. Wenn der vom Benutzer erstellte Sproc denselben Namen wie ein System-Sproc hat, wird der vom Benutzer erstellte Sproc nicht ausgeführt.

Das Präfix sp_ gibt an, dass auf den Sproc von allen Datenbanken aus zugegriffen werden kann, dass er jedoch im Kontext der aktuellen Datenbank ausgeführt werden sollte.

Hier ist eine nette Erklärung, die eine Demo des Performance-Hits enthält.

Hier ist eine weitere hilfreiche Quelle, die Ant in einem Kommentar zur Verfügung gestellt hat.


Hmm ich verstehe nicht. Warum gibt sp einen Performance-Hit? Ist usp oder gsp okay?
Erwin Rooijakkers

1
@ user2609980 DOK sagt, dass SQL Server sp_zuerst in der Master- Datenbank nach dem Präfix proc sucht und dann in der aktuellen
Datenbank,

+1 für die klare Angabe von etwas, das an anderer Stelle kompliziertere Erklärungen enthält. Für mich keine Neuigkeit, aber ich denke, dies ist eine einfache und prägnante Erklärung für jemanden, der anfängt.
Undrline

Der Link zur Demo des Performance-Hits stammt aus einem Artikel aus dem Jahr 2001. Er wurde seitdem geändert. Hier ist ein ausführlicherer Artikel (ab 2012) von Aaron Bertrand: sqlperformance.com/2012/10/t-sql-queries/sp_prefix
Michael J Swart

16

Ungarische Systeme (wie das obige Präfix "usp") lassen mich schaudern.

Wir teilen viele gespeicherte Prozeduren in verschiedenen, ähnlich strukturierten Datenbanken. Daher verwenden wir für datenbankspezifische Datenbanken ein Präfix des Datenbanknamens selbst. Gemeinsame Prozeduren haben kein Präfix. Ich nehme an, die Verwendung verschiedener Schemata könnte eine Alternative sein, um solche etwas hässlichen Präfixe insgesamt zu entfernen.

Der tatsächliche Name nach dem Präfix unterscheidet sich kaum von der Funktionsbenennung: In der Regel ein Verb wie "Hinzufügen", "Setzen", "Generieren", "Berechnen", "Löschen" usw., gefolgt von mehreren spezifischeren Substantiven wie "Benutzer" "," DailyRevenues "und so weiter.

Antwort auf Ants Kommentar:

  1. Der Unterschied zwischen einer Tabelle und einer Ansicht ist für diejenigen relevant, die das Datenbankschema entwerfen, nicht für diejenigen, die auf dessen Inhalt zugreifen oder diesen ändern. In dem seltenen Fall, dass Schemaspezifikationen benötigt werden, ist es leicht zu finden. Für die gelegentliche SELECT-Abfrage ist dies irrelevant. Tatsächlich halte ich es für einen großen Vorteil, Tabellen und Ansichten gleich behandeln zu können.
  2. Im Gegensatz zu Funktionen und gespeicherten Prozeduren beginnt der Name einer Tabelle oder Ansicht wahrscheinlich nicht mit einem Verb oder ist alles andere als ein oder mehrere Substantive.
  3. Für eine Funktion muss das Schema-Präfix aufgerufen werden. Tatsächlich unterscheidet sich die Aufrufsyntax (die wir sowieso verwenden) stark zwischen einer Funktion und einer gespeicherten Prozedur. Aber selbst wenn dies nicht der Fall wäre, würde das Gleiche wie 1. gelten: Wenn ich Funktionen und gespeicherte Prozeduren gleich behandeln kann, warum sollte ich das nicht tun?

1
Woher wissen Sie, ob Sie mit einer Prozedur, einer Funktion, einer Ansicht, einer Tabelle oder etwas anderem interagieren?
Ameise

1
Ich würde mir vorstellen, dass Funktionen mit "Get" beginnen oder ein Name sein könnten, der nicht mit einem Verb beginnt. Alles andere wäre eine Prozedur, denn sie werden schließlich als gespeicherte Prozeduren bezeichnet. Prozeduren verbergen die Details wie Ansichten, Tabellen und alles andere.
Mark Stock

3
Aber es ist nicht ungarisch. Das "usp" ist keine ungarische Variablendeklaration. Das "u" steht nicht für "update", sondern für "user", wie in "benutzerdefinierte gespeicherte Prozedur", und schützt lediglich vor SQL Server, der bei jeder Suche nach Ihrer gespeicherten Prozedur in der Master-Datenbank sucht. Natürlich gibt es auch andere Möglichkeiten, aber "usp" wird in vielen Korps allgemein als Standard angesehen, und soweit ich gesehen habe, funktioniert es gut. Es wird auch von Microsoft gelehrt und eine von Microsoft empfohlene Namenskonvention: msdn.microsoft.com/en-us/library/ms124456(v=SQL.100).aspx
asus3000

10

Ich habe im Laufe der Jahre so ziemlich alle verschiedenen Systeme verwendet. Ich habe endlich dieses entwickelt, das ich heute noch benutze:

Präfix :

  • gen - Allgemein: Meistens CRUD
  • rpt - Bericht: selbsterklärend
  • tsk - Aufgabe: normalerweise etwas mit prozeduraler Logik, das über geplante Jobs ausgeführt wird

Aktionsspezifizierer:

Ins - INSERT
Sel - SELECT
Upd - UPDATE
Del - DELETE

(In Fällen, in denen die Prozedur viele Aufgaben ausführt, wird das Gesamtziel zur Auswahl des Aktionsspezifizierers verwendet. Beispielsweise erfordert ein INSERT des Kunden möglicherweise viel Vorbereitungsarbeit, das Gesamtziel ist jedoch INSERT, sodass "Ins" ausgewählt wird.

Objekt:

Bei gen (CRUD) ist dies der betroffene Tabellen- oder Ansichtsname. Für rpt (Bericht) ist dies die kurze Beschreibung des Berichts. Für tsk (Aufgabe) ist dies die kurze Beschreibung der Aufgabe.

Optionale Klärer:

Dies sind optionale Informationen, die zum besseren Verständnis der Prozedur verwendet werden. Beispiele sind "By", "For" usw.

Format:

[Präfix] [Aktionsspezifizierer] [Entität] [Optionale Klärer]

Beispiele für Prozedurnamen:

genInsOrderHeader

genSelCustomerByCustomerID
genSelCustomersBySaleDate

genUpdCommentText

genDelOrderDetailLine

rptSelCustomersByState
rptSelPaymentsByYear

tskQueueAccountsForCollection

4
Nun gibt es eine interessante Sicht auf das Präfix. Das scheint eine gute Möglichkeit zu sein, Sprocs nach ihrer Verwendung zu trennen.
DOK

10

TableName_WhatItDoes

  • Comment_GetByID

  • Kundenliste

  • UserPreference_DeleteByUserID

Keine Präfixe oder alberner ungarischer Unsinn. Nur der Name der Tabelle, mit der sie am engsten verbunden ist, und eine kurze Beschreibung ihrer Funktionsweise.

Eine Einschränkung: Ich persönlich stelle allen meinen automatisch generierten CRUD immer zCRUD_ voran, damit es bis zum Ende der Liste sortiert wird, wo ich es nicht ansehen muss.


Es klingt nach einer großartigen Idee, die "z" -Elemente vom Rest zu trennen.
DOK

Ich mag diese Methode. Sie müssen leicht zu finden sein. Wenn ich durch eine Liste der ersten Sprocs des Verbs schaue und 200 Gets, 200 Inserts, 200 Updates sehe, ist es schwierig, alle für eine bestimmte Tabelle oder Gruppierung zu finden. Ich habe zuerst die Verbmethode verwendet, und es wird schnell ein Chaos. Der Tabellenname löst dieses Problem zuerst. So werden beispielsweise oben in der Antwort alle Ihre Kommentare oder Kundenkommentare zusammengefasst und sind leicht zu finden.
Astrosteve

1
Und was ist, wenn Sie eine Abfrage haben, die mehrere Tabellen verbindet?
Leandronn

10

Das Starten eines gespeicherten Prozedurnamens mit sp_ist in SQL Server fehlerhaft, da alle System-Sprocs mit sp_ beginnen. Eine konsistente Benennung (auch im Ausmaß von hobgoblin-dom) ist nützlich, da sie automatisierte Aufgaben basierend auf dem Datenwörterbuch erleichtert. Präfixe sind in SQL Server 2005 etwas weniger nützlich, da sie Schemas unterstützen, die für verschiedene Arten von Namespaces verwendet werden können, wie Präfixe für Namen, die früher verwendet wurden. Zum Beispiel könnte man in einem Sternschema Dim- und Fact- Schemata haben und nach dieser Konvention auf Tabellen verweisen.

Bei gespeicherten Prozeduren ist das Präfix nützlich, um Anwendungs-Sprocs von System-Sprocs zu unterscheiden. up_vs. sp_macht es relativ einfach, nicht vom System gespeicherte Prozeduren aus dem Datenwörterbuch zu identifizieren.


2
Das Benennen von sprocs "sp_" ist auch für die Geschwindigkeit eine wirklich schlechte Idee, da SQL Server versucht, seine Suchvorgänge für diejenigen zu optimieren, die davon ausgehen, dass es sich um Systemprozeduren handelt. Schauen Sie hier, 5. Punkt nach unten: rakph.wordpress.com/2008/04/19/tips-store-procedure
Ant

4

Ich kapsle die gespeicherten Prozeduren immer in Paketen (ich verwende Oracle bei der Arbeit). Dadurch wird die Anzahl der separaten Objekte reduziert und die Wiederverwendung von Code erleichtert.

Die Namenskonvention ist Geschmackssache und sollte bei Projektstart mit allen anderen Entwicklern übereinstimmen.


Pakete sind gut. Ab SQL Server 2005 ermöglicht Management Studio das Erstellen von "Lösungen" zum Speichern verwandter Sprocs und anderer SQL-Anweisungen.
DOK

2
@DOK - Beachten Sie, dass diese Pakete keinen Footprint in der Datenbank selbst haben. Sie sind reine Artefakte des Front-End-Tools. Sie können nicht nach Paket im Datenwörterbuch abfragen. Oracle-Pakete sind erstklassige Objekte im Systemdatenwörterbuch und haben einen eigenen Bereich.
ConcernedOfTunbridgeWells

4

Für kleine Datenbanken verwende ich uspTableNameOperationName, z. B. uspCustomerCreate, uspCustomerDelete usw. Dies erleichtert die Gruppierung nach 'Hauptentität'.

Fügen Sie für größere Datenbanken einen Schema- oder Subsystemnamen hinzu, z. B. Empfangen, Kaufen usw., um sie gruppiert zu halten (da SQL Server sie gerne alphabetisch anzeigt).

Ich versuche aus Gründen der Klarheit, Abkürzungen in den Namen zu vermeiden (und neue Leute im Projekt müssen sich nicht fragen, wofür 'UNAICFE' steht, da der Sproc uspUsingNoAbbreviationsIncreasesClarityForEveryone heißt.)


Ja, besonders danke für die Adressierung von Abkürzungen.
DOK

@ [DOK]: Gern geschehen - was, keine Gegenstimme? ;-)
Steven A. Lowe

Steve, du hast eine Gegenstimme. Ich war zu beschäftigt damit, die Flut von Antworten und Kommentaren zu lesen und mich zu quälen, welche Antwort "die beste" ist.
DOK

@ [DOK]: danke; Die "beste" Antwort ist wahrscheinlich die Kombination, die für Ihre Situation sinnvoll ist.
Steven A. Lowe

4

Ich verwende derzeit ein Format wie das folgende

Notation:

[PREFIX] [ANWENDUNG] [MODUL] _ [NAME]

Beispiel:

P_CMS_USER_UserInfoGet

Ich mag diese Notation aus mehreren Gründen:

  • Beginnend mit einem sehr einfachen Präfix kann Code geschrieben werden, um nur Objekte auszuführen, die mit dem Präfix beginnen (z. B. um die SQL-Injection zu reduzieren).
  • In unserer größeren Umgebung arbeiten mehrere Teams an verschiedenen Apps, die dieselbe Datenbankarchitektur verwenden. Die Anwendungsnotation gibt an, welcher Gruppe der SP gehört.
  • Die Abschnitte Modul und Name vervollständigen einfach die Hierarchie. Alle Namen sollten in der Lage sein, mit Gruppe / App, Modul, Funktion aus der Hierarchie abgeglichen zu werden.

2

Ich benutze immer:

usp [Tabellenname] [Aktion] [Zusätzliches Detail]

Bei einer Tabelle mit dem Namen "tblUser" habe ich Folgendes:

  • uspUserCreate
  • uspUserSelect
  • uspUserSelectByNetworkID

Die Prozeduren sind alphabetisch nach Tabellennamen und Funktionen sortiert, sodass Sie leicht erkennen können, was ich mit einer bestimmten Tabelle tun kann. Wenn Sie das Präfix "usp" verwenden, weiß ich, was ich aufrufe, wenn ich (zum Beispiel) eine Prozedur mit 1000 Zeilen schreibe, die mit anderen Prozeduren, mehreren Tabellen, Funktionen, Ansichten und Servern interagiert.

Bis der Editor in der SQL Server-IDE so gut wie Visual Studio ist, behalte ich die Präfixe.


2

application prefix_ operation prefix_ Beschreibung der beteiligten Datenbankobjekte (abzüglich der Leerzeichen zwischen den Unterstrichen - mussten Leerzeichen eingefügt werden, damit sie angezeigt werden ) .

Operationspräfixe, die wir verwenden -

  • Hol " - gibt ein Recordset zurück
  • " Ins " - fügt Daten ein
  • " Upd " - aktualisiert die Daten
  • " Del " - löscht Daten

z.B

wmt_ ins _ customer _details

"Workforce Management Tool, Details in Kundentabelle einfügen"

Vorteile

Alle gespeicherten Prozeduren, die sich auf dieselbe Anwendung beziehen, werden nach Namen gruppiert. Innerhalb der Gruppe werden gespeicherte Prozeduren, die dieselbe Art von Operation ausführen (z. B. Einfügungen, Aktualisierungen usw.), zusammengefasst.

Dieses System funktioniert gut für uns, mit ca. 1000 gespeicherte Prozeduren in einer Datenbank auf Anhieb.

Bisher sind bei diesem Ansatz keine Nachteile aufgetreten.


Ich verabscheue generell die Verwendung von Unterstrichen, aber die Art und Weise, wie Sie sie verwenden - nicht nur, um das Präfix zu trennen, sondern auch, um den Vorgang zu trennen - würde es einfacher machen, beim Scannen einer Liste mit Hunderten von Sprocs zu finden. Pretty_neat_idea.
DOK

2

GetXXX - Ruft XXX basierend auf @ID ab

GetAllXXX - Ruft alle XXX ab

PutXXX - Fügt XXX ein, wenn die übergebene @ID -1 ist; sonst Updates

DelXXX - Löscht XXX basierend auf @ID


1

Ich denke, die usp_-Namenskonvention nützt niemandem etwas.

In der Vergangenheit habe ich für CRUD-Operationen Präfixe zum Abrufen / Aktualisieren / Einfügen / Löschen verwendet, aber jetzt, da ich Linq to SQL oder EF verwende, um den größten Teil meiner CRUD-Arbeit zu erledigen, sind diese vollständig verschwunden. Da ich in meinen neuen Anwendungen so wenige Procs gespeichert habe, spielen die Namenskonventionen keine Rolle mehr wie früher ;-)


1
Wenn Sie jedem Sproc _usp voranstellen, können Sie nicht zwischen ihnen unterscheiden. Ich denke, einige Datenbankadministratoren mögen dieses Präfix, weil es den Datenbankobjekttyp angibt. Vielleicht hören wir von einem von denen, die es mögen.
DOK

1

Für die aktuelle Anwendung, an der ich arbeite, haben wir ein Präfix, das den Anwendungsnamen identifiziert (vier Kleinbuchstaben). Der Grund dafür ist, dass unsere Anwendung mit einer Legacy-Anwendung in derselben Datenbank koexistieren muss. Daher ist das Präfix ein Muss.

Wenn wir nicht die Legacy-Einschränkung hätten, bin ich mir ziemlich sicher, dass wir kein Präfix verwenden würden.

Nach dem Präfix beginnen wir den SP-Namen normalerweise mit einem Verb, das beschreibt, was die Prozedur tut, und dann mit dem Namen der Entität, mit der wir arbeiten. Die Pluralisierung des Entitätsnamens ist zulässig. Wir versuchen, die Lesbarkeit zu betonen, damit aus dem Namen ersichtlich wird, was die Prozedur allein tut.

Typische Namen für gespeicherte Prozeduren in unserem Team sind:

shopGetCategories
shopUpdateItem

Wenn Sie an einer Datenbank arbeiten, die einer App zugeordnet ist, wissen Sie nie, ob es später eine andere App geben wird, die dieselbe Datenbank verwendet. In Ihrer Situation hilft es sicher, die Sprocs zu trennen.
DOK

1

Ich denke nicht, dass es wirklich wichtig ist, was genau Ihr Präfix ist, solange Sie logisch und konsistent sind. Persönlich benutze ich

spu_ [Aktionsbeschreibung] [Prozessbeschreibung]

Dabei handelt es sich bei der Aktionsbeschreibung um eine kleine Auswahl typischer Aktionen wie Abrufen, Festlegen, Archivieren, Einfügen, Löschen usw. Die Prozessbeschreibung ist beispielsweise kurz, aber beschreibend

spu_archiveCollectionData 

oder

spu_setAwardStatus

Ich benenne meine Funktionen ähnlich, aber mit dem Präfix udf_

Ich habe Leute gesehen, die versucht haben, die pseudo-ungarische Notation für die Benennung von Prozeduren zu verwenden, was meiner Meinung nach mehr verbirgt, als es verrät. Solange ich meine Prozeduren alphabetisch aufliste, sehe ich sie nach Funktionen gruppiert. Für mich scheint dies der Sweet Spot zwischen Ordnung und unnötiger Genauigkeit zu sein


spu_, interessant. Weicht dem SQL Server-Problem sp_ aus.
DOK

1

Vermeiden Sie sp_ * auf dem SQl-Server, da alle im System gespeicherten Vorgänge mit sp_ beginnen. Daher wird es für das System schwieriger, das dem Namen entsprechende Objekt zu finden.

Wenn Sie also mit etwas anderem als sp_ ​​beginnen, werden die Dinge einfacher.

Daher verwenden wir zunächst eine allgemeine Benennung von Proc_. Dies erleichtert die Identifizierung der Prozeduren, wenn eine große Schemadatei angezeigt wird.

Außerdem weisen wir ein Präfix zu, das die Funktion identifiziert. Mögen

Proc_Poll_Interface, Proc_Inv_Interface etc.

Dies ermöglicht es uns, alle gespeicherten Prozesse zu finden, die die Aufgabe von POLL erfüllen, im Gegensatz zu Inventar usw.

Wie auch immer, das Präfixsystem hängt von Ihrer Problemdomäne ab. Aber alles, was gesagt und getan wurde, sollte vorhanden sein, auch wenn es nur darum geht, den Leuten zu ermöglichen, die gespeicherte Prozedur im Explorer-Dropdown zur Bearbeitung schnell zu lokalisieren.

andere zB von Funktion.

Proc_Order_Place
Proc_order_Delete
Proc_Order_Retrieve
Proc_Order_History

Wir folgten der funktionsbasierten Benennung, da Procs eher Code / Funktion als statische Objekte wie Tabellen ähneln. Es hilft nicht, dass Procs mit mehr als einer Tabelle arbeiten kann.

Wenn der Proc mehr Funktionen ausgeführt hat, als in einem einzigen Namen ausgeführt werden können, bedeutet dies, dass Ihr Proc viel mehr als nötig tut und es Zeit ist, sie erneut zu teilen.

Hoffentlich hilft das.


1

Ich bin dem Thread spät beigetreten, möchte aber meine Antwort hier eingeben:

In meinen letzten beiden Projekten gibt es unterschiedliche Trends, wie in einem, das wir verwendet haben:

So rufen Sie Daten ab: s <Tabellenname> _G
So löschen Sie Daten: s <Tabellenname> _D
So fügen Sie Daten ein: s <Tabellenname> _I
So aktualisieren Sie Daten: s <Tabellenname> _U

Diesen Namenskonventionen folgt auch im Frontend das Präfix des Wortes dt .

Beispiel:

exec sMedicationInfo_G
exec sMedicationInfo_D
exec sMedicationInfo_I
exec sMedicationInfo_U

Mit Hilfe der oben genannten Namenskonventionen in unserer Anwendung haben wir gute und leicht zu merkende Namen.

Während wir im zweiten Projekt die gleichen Namenskonventionen mit geringem Unterschied verwendeten:

So rufen Sie Daten ab: sp_ <Tabellenname> G
So löschen Sie Daten: sp_ <Tabellenname> D
So fügen Sie Daten ein: sp_ <Tabellenname> I
So aktualisieren Sie Daten: sp_ <Tabellenname> U.

Beispiel:

exec sp_MedicationInfoG
exec sp_MedicationInfoD
exec sp_MedicationInfoI
exec sp_MedicationInfoU

Interessant. Ich habe es noch nie so gesehen, aber es ist leicht, sich die richtigen Namen zu merken oder zu erraten.
DOK

1
Danke DOK, ja, es ist leicht zu merken und wir Entwickler fühlen uns frei von jeglicher Komplexität bei Namen
Gaurav Aroraa

9
Warum nicht _C ​​_R _U _D?
Tag, wenn

@onedaywhen - es ist eine gute Idee, die ich unserem DBA vorschlagen werde, damit wir die Namenskonvertierungen entsprechend pflegen können. Aber Hauptmotiv dieser Namenskonvention ist es, das gesamte Objekt korrekt darzustellen, es sei denn, ich habe etwas verpasst ...
Gaurav Aroraa

1
Das Präfix "sp_" wird nicht empfohlen.
Piyey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.