Các quy ước đặt tên PostgreSQL


191

Tôi có thể tìm hướng dẫn chi tiết về các quy ước đặt tên PostgreSQL ở đâu? (tên bảng so với trường hợp lạc đà, trình tự, khóa chính, ràng buộc, chỉ mục, v.v ...)


Vâng, nếu chúng ta sẽ đi một chút nữa và nhìn vào convension đặt tên chung tôi khuyên bạn nên kiểm tra câu trả lời này: stackoverflow.com/questions/4702728/...
vyegorov

Câu trả lời:


249

Về tên bảng, trường hợp, vv, quy ước phổ biến là:

  • Từ khóa SQL: UPPER CASE
  • tên (định danh): lower_case_with_underscores

Ví dụ :

UPDATE my_table SET name = 5;

Điều này không được viết bằng đá, nhưng bit về định danh trong chữ thường rất được khuyến khích, IMO. Postgresql xử lý trường hợp định danh không nhạy cảm khi không được trích dẫn (nó thực sự gấp chúng thành chữ thường trong nội bộ) và trường hợp nhạy cảm khi được trích dẫn; nhiều người không nhận thức được sự bình dị này. Sử dụng luôn chữ thường bạn an toàn. Dù sao, bạn có thể chấp nhận sử dụng camelCasehoặc PascalCase(hoặc UPPER_CASE), miễn là bạn nhất quán: luôn luôn là định danh trích dẫn hoặc không bao giờ (và điều này bao gồm cả việc tạo lược đồ!).

Tôi không nhận thức được nhiều quy ước hoặc hướng dẫn phong cách. Các khóa thay thế thường được tạo từ một chuỗi (thường là với serialmacro), sẽ thuận tiện khi gắn vào cách đặt tên đó cho các chuỗi đó nếu bạn tạo chúng bằng tay ( tablename_colname_seq).

Xem thêm một số thảo luận ở đây , ở đây và (cho SQL nói chung) ở đây , tất cả với một số liên kết liên quan.

Lưu ý: Postgresql 10 giới thiệu identity các cột dưới dạng thay thế tuân thủ SQL cho nối tiếp .


3
FWIW, idiosyncrasy duy nhất là PG gập thành chữ thường, trong đó tiêu chuẩn SQL nói rằng nó nên gấp lại thành chữ hoa. Các DBMS không thành công trong trường hợp gấp là những trường hợp không chuẩn.
Craig Ringer

6
Là một người dùng mới của Postgres, điều này khá khó chịu. Phải chọn giữa việc gõ dấu ngoặc kép mọi lúc hoặc sử dụng một quy ước đặt tên xấu xí. Nó hút ass.
d512

1
@ user1334007 Quy ước không xấu - và đọc bình luận của Craig ở trên. Và không cần trích dẫn nếu bạn không trích dẫn khi bạn tạo các bảng (nghĩa là, nếu bạn nhất quán).
leonbloy

4
@leonbloy, nếu bạn không trích dẫn khi bạn tạo bảng, thì Postgres sẽ viết thường tên bảng và tên trường của bạn. Bạn có thể sử dụng trường hợp lạc đà khi bạn viết các truy vấn của mình nhưng kết quả của bạn sẽ hiển thị tất cả chữ thường, khó đọc khi các trường bao gồm nhiều từ (Lastupdateddate). Nếu bạn muốn tên cột của mình có thể đọc được trong kết quả truy vấn, bạn phải trích dẫn mọi thứ hoặc sử dụng trường hợp con rắn, IMO, thật xấu xí. Sẽ tốt hơn nhiều nếu Postgres để tên của bạn một mình và không yêu cầu bạn cung cấp báo giá.
d512

11
Tôi ghét từ khóa trong chữ hoa, chỉ ghét nó, quy ước hoặc không. Không có phụ thuộc vào trường hợp liên quan đến từ khóa. Tôi thích tất cả các trường hợp thấp hơn. Vâng, tôi biết đó là một sở thích đơn thuần, nhưng đây cũng chỉ là một nhận xét. ;-)
Craig

28

Thực sự không có một hướng dẫn chính thức, bởi vì không có phong cách hay tiêu chuẩn duy nhất.

Miễn là bạn hiểu các quy tắc đặt tên định danh, bạn có thể sử dụng bất cứ thứ gì bạn thích.

Trong thực tế, tôi thấy nó dễ sử dụng hơn lower_case_underscore_separated_identifiersvì chúng không cần thiết "Double Quote"ở mọi nơi để bảo quản vỏ, không gian, v.v.

Nếu bạn muốn đặt tên cho các bảng và chức năng của "@MyAṕṕ! ""betty"" Shard$42"mình, bạn có thể tự do làm điều đó, mặc dù việc gõ ở mọi nơi sẽ rất khó khăn.

Những điều chính cần hiểu là:

  • Trừ dụng dấu ngoặc kép, định danh là trường hợp gấp để giảm hợp cụ thể, vì vậy MyTable, MYTABLEmytablelà tất cả những điều tương tự, nhưng "MYTABLE""MyTable"là khác nhau;

  • Trừ khi trích dẫn kép:

    Các định danh SQL và các từ khóa phải bắt đầu bằng một chữ cái (az, nhưng cũng là các chữ cái có dấu phụ và các chữ cái không phải là chữ Latinh) hoặc dấu gạch dưới (_). Các ký tự tiếp theo trong một mã định danh hoặc từ khóa có thể là chữ cái, dấu gạch dưới, chữ số (0-9) hoặc ký hiệu đô la ($).

  • Bạn phải trích dẫn hai từ khóa nếu bạn muốn sử dụng chúng làm định danh.

Trong thực tế, tôi thực sự khuyên bạn không nên sử dụng từ khóa làm định danh. Ít nhất là tránh những từ dành riêng. Chỉ vì bạn có thể đặt tên cho một bảng "with"không có nghĩa là bạn nên.


1
Cảm ơn bạn đã liên kết đến tài liệu về quy tắc đặt tên định danh . Tôi gặp khó khăn khi tìm chủ đề cụ thể.
Basil Bourque

1
"Tôi thấy nó dễ sử dụng hơn lower_case_underscore_separated_identifiers" ... gần đây, tôi nghe thấy điều này được mô tả là "trường hợp rắn"
bvj
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.