อนุสัญญาการตั้งชื่อดัชนีเซิร์ฟเวอร์ SQL [ปิด]


175

มีวิธีมาตรฐานในการตั้งชื่อดัชนีสำหรับ SQL Server หรือไม่? ดูเหมือนว่าดัชนีคีย์หลักชื่อ PK_ และดัชนีที่ไม่ใช่คลัสเตอร์มักเริ่มต้นด้วย IX_ มีอนุสัญญาการตั้งชื่อที่นอกเหนือจากนั้นสำหรับดัชนีเฉพาะหรือไม่?

คำตอบ:


282

ฉันใช้

PK_ สำหรับคีย์หลัก

UK_ สำหรับกุญแจที่ไม่ซ้ำ

IX_ สำหรับดัชนีที่ไม่ซ้ำกันที่ไม่ใช่คลัสเตอร์

UX_ สำหรับดัชนีเฉพาะ

ชื่อดัชนีของฉันทั้งหมดอยู่ในรูปแบบของ
<index or key type>_<table name>_<column 1>_<column 2>_<column n>


1
สิ่งที่เกี่ยวกับดัชนีที่ไม่เป็นเอกเทศกลุ่ม? CX?
Chris Marisic

8
ฉันไม่เคยต้องการดัชนีกลุ่มที่ไม่ซ้ำกัน ... ฉันรู้ว่ามันเป็นไปได้ แต่มันไม่เคยเป็นวิธีที่ถูกต้องสำหรับฉัน
JSR

4
ตามคำตอบให้ที่นี่stackoverflow.com/questions/1401572/...ที่สำคัญและมีความหมายเหมือนกัน INDEX ดังนั้นจึงไม่จำเป็นต้องมีคำนำหน้าที่แตกต่างกันสำหรับคีย์เฉพาะและดัชนีเฉพาะ?
skjerdalas

2
มันเป็นความแตกต่างทางตรรกะฉันใช้ UniqueKey หากมีการอ้างอิงคีย์ต่างประเทศมิฉะนั้นฉันจะใช้ UniqueIndex
JSR

1
เหตุใดจึงต้องรวมชื่อตารางเมื่อสองตารางสามารถมีชื่อดัชนีเดียวกันได้ เอกลักษณ์ไม่จำเป็นต้องมีเช่น
Tahir Hassan

25

ฉันมักจะตั้งชื่อดัชนีตามชื่อของตารางและคอลัมน์ที่มี:

ix_tablename_col1_col2

2
คุณแยกความแตกต่างระหว่างคอลัมน์ดัชนีและคอลัมน์ที่รวมอย่างไร
John Sansom

3
ฉันค่อนข้างแน่ใจว่าเขาเป็นเพียงรายชื่อคอลัมน์ที่จัดทำดัชนีตามลำดับที่พวกเขาถูกวางไว้ในดัชนี
Brett

ฉันใช้มันดังต่อไปนี้: IX_TableName_col1_col2-includecol1-includecol2
freggel

9

มันเป็นมูลค่าคำนำหน้าพิเศษสำหรับดัชนีที่เกี่ยวข้องกับกุญแจต่างประเทศหรือไม่? ฉันคิดอย่างนั้นเพราะมันเตือนฉันว่าดัชนีของคีย์ต่างประเทศไม่ได้ถูกสร้างขึ้นตามค่าเริ่มต้นและดังนั้นจึงง่ายต่อการดูว่าพวกเขาหายไปหรือไม่

สำหรับสิ่งนี้ฉันกำลังใช้ชื่อที่ตรงกับชื่อของ foreign key:

FK_[table]_[foreign_key_table]

หรือมีคีย์ต่างประเทศหลายตัวอยู่ในตารางเดียวกัน

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

1

ฉันรู้ว่าหัวข้อเก่า แต่คิดว่าฉันจะโยนใน 2 เซ็นต์ของฉันมีค่า

  • PKC_ คีย์หลัก, เป็นกลุ่ม
  • PKNC_ คีย์หลัก, ไม่ใช่คลัสเตอร์
  • NCAK_ ไม่เป็นคลัสเตอร์ไม่ซ้ำใคร
  • CAK_ เป็นกลุ่มไม่ซ้ำใคร
  • NC_ ไม่ทำคลัสเตอร์

ตัวอย่าง;

NCAK_AccountHeader_OrganisationID_NextDate

โดยที่ NCAK: ไม่ใช่คลัสเตอร์, ไม่ซ้ำกัน, หัวหน้าบัญชี: ตารางและองค์กร ID_NextDate: คอลัมน์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.