Benzersiz kısıtlama için adlandırma kuralı


129

Adlandırma kuralları önemlidir ve birincil anahtar ve yabancı anahtar yaygın olarak kullanılan ve açık kurallara sahiptir ( PK_Tableve FK_Table_ReferencedTablesırasıyla). IX_Table_ColumnEndeksler adlandırma da oldukça standarttır.

UNIQUE kısıtlaması ne olacak? Bu kısıtlama için genel olarak kabul edilen bir adlandırma kuralı var mı? Gördüğüm UK_TableName_Column, UQ_TableName_Columnve birisi tavsiye AX_TableName_Column- o nereden geldiğini bilmiyorum.

Genelde kullandım UQama özellikle sevmiyorum ve onu bir UKavukata karşı kullanma seçimimi savunmaktan hoşlanmıyorum .

En yaygın adlandırma konusunda bir fikir birliği olup olmadığını veya birinin neden diğerlerinden daha mantıklı olduğuna dair iyi bir mantık olup olmadığını görmek istiyorum.


1
@Mitch Herhangi bir neden neden? Ben de yapıyorum ama her zaman kendime soruyorum neden kimse kullanmıyor U. Duruş ne Qanlama geliyor?
Kirk Broadhurst

1
IndeX için IX hakkında da aynı soruyu sorabilirsiniz ... neden sadece ben değil?
Chris J

3
"UQ" sadece "EŞSİZ" in kısaltmasıdır. İki harfin nedeni, temelde "PK" nin emsali olmasıdır.
Mark Cidade

2
Kişisel olarak, "IndeX" için varsayılan IX'e saygı göstererek "Unique indeX" için UX_ * kullanmaya son verdim. Birleşik Krallık'tan olduğum için UK_'den özellikle hoşlanmıyorum. İnternetin sevdiği şey buysa AK konusunda ikna edilebilirim.
Tim Abell

@KirkBroadhurst Hiç böyle bir kongre görmedim, ancak olumlu oylar nedeniyle yaygın olmalı ve amaca iyi hizmet etmelidir. Ancak FK_03 adında bir yabancı anahtara sahip olmak çok yardımcı olmaz, adlandırmak daha iyi olmaz FK_TargetTable_SourceTablemı? Lütfen ayrıntılandırır mısınız?
CodingYoshi

Yanıtlar:


56

Benim düşünceme göre bu bir anahtar değil: bu bir kısıtlama.

Bu olabilir tabii bir anahtar olarak kullanılan ve benzersiz bir satır tanımlar, ancak olması değil tuşuna basın.

Bir örnek, anahtarın, doğal anahtar olan ThingName yerine kullanılan bir vekil anahtar olan "ThingID" olmasıdır. Yine de ThingName'i kısıtlamanız gerekir: yine de anahtar olarak kullanılmayacaktır.

Ayrıca UQ ve UQC'yi de kullanırdım (kümelenmişse).

Bunun yerine benzersiz bir dizin kullanabilir ve "IXU" için gidebilirsiniz. Kullanılan mantığa göre, bir indeks de bir anahtardır, ancak yalnızca benzersiz olduğunda. Aksi takdirde bir dizindir. Öyleyse IK_columnnamebenzersiz dizinler ve IX_columnnamebenzersiz olmayan dizinler için başlayabiliriz . Harikulade.

Ve benzersiz bir kısıtlama ile benzersiz bir dizin arasındaki tek fark, INCLUDE sütunlarıdır.

Düzenleme: Şubat 2013. SQL Server 2008'den beri, dizinlerin de filtreleri olabilir. Kısıtlamalar olamaz

Yani, şu şeylerden birine geliyor

  • SQL kullanan gezegenin geri kalanına göre UQ'ya bağlı kalın
  • tutarlı olması için benzersiz dizinler için IK kullanın (kümelenmiş olanlar için IKC) ...

1
"UIX" yerine "IXU" yu kesinlikle tercih eder misiniz?
Hamish Grubijan


133

Dizinler ve kısıtlamalar için adlandırma kuralım:

  • Birincil anahtar. _PK
  • Benzersiz dizin / kısıtlama. _AK {xx}
  • Benzersiz Olmayan dizin. _IX {xx}
  • Kısıtlamayı kontrol edin. _CK {xx}
  • Varsayılan kısıtlama. _DF {xx}
  • Yabancı anahtar kısıtlaması. _FK {xx}

Burada {xx}, tablo başına her kısıtlama türü için 01'den başlayan 2 basamaklı bir sıra numarasıdır. Birincil anahtar, yalnızca bir tane olabileceğinden sıra numarası almaz. 2 karakterli alfa sonekinin anlamları şunlardır:

  • PK: Birincil Anahtar
  • AK: Alternatif Anahtar
  • FK: Yabancı Anahtar
  • IX: IndeX
  • CK: Giriş
  • DF: DeFault

Genelde meta verileri / sistem kataloğu verilerini nesne türüne göre değil, denetleyen nesneye göre gruplamak istiyorum.


10
AK: Alternatif Anahtar, SQL Server Veri araçları 2012'nin tasarım yüzeyinde de onları çağırıyor.
Alex KeySmith

15
@AlexKeySmith: Microsoft'un bunun için neden AK'yi kullandığını açıkladığınız için teşekkür ederiz !!
TJ Crowder

Sorun değil @TJCrowder :-)
Alex KeySmith

@TJCrowder, varlık-ilişki / veritabanı modelleme dünyasında, alternatif bir anahtardır, çünkü birincil anahtar gibi, alternatif anahtarı içeren sütun kümesi benzersiz olmalıdır, böylece satır / tuple için [alternatif] kimlik sağlar.
Nicholas Carey

@NicholasCarey: Hayır, anladım - Alex'in yorumunu görür görmez ışık yandı. :-)
TJ Crowder

5

UQ kullanıyorum. Birleşik Krallık'taki K, PK ve FK'de kullanıldığı için bana K'yi düşündürüyor. Eh, zaten İngiltere'yi düşündükten sonra; İngiltere pek çok başka dernek gündeme getirdiğinde bunun UNIQUE için bir önek olması ironik =)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.