Konwencje nazewnictwa są ważne, a klucz podstawowy i klucz obcy są powszechnie stosowane konwencje i oczywiste ( PK_Table
i FK_Table_ReferencedTable
, odpowiednio). IX_Table_Column
Nazewnictwa 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_Column
i ktoś polecający AX_TableName_Column
- nie wiem, skąd to się bierze.
Zwykle używałem, UQ
ale niezbyt mi się to podoba i nie lubię bronić swojego wyboru przed UK
adwokatem.
Chciałbym po prostu sprawdzić, czy istnieje konsensus co do najbardziej rozpowszechnionego nazewnictwa lub dobre uzasadnienie, dlaczego jedno ma więcej sensu niż inne.
sql
sql-server
naming-conventions
unique-constraint
Kirk Broadhurst
źródło
źródło
U
. Po co toQ
oznacza?FK_TargetTable_SourceTable
? Czy możesz to rozwinąć.Odpowiedzi:
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_columnname
indeksów unikatowych iIX_columnname
nieunikalnych. 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
źródło
Moja konwencja nazewnictwa dla indeksów i ograniczeń:
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:
Generalnie chcę grupować metadane / dane katalogu systemowego według obiektu kontrolnego, a nie według typu obiektu.
źródło
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ń =)
źródło