Konvensi penamaan untuk batasan unik


129

Konvensi penamaan penting, dan kunci primer dan kunci asing telah umum digunakan dan konvensi yang jelas ( PK_Tabledan FK_Table_ReferencedTable, masing-masing). The IX_Table_Columnpenamaan untuk indeks juga cukup standar.

Bagaimana dengan kendala UNIK? Apakah ada konvensi penamaan yang diterima secara umum untuk batasan ini? Saya telah melihat UK_TableName_Column,, UQ_TableName_Columndan seseorang merekomendasikan AX_TableName_Column- Saya tidak tahu dari mana asalnya.

Saya biasanya telah menggunakan UQtetapi saya tidak terlalu menyukainya, dan saya tidak menikmati harus mempertahankan pilihan saya untuk menggunakannya terhadap UKadvokat.

Saya hanya ingin melihat apakah ada konsensus tentang penamaan yang paling umum, atau alasan yang baik tentang mengapa salah satu lebih masuk akal daripada yang lain.


1
@Mitch Ada alasan kenapa? Saya juga melakukannya, tetapi saya selalu bertanya pada diri sendiri mengapa tidak ada yang hanya menggunakan U. Untuk apa Qberdiri?
Kirk Broadhurst

1
Anda bisa menanyakan hal yang sama tentang IX untuk IndeX ... kenapa tidak saya saja?
Chris J

3
"UQ" hanyalah singkatan dari "UNIQUE". Alasan dua huruf pada dasarnya adalah preseden yang ditetapkan oleh "PK".
Mark Cidade

2
Secara pribadi saya akhirnya menggunakan UX_ * untuk "Unique indeX", sebagai penghormatan kepada default IX untuk "IndeX". Saya sangat tidak menyukai UK_ karena saya berasal dari Inggris Raya. Saya bisa dibujuk pada AK jika itu yang disukai internet.
Tim Abell

@KirkBroadhurst Saya belum pernah melihat konvensi seperti itu, tetapi karena upvote, konvensi itu harus umum dan berfungsi dengan baik. Tetapi memiliki kunci asing bernama FK_03 tidak terlalu membantu, bukankah lebih baik menamainya FK_TargetTable_SourceTable? Bisakah Anda menjelaskan lebih lanjut.
CodingYoshi

Jawaban:


56

Pemikiran saya bukanlah kunci: ini kendala.

Ini bisa digunakan sebagai kunci tentunya, dan secara unik mengidentifikasi baris, tapi itu bukan kuncinya.

Contohnya adalah kuncinya adalah "ThingID", kunci pengganti yang digunakan sebagai pengganti ThingName, kunci alami. Anda masih perlu membatasi ThingName: itu tidak akan digunakan sebagai kunci.

Saya juga akan menggunakan UQ dan UQC (jika dikelompokkan).

Anda bisa menggunakan indeks unik dan memilih "IXU". Dengan logika yang digunakan, indeks juga merupakan kunci tetapi hanya jika unik. Jika tidak, itu adalah indeks. Jadi kita akan mulai dengan IK_columnnameuntuk indeks unik dan IX_columnnameuntuk indeks non-unik. Menakjubkan.

Dan satu-satunya perbedaan antara batasan unik dan indeks unik adalah kolom TERMASUK.

Sunting: Feb 2013. Sejak SQL Server 2008, indeks dapat memiliki filter juga. Kendala tidak bisa

Jadi, itu bermuara pada salah satu

  • tetap menggunakan UQ sesuai dengan planet pengguna SQL lainnya
  • gunakan IK untuk indeks unik (IKC untuk cluster juga) agar konsisten ...

1
Apakah Anda lebih memilih "IXU" daripada "UIX"?
Hamish Grubijan


133

Konvensi penamaan saya untuk indeks dan batasan:

  • Kunci utama. _PK
  • Indeks / batasan unik. _AK {xx}
  • Indeks Non-Unik. _IX {xx}
  • Periksa kendala. _CK {xx}
  • Batasan default. _DF {xx}
  • Batasan kunci asing. _FK {xx}

Di mana {xx} adalah nomor urut 2 digit, dimulai dari 01 untuk setiap jenis batasan per tabel. Kunci utama tidak mendapatkan nomor urut karena hanya ada satu. Arti sufiks alfa 2 karakter adalah:

  • PK: Kunci Utama
  • AK: Kunci Alternatif
  • FK: Kunci Asing
  • IX: IndeX
  • CK: Cek
  • DF: DeFault

Saya biasanya ingin mengelompokkan metadata / data katalog sistem dengan objek pengendali daripada berdasarkan tipe objek.


10
AK: Kunci Alternatif adalah apa yang disebut oleh permukaan desain SQL Server Data tools 2012.
Alex KeySmith

15
@AlexKeySmith: Terima kasih telah menjelaskan mengapa Microsoft menggunakan AK untuk ini !!
TJ Crowder

Tidak masalah @TJCrowder :-)
Alex KeySmith

@TJCrowder, dalam dunia pemodelan relasi-entitas / database, ini adalah kunci alternatif , karena, seperti kunci utama, kumpulan kolom yang terdiri dari kunci alternatif harus unik, sehingga memberikan identitas [alternatif] untuk baris / tupel.
Nicholas Carey

@NicholasCarey: Tidak, saya mengerti - segera setelah saya melihat komentar Alex, lampunya menyala. :-)
TJ Crowder

5

Saya menggunakan UQ. Huruf K di Inggris membuat saya berpikir tentang K seperti yang digunakan di PK dan FK. Nah, setelah saya memikirkan tentang Inggris Raya; ironis bahwa ini harus menjadi awalan untuk UNIK ketika Inggris menampilkan begitu banyak asosiasi lainnya =)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.