Tôi nên tuân theo tiêu chuẩn nào khi đặt tên bảng và khung nhìn?


20

Tôi nên tuân theo tiêu chuẩn nào khi đặt tên bảng và khung nhìn? Chẳng hạn, có nên đặt một cái gì đó như tbl_ ở đầu tên bảng không? Tôi có nên chỉ định bảng mã / tra cứu theo một cách nào đó như ct_, lut_ hoặc mã_ không? Có ai khác làm / không?

Tôi đang sử dụng MS SQL Server và có nhiều cơ sở dữ liệu với nhiều bảng, vì vậy thật tuyệt khi có một cái gì đó chúng ta có thể sử dụng làm tiêu chuẩn với một số hợp lý hỗ trợ.

Câu trả lời:


29

OK, đầu tiên KHÔNG BAO GIỜ đặt tbl trước tên của bảng. Đó là một cái bàn, bây giờ chúng ta đã có nó. Đó gọi là Ký hiệu Hungary và mọi người đã ngừng làm điều đó hơn 5 năm trước.

Chỉ cần gọi đối tượng dựa trên những gì nó là. Nếu một bảng chứa dữ liệu nhân viên, hãy gọi nó là "Nhân viên". Nếu nó chứa thông tin về máy tính, hãy gọi nó là "Máy tính". Nếu nó ánh xạ máy tính tới nhân viên, hãy gọi nó là "EmployeeComputer" hoặc "ComputerEmployee" (cá nhân tôi thích "EmployeeComputer" hơn).

Không có quy ước đặt tên đúng để sử dụng (ngoài việc không sử dụng Ký hiệu Hungary). Miễn là tên đối tượng có ý nghĩa rằng đó là những gì quan trọng.


11
Ngoài ra, vui lòng không đặt tên của các bảng dưới dạng danh từ số nhiều, như tôi đã thấy các ví dụ về Nhân viên, Người lập trình .. Chúng ta đều biết các bảng được cho là có nhiều hàng chứ không phải một ..
Marian

1
Tại sao bạn sẽ tạo ra các khung nhìn của một bảng? Tất cả một khung nhìn là, là một câu lệnh chọn được lưu trữ. Dữ liệu không được cụ thể hóa sau một chế độ xem trừ khi bạn đang sử dụng chế độ xem được lập chỉ mục. Tôi khá nhiều không bao giờ sử dụng quan điểm, không bao giờ có. Chắc chắn không có bất kỳ lợi ích hiệu suất để làm như vậy.
mrdenny

2
Chúng tôi sử dụng các khung nhìn khi chúng tôi muốn làm một cái gì đó như tham gia một vài bảng hoặc dịch các giá trị mã thành các giá trị có thể đọc được của con người. Tình huống thứ hai là tình huống bạn sẽ kết thúc với một cái tên mô phỏng.
Beth Whitezel

2
Câu trả lời của ông Denny và những người đóng góp sau đây được hỗ trợ bởi điều này: dba4life.blogspot.com/2007/11/ Kẻ

1
@Marian: Tôi sử dụng số nhiều vì chúng làm cho các truy vấn đọc tự nhiên hơn và giải quyết xung đột với từ khóa. Nhiều hệ thống tôi đã làm việc cùng đã có một thực thể đặt hàng. Việc sử dụng số nhiều làm cho tên bảng orderskhông ordervà tránh phải trích dẫn tên bảng mỗi khi nó là người dùng. Điều này cũng áp dụng cho groupvà các từ khóa khác. May mắn thay, rất ít từ khóa va chạm với các thực thể phổ biến.
BillThor

13

Chúng tôi sử dụng các lược đồ (có thể coi chúng là không gian tên trong SQL) cho cả quyền và nhóm. Vì vậy, thay vì "tbl", vv chúng ta có

  • Dữ liệu
  • Dữ liệu.T BreathHistory
  • Dữ liệu

Không có mã nào đi vào lược đồ dữ liệu. Không có bảng nào nằm ngoài lược đồ dữ liệu. Tất nhiên điều này có thể mở rộng để có một lược đồ Tra cứu hoặc Phân đoạn nếu bạn muốn.

Đối với các chế độ xem chúng tôi sử dụng vwnhưng điều này là để phân biệt chúng với các bảng trong SQL Server 2000 và bây giờ nó là một di sản


3
+1 để đề xuất các lược đồ. Điều này sẽ có ích trong khi duy trì db lớn với 100 bảng. Chúng tôi cũng sử dụng các lược đồ để phân nhóm chức năng .. như đã làm trong AdventureWorks db
CoderHawk

5

Cá nhân tôi là một fan hâm mộ lớn của Fanö Bedingung , có nghĩa ở đây, tên không được phép là sự khởi đầu của một tên hợp lệ khác.

Và thứ hai, khoảng cách Hamming giữa hai tên tốt hơn một chữ cái khác nhau.

Vâng, đó là quy tắc từ thời tiền kỹ thuật số, nhưng chúng làm cho cuộc sống dễ dàng hơn.

Và tên thứ ba phải được phát âm, nếu không bạn sẽ trở nên điên loạn, khi nhận dạng giọng nói trở thành sự thật.


2
Khi nhận dạng giọng nói trở thành sự thật, dù sao tôi cũng sẽ nổi điên. :-)
Beth Whitezel

Chỉ khi bạn thực hiện hỗ trợ telethon
bernd_k

1
Khi nhận dạng giọng nói xuất hiện, tôi sẽ trở thành tài xế xe tải. Đó là một ẩn sĩ điên rồ.
mrdenny

Bạn có thể giải thích chi tiết hơn (có lẽ với một ví dụ) "Fano Bedingung" là gì không?
Nick Chammas

1
@NickChammas Tôi nghĩ bằng tiếng Anh, chúng tôi gọi đây là mã hóa Shannon-Fano .
Iain Samuel McLean Elder

2

Tôi không biết rằng thực sự có bất kỳ quy ước đặt tên "tốt nhất" nào ngoài đó, vì nó thực sự nắm bắt được sở thích cá nhân và dễ dàng phát triển. Lời khuyên của tôi là chọn một quy ước đặt tên và tuân thủ nó. Nếu bạn muốn tách các từ có dấu gạch dưới, hãy làm như vậy trong tất cả các đối tượng cơ sở dữ liệu của bạn. Nếu bạn muốn sử dụng camelCase, hãy làm như vậy trong tất cả các đối tượng cơ sở dữ liệu của bạn.

Trong cửa hàng của tôi, chúng tôi tuân thủ các quy tắc sau:

Chúng tôi tách các từ có dấu gạch dưới và sử dụng tất cả các chữ cái viết thường.
Tên bảng của chúng tôi mô tả chúng là gì: dbo.person, dbo.invoice.
Tên bảng nhiều-nhiều của chúng tôi cũng mô tả chúng là gì (có thêm mm để biểu thị nhiều mối quan hệ được ánh xạ: dbo.person_mm_address. Các thủ tục lưu trữ do người dùng xác định của chúng tôi mô tả cả đối tượng và hành động đang được thực hiện: usp_person_select , usp_address_select_by_city Các quan điểm và chức năng của chúng tôi tuân theo các quy tắc giống như các quy trình được lưu trữ. Các chỉ mục của chúng tôi bao gồm bảng, các cột chính (theo thứ tự) và một dấu hiệu của cụm / không phân cụm: ix_person_last_name_first_name_nc

Chỉ vì đây là những gì chúng tôi sử dụng trong cửa hàng của tôi, điều đó không có nghĩa là những quy tắc này phù hợp với bạn. Chọn một cái gì đó mà bạn và nhóm phát triển của bạn đồng ý vừa hữu ích, vừa dễ phát triển, đồng thời thiết lập văn hóa hiểu biết và sử dụng bất kỳ quy ước đặt tên nào mà bạn quyết định. Trong trường hợp của chúng tôi, điều này bao gồm xem xét mã cho bất kỳ đối tượng nào được tạo trong cơ sở dữ liệu. Theo thời gian, sự kết hợp của một quy ước đặt tên tài liệu và đánh giá mã ngang hàng đã dẫn đến ngày càng ít sai lệch so với quy ước.

Tôi hy vọng "không trả lời" này sẽ giúp theo một cách nào đó.


2

Tôi hài lòng với những điều này từ nhiều năm trước

  • tên bảng: mũ nhỏ và dấu gạch dưới, số ít {khách hàng, sản phẩm}
  • tên bảng cho nhiều mối quan hệ: tablename1_tablename2: {customer_product}
  • lượt xem: mũ nhỏ được thêm v vào cuối {customerv, sản phẩm, sản phẩm_groupv}
  • lưu trữ được lưu trữ: tên bảng và chức năng {customer_select, customer_insert, customer_delete, customer_update}

nếu bạn có gói lưu trữ chia sẻ giá rẻ, bạn sẽ cần sử dụng tên viết tắt dự án trước tất cả các đối tượng của mình, ví dụ như trang quản trị cơ sở dữ liệu, da_users, da_questions


Tại sao product_groupvvà không product_group_vcho các chế độ xem (nếu bạn nhấn mạnh vào sự phân biệt này của các chế độ xem và bảng)?
ypercubeᵀᴹ

@ypercube vì tôi quá lười để gõ thêm một dấu gạch dưới và tôi dễ mắc lỗi đánh máy. Tôi đọc các từ dễ dàng hơn khi tôi sử dụng dấu gạch dưới và tôi sử dụng v để tách chế độ xem khỏi các bảng và v không phải là một từ vì vậy tôi không sử dụng dấu gạch dưới .. Có vẻ không nhất quán, nhưng tôi thấy định dạng này thực tế.
Uur Gümüşhan
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.