SQL Server Index-Namenskonventionen [geschlossen]


175

Gibt es eine Standardmethode zum Benennen von Indizes für SQL Server? Es scheint, dass der Primärschlüsselindex PK_ heißt und nicht gruppierte Indizes normalerweise mit IX_ beginnen. Gibt es darüber hinaus Namenskonventionen für eindeutige Indizes?

Antworten:


282

ich benutze

PK_ für Primärschlüssel

UK_ für eindeutige Schlüssel

IX_ für nicht gruppierte nicht eindeutige Indizes

UX_ für eindeutige Indizes

Alle meine Indexnamen haben die Form
<index or key type>_<table name>_<column 1>_<column 2>_<column n>


1
Was ist mit nicht eindeutigen Clustered-Indizes? CX?
Chris Marisic

8
Ich hatte noch nie einen Bedarf an einem nicht eindeutigen Clustered-Index ... Mir ist klar, dass dies möglich ist, aber es schien mir nie die richtige Vorgehensweise zu sein.
JSR

4
Nach der hier gegebenen Antwort sind stackoverflow.com/questions/1401572/… KEY und INDEX Synonyme. Es sollten also keine unterschiedlichen Präfixe für eindeutige Schlüssel und eindeutige Indizes erforderlich sein?
Skjerdalas

2
Es ist ein logischer Unterschied, ich verwende UniqueKey, wenn es eine Fremdschlüsselreferenz gibt, andernfalls verwende ich einen UniqueIndex.
JSR

1
Warum den Tabellennamen einschließen, wenn zwei Tabellen denselben Indexnamen haben können? dh Einzigartigkeit ist nicht erforderlich.
Tahir Hassan

25

Normalerweise benenne ich Indizes nach dem Namen der Tabelle und den darin enthaltenen Spalten:

ix_tablename_col1_col2

2
Wie unterscheidet man zwischen Indexspalten und eingeschlossenen Spalten?
John Sansom

3
Ich bin mir ziemlich sicher, dass er nur die indizierten Spalten in der Reihenfolge auflistet, in der sie im Index platziert werden.
Brett

Ich benutze es wie folgt: IX_TableName_col1_col2-includecol1-includecol2
freggel

9

Lohnt sich ein spezielles Präfix für Indizes, die mit Fremdschlüsseln verknüpft sind? Ich denke schon, da es mich daran erinnert, dass Indizes für Fremdschlüssel nicht standardmäßig erstellt werden und es daher einfacher ist zu erkennen, ob sie fehlen.

Dafür verwende ich Namen, die mit dem Namen des Fremdschlüssels übereinstimmen:

FK_[table]_[foreign_key_table]

oder wenn mehrere Fremdschlüssel in derselben Tabelle vorhanden sind

FK_[table]_[foreign_key_table]_[foreign_key_field]

1

Ich kenne ein altes Thema, dachte aber, ich würde meine 2 Cent einwerfen

  • PKC_ Primärschlüssel, gruppiert
  • PKNC_ Primärschlüssel, nicht Clusterd
  • NCAK_ Nicht gruppiert, einzigartig
  • CAK_ Clustered, Unique
  • NC_ Nicht geclustert

Beispiel;

NCAK_AccountHeader_OrganisationID_NextDate

Wobei NCAK: Nicht geclustert, eindeutig, AccountHeader: Tabelle und OrganisationID_NextDate: Spalten.


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.