Các quy ước viết hoa PostgreSQL chính thức [đã đóng]


14

Có một quy ước chính thức của PostreQuery về cách viết hoa trong tên DB, Bảng và trường không?

Các ví dụ trên trang web chính thức đề xuất một chữ viết thường và _tách từ và tôi tự hỏi liệu chính sách này có chính thức hay không.

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
);

1
Kiểm tra phần này của tài liệu, về các định danh
ypercubeᵀᴹ

Câu trả lời:


19

Về cơ bản, tôi sẽ phản ánh ý kiến ​​của Verace và nêu rõ điều này, biến nó thành bán chính thức:

Không có một thực hành tốt nhất sẽ bao gồm mọi tình huống. Điều gì sau đây đưa ra các giả định sau (và phải làm gì nếu bạn chưa thực hiện điều này):

  • Bạn đã thảo luận vấn đề này với nhóm của bạn (những người tự làm việc thường chỉ cần quyết định)
  • Không có định nghĩa kiểu chính thức cho SQL đã có trong nhóm của bạn (Nếu không, bạn sẽ không hỏi chúng tôi)
  • Không có định nghĩa kiểu chính thức cho bất kỳ mã nào (Thực hiện theo các quy ước cơ bản tương tự đã được thiết lập cho các ngôn ngữ khác và chính thức hóa một kiểu)

Vì vậy, phần còn lại của điều này là một số ý kiến ​​nhưng dựa trên kinh nghiệm

  1. Khi nói đến tên bảng
    1. Bạn nên đặt tên thực thể số ít (điều này làm cho tài liệu dễ dàng hơn)
    2. Bạn nên sử dụng Pascal Case tại đây
  2. Khi nói đến tên trường
    1. Sử dụng camelCase trên tên trường của bạn
    2. Sử dụng tên số ít, trừ khi định nghĩa chắc chắn có ý nghĩa như một số nhiều (nó gần như không bao giờ)
  3. Khi nói đến chức năng của riêng bạn hoặc tên thủ tục được lưu trữ
    1. Sử dụng dấu gạch dưới
    2. Sử dụng đặt tên trường cho tham số hóa
  4. Khi nói đến chức năng cơ sở dữ liệu hoặc tên ngôn ngữ (ví dụ CHỌN)
    1. Trừ khi có yêu cầu để được viết hoa theo một cách nhất định, hãy sử dụng TẤT CẢ CAPS
    2. Biết API cho ngôn ngữ của bạn để biết những gì hợp lý hoặc bắt buộc
  5. Khi nói đến khoảng cách
    1. Rất nhiều người sử dụng căn chỉnh cột cho từ khóa và thụt lề cho những thứ không phải là từ khóa
    2. Rất nhiều người sử dụng dấu phẩy ở đầu hàng khi các trường được phân tách trên mỗi dòng (Điều này giúp dễ dàng nhận xét một trường cụ thể từ danh sách lựa chọn)
    3. Không bao giờ sử dụng khoảng trắng như một phần của tên của sự vật, thậm chí không phải là tiêu đề giá trị trả về.
  6. Khi nói đến dấu câu
    1. Dấu ngoặc đơn - SỬ DỤNG THEM. Chúng được miễn phí. Tôi hứa.
    2. Dấu chấm phẩy - SỬ DỤNG THEM. Họ sẽ không phá vỡ bạn. Họ buộc bạn phải nghĩ ra mã của bạn. Và họ giữ vệ sinh tốt.
    3. Trả về vận chuyển - Một lần nữa, chúng miễn phí ;-) Và làm cho mã của bạn có thể đọc được.

Bạn cũng nên nhận ra rằng trong khi tôi đang cố gắng giúp bạn áp dụng một hướng dẫn kiểu chung, thì cộng đồng cho Postgres thường không sử dụng camelCase hoặc PascalCase mà thay vào đó sử dụng dấu gạch dưới. Điều thực sự quan trọng là đảm bảo rằng bạn thiết lập và sử dụng một phong cách cụ thể ở mọi nơi để thống nhất .


3
+1 cho "Bit thực sự quan trọng là đảm bảo rằng bạn thiết lập và sử dụng một kiểu cụ thể ở mọi nơi để thống nhất." Sự nhất quán là chìa khóa. Không có nó, bạn phải nghĩ về những thứ bạn không bao giờ phải suy nghĩ.
Max Vernon

4
Chà, camelCase và PascalCase trong PostgreSQL hơi đau. Bạn phải trích dẫn những cái này nếu bạn thực sự muốn có những cái tên như vậy, nếu không thì hệ thống âm thầm viết thường chúng (tôi gần như viết decapitalize, bất cứ liên kết nào nó có thể khơi dậy).
dezso

Tên cơ sở dữ liệu thì sao? Tôi có nên sử dụng database_name, database-name, DatabaseName, databaseName, vv?
ma11hew28

1
Đây có phải là câu trả lời thực sự cho PostgreSQL? Nếu bạn đưa ra lời khuyên để sử dụng PascalCase cho tên bảng trong câu trả lời dành riêng cho PG, tôi nghĩ bạn nên đề cập đến (a) cách đối phó với thực tế là hầu hết các ví dụ sử dụng từ khóa viết thường và (b) có nên trích dẫn tên bảng hay không PG gấp chúng để viết thường.
AndreKR

@AndreKR đây là điều: Tôi hy vọng các nhà phát triển phần mềm sẽ là người trưởng thành, biết cách đọc tài liệu và thảo luận với nhóm của họ cách viết mã một cách nhất quán. Câu trả lời này là wiki cộng đồng, có nghĩa là bất kỳ ai cũng được chào đón để chỉnh sửa và cải thiện nó. Tôi không thể nói chính xác "đây là cách duy nhất" và chỉ vì một số người đưa ra ví dụ tất cả bằng chữ thường không có nghĩa đó là cách duy nhất trong cuộc sống. Bạn phải tìm ra con đường của riêng mình, đó là tinh thần của câu trả lời này. Xin vui lòng chỉnh sửa câu trả lời của cộng đồng này để cải thiện nó. Cảm ơn!
jcolebrand

4

Google nhanh chóng sẽ tiết lộ nhiều trang web chỉ ra các thực tiễn tốt nhất. Tôi chỉ nói hai điều - KHÔNG BAO GIỜ sử dụng khoảng trắng "Tên bảng của tôi" (việc chuyển trở nên không thể do các cơ chế thoát khác nhau; tương tự với bất kỳ ký tự không chữ và số nào). Với những loại máy móc này, bạn thường phải tôn trọng trường hợp. Có đủ chữ cái và từ trong ngôn ngữ tiếng Anh (hoặc của riêng bạn) và độ dài định danh đủ dài (tôi không biết bất kỳ hệ thống nào có mã định danh_length <32, PostgreQuery là 64). Và không bao giờ sử dụng các từ khóa SQL (thay đổi theo RDBMS) sẽ làm điều tương tự.

Báo cáo như

SELECT "Field" FROM "Table";

có thể hợp lệ Điều hoàn toàn quan trọng là có một quy ước rõ ràng và tương đối đơn giản và sau đó tuân thủ nó. Mọi người có những ý kiến ​​khác nhau khi bạn tìm hiểu - đọc xung quanh chủ đề và chọn những gì "cảm thấy đúng" với bạn. Xem các trang web 1 , 2 , 3 , 4 , 5 , ... (còn nhiều trang khác).


Cảm ơn, tôi đã tình cờ tìm thấy nhiều trong các tìm kiếm của riêng tôi. Tôi muốn biết nếu có bất kỳ phong cách chính thức.
Adam Matan

Có nhiều học viên ở cả hai phía của cuộc tranh luận (singular_table_name / plural_table_name) có ý kiến ​​về các lĩnh vực khác mà tôi tôn trọng. Bản thân tôi là một người đàn ông "độc thân" - nếu bạn đang điều hành một nhà máy điện hạt nhân, bạn có thể có một bảng gọi là catastrophic_meltdown, trong đó bạn không bao giờ muốn xem bất kỳ hồ sơ nào cả! Cung cấp cho các khóa chính của bạn một hậu tố _id và gọi chúng là Parent_Table_Name_FK trong các bảng con - đó là những gì tôi làm. Sau đó, thật dễ dàng! Đối với mũ / không mũ, các tập lệnh SQL của tôi có trường hợp lạc đà (không trích dẫn), các câu lệnh của tôi có thể có hoặc không.
Vérace
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.