Các quy ước đặt tên chỉ mục máy chủ SQL [đã đóng]


175

Có một số cách tiêu chuẩn để đặt tên các chỉ mục cho SQL Server? Có vẻ như chỉ mục khóa chính được đặt tên PK_ và các chỉ mục không được phân cụm thường bắt đầu bằng IX_. Có bất kỳ quy ước đặt tên nào ngoài đó cho các chỉ mục duy nhất không?

Câu trả lời:


282

tôi sử dụng

PK_ cho các khóa chính

UK_ cho các khóa duy nhất

IX_ cho các chỉ mục không phân cụm không duy nhất

UX_ cho các chỉ mục duy nhất

Tất cả tên chỉ mục của tôi có dạng
<index or key type>_<table name>_<column 1>_<column 2>_<column n>


1
Những gì về chỉ số cụm nonunique? CX?
Chris Marisic

8
Tôi chưa bao giờ có nhu cầu về một chỉ số cụm không duy nhất ... Tôi nhận ra rằng điều đó là có thể, nhưng dường như nó chưa bao giờ là hướng hành động chính xác đối với tôi.
JSR

4
Theo câu trả lời được đưa ra ở đây stackoverflow.com/questions/1401572/ Ấn KEY và INDEX là từ đồng nghĩa. Vì vậy, không cần phải có các tiền tố khác nhau cho các khóa duy nhất và các chỉ mục duy nhất?
skjerdalas

2
Đó là một sự khác biệt hợp lý, tôi sử dụng UniqueKey nếu sẽ có một tham chiếu khóa ngoài, nếu không tôi sử dụng Unique Index.
JSR

1
Tại sao bao gồm tên bảng khi hai bảng có thể có cùng tên chỉ mục? tức là sự độc đáo là không cần thiết.
Tahir Hassan

25

Tôi thường đặt tên các chỉ mục theo tên của bảng và các cột chứa chúng:

ix_tablename_col1_col2

2
Làm thế nào để bạn phân biệt giữa các cột chỉ mục và các cột bao gồm?
John Sansom

3
Tôi khá chắc chắn rằng anh ấy chỉ liệt kê các cột được lập chỉ mục, theo thứ tự chúng được đặt trong chỉ mục.
Brett

Tôi sử dụng nó như sau: IX_TableName_col1_col2-clececol1-
clececol2

9

Có đáng giá tiền tố đặc biệt cho các chỉ số liên quan đến khóa ngoại không? Tôi nghĩ vậy, vì nó nhắc nhở tôi rằng các chỉ số trên khóa ngoại không được tạo theo mặc định, và do đó dễ dàng hơn để xem nếu chúng bị thiếu.

Đối với điều này, tôi đang sử dụng tên khớp với tên của khóa ngoại:

FK_[table]_[foreign_key_table]

hoặc, nơi có nhiều khóa ngoại tồn tại trên cùng một bảng

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

1

Tôi biết một chủ đề cũ nhưng nghĩ rằng tôi sẽ ném vào giá trị 2 phần trăm của mình

  • PKC_ Khóa chính, được nhóm
  • PKNC_ Khóa chính, Không cụm
  • NCAK_ Không phân cụm, duy nhất
  • CAK_ Cụm, duy nhất
  • NC_ Không cụm

Thí dụ;

NCAK_AccountHeader_Quản lýID_NextDate

Trong đó NCAK: Không được nhóm, duy nhất, Tài khoản chính: Bảng và Tổ chứcID_NextDate: Cột.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.