Konwencja nazewnictwa dla unikalnego ograniczenia


129

Konwencje nazewnictwa są ważne, a klucz podstawowy i klucz obcy są powszechnie stosowane konwencje i oczywiste ( PK_Tablei FK_Table_ReferencedTable, odpowiednio). IX_Table_ColumnNazewnictwa dla indeksów jest dość standardowe.

A co z unikalnym ograniczeniem? Czy istnieje powszechnie przyjęta konwencja nazewnictwa dla tego ograniczenia? Widziałem UK_TableName_Column, UQ_TableName_Columni ktoś polecający AX_TableName_Column- nie wiem, skąd to się bierze.

Zwykle używałem, UQale niezbyt mi się to podoba i nie lubię bronić swojego wyboru przed UKadwokatem.

Chciałbym po prostu sprawdzić, czy istnieje konsensus co do najbardziej rozpowszechnionego nazewnictwa lub dobre uzasadnienie, dlaczego jedno ma więcej sensu niż inne.


1
@Mitch Jakiś powód, dlaczego? Ja też, ale zawsze zadaję sobie pytanie, dlaczego nikt po prostu nie używa U. Po co to Qoznacza?
Kirk Broadhurst,

1
Możesz zadać to samo pytanie o IX dla IndeX ... dlaczego nie tylko ja?
Chris J

3
„UQ” to tylko skrót od „UNIQUE”. Powód dwóch liter jest w zasadzie taki, że poprzedzony jest przez „PK”.
Mark Cidade,

2
Osobiście skończyłem na użyciu UX_ * dla „Unique indeX”, w hołdzie dla domyślnego IX dla „IndeX”. Szczególnie nie lubię UK_, ponieważ pochodzę z Wielkiej Brytanii. Mógłbym się przekonać na AK, jeśli tak lubi internet.
Tim Abell

@KirkBroadhurst Nigdy nie widziałem takiej konwencji, ale ze względu na upvotes musi być powszechna i dobrze służyć. Ale posiadanie klucza obcego o nazwie FK_03 nie jest zbyt pomocne, czy nie byłoby lepiej go nazwać FK_TargetTable_SourceTable? Czy możesz to rozwinąć.
KodowanieYoshi

Odpowiedzi:


56

Uważam, że to nie jest klucz: to ograniczenie.

To mógł być używany jako klucz oczywiście i jednoznacznie identyfikuje wiersz, ale to nie jest najważniejsze.

Przykładem może być to, że klucz to „ThingID”, zastępczy klucz używany zamiast ThingName, klucza naturalnego. Nadal musisz ograniczyć ThingName: nie będzie on jednak używany jako klucz.

Używałbym również UQ i UQC (jeśli są zgrupowane).

Zamiast tego możesz użyć unikalnego indeksu i wybrać „IXU”. Zgodnie z przyjętą logiką indeks jest również kluczem, ale tylko wtedy, gdy jest unikalny. W przeciwnym razie jest to indeks. Więc zaczniemy od IK_columnnameindeksów unikatowych i IX_columnnamenieunikalnych. Cudowny.

Jedyną różnicą między unikalnym ograniczeniem a unikalnym indeksem są kolumny INCLUDE.

Edycja: luty 2013. Od SQL Server 2008 indeksy mogą mieć również filtry. Ograniczenia nie mogą

Tak więc sprowadza się to do jednego z

  • trzymaj się UQ, jak na pozostałej planecie używającej SQL
  • użyj IK dla unikalnych indeksów (IKC również dla klastrów), aby były spójne ...

1
Czy wolałbyś zdecydowanie „IXU” od „UIX”?
Hamish Grubijan


133

Moja konwencja nazewnictwa dla indeksów i ograniczeń:

  • Klucz podstawowy. _PK
  • Unikalny indeks / ograniczenie. _AK {xx}
  • Nieunikalny indeks. _IX {xx}
  • Sprawdź ograniczenie. _CK {xx}
  • Domyślne ograniczenie. _DF {xx}
  • Ograniczenie klucza obcego. _FK {xx}

Gdzie {xx} to 2-cyfrowy numer kolejny, zaczynający się od 01 dla każdego typu ograniczenia w tabeli. Klucz podstawowy nie otrzymuje numeru sekwencji, ponieważ może być tylko jeden. Znaczenie 2-znakowego przyrostka alfa to:

  • PK: klucz podstawowy
  • AK: Alternate Key
  • FK: klucz obcy
  • IX: IndeX
  • CK: ChecK
  • DF: DeFault

Generalnie chcę grupować metadane / dane katalogu systemowego według obiektu kontrolnego, a nie według typu obiektu.


10
AK: Klucz alternatywny jest tym, co powierzchnia projektowa narzędzi SQL Server Data Tools 2012 nazywa je również.
Alex KeySmith

15
@AlexKeySmith: Dziękuję za wyjaśnienie, dlaczego firma Microsoft używa do tego AK !!
TJ Crowder

Żaden problem @TJCrowder :-)
Alex KeySmith

@TJCrowder, w świecie modelowania relacji jednostek / bazy danych, jest to klucz alternatywny , ponieważ podobnie jak klucz podstawowy zestaw kolumn zawierający klucz alternatywny musi być unikalny, zapewniając w ten sposób [alternatywną] tożsamość dla wiersza / krotki.
Nicholas Carey

@NicholasCarey: Nie, rozumiem - jak tylko zobaczyłem komentarz Alexa, zapaliło się światło. :-)
TJ Crowder

5

Używam UQ. K w Wielkiej Brytanii kojarzy mi się z K tak, jak jest używane w PK i FK. Cóż, po tym jak myślę o Wielkiej Brytanii; ironiczne, że powinien to być przedrostek dla UNIQUE, gdy Wielka Brytania wywołuje tak wiele innych skojarzeń =)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.