Konvensi Kapitalisasi PostgreSQL Resmi [ditutup]

14

Apakah ada konvensi PostreSQL resmi tentang huruf besar dalam DB, Tabel, dan nama bidang?

The contoh di situs resmi menyarankan huruf kecil dan _kata perpisahan, dan saya bertanya-tanya apakah kebijakan ini adalah resmi.

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
);
Adam Matan
sumber
1
Periksa juga bagian dokumentasi ini, tentang pengidentifikasi
ypercubeᵀᴹ

Jawaban:

20

Saya pada dasarnya akan mencerminkan komentar Verace dan menyatakan ini, menjadikannya semi resmi:

Tidak ada satu praktik terbaik yang akan mencakup setiap keadaan. Berikut ini membuat asumsi berikut (dan apa yang harus dilakukan jika Anda belum melakukan ini):

  • Anda telah mendiskusikan hal ini dengan tim Anda (orang-orang yang bekerja sendiri seringkali hanya harus mengambil keputusan)
  • Tidak ada definisi gaya formal untuk SQL sudah ada di tim Anda (Jika tidak, Anda tidak akan meminta kami)
  • Tidak ada definisi gaya yang diformalkan untuk kode apa pun (Ikuti konvensi dasar yang sama yang telah ditetapkan untuk bahasa lain dan memformalkan gaya)

Jadi sisa dari ini agak dikritik tetapi berdasarkan pengalaman

  1. Ketika datang ke nama tabel
    1. Anda harus menggunakan nama entitas tunggal (ini membuat dokumentasi lebih mudah)
    2. Anda harus menggunakan Pascal Case di sini
  2. Ketika datang ke nama bidang
    1. Gunakan camelCase pada nama bidang Anda
    2. Gunakan nama singular pendek kecuali definisi pasti masuk akal sebagai jamak (hampir tidak pernah terjadi)
  3. Ketika datang ke fungsi Anda sendiri atau nama prosedur yang tersimpan
    1. Gunakan underscore_separation
    2. Gunakan penamaan bidang untuk parameterisasi
  4. Ketika datang untuk membangun fungsi database atau nama bahasa (misalnya SELECT)
    1. Kecuali jika ada persyaratan untuk menggunakan huruf besar dengan cara tertentu, gunakan SEMUA CAPS
    2. Ketahui API untuk bahasa Anda untuk mengetahui apa yang masuk akal atau diperlukan
  5. Ketika datang ke jarak
    1. Banyak orang menggunakan perataan kolom untuk kata kunci dan lekukan untuk hal-hal yang bukan kata kunci
    2. Banyak orang menggunakan koma di awal baris ketika bidang dipisahkan pada setiap baris (Ini membuatnya lebih mudah untuk mengomentari bidang tertentu dari daftar pilihan)
    3. Jangan pernah menggunakan spasi sebagai bagian dari nama hal, bahkan untuk header nilai balik.
  6. Ketika datang ke tanda baca
    1. Kurung - GUNAKAN MEREKA. Mereka GRATIS. Saya berjanji.
    2. Titik koma - GUNAKAN MEREKA. Mereka tidak akan menghancurkanmu. Mereka memaksa Anda untuk memikirkan kode Anda. Dan mereka kebersihan yang baik.
    3. Pengembalian Carriage - Sekali lagi, mereka gratis ;-) Dan membuat kode Anda dapat dibaca.

Anda juga harus menyadari bahwa ketika saya mencoba untuk membantu Anda menerapkan panduan gaya umum, bahwa komunitas untuk Postgres umumnya tidak menggunakan camelCase atau PascalCase tetapi menggunakan underscore_separation. Bagian yang sangat penting adalah memastikan bahwa Anda membangun dan menggunakan gaya tertentu di mana saja agar konsisten .

jcolebrand
sumber
3
+1 untuk "Bit yang sangat penting adalah memastikan bahwa Anda membangun dan menggunakan gaya khusus di mana saja agar konsisten." Konsistensi adalah kuncinya. Tanpanya, Anda harus memikirkan hal-hal yang seharusnya tidak perlu Anda pikirkan.
Max Vernon
4
Nah, camelCase dan PascalCase di PostgreSQL agak menyakitkan. Anda harus mengutip ini jika Anda benar - benar ingin memiliki nama-nama seperti itu, jika tidak maka sistem akan menurunkannya secara diam-diam (saya hampir menulis memenggal kepala, asosiasi apa pun yang mungkin timbul).
dezso
Bagaimana dengan nama basis data? Apakah saya harus menggunakan database_name, database-name, DatabaseName, databaseName, dll?
ma11hew28
1
Apakah jawaban ini sebenarnya untuk PostgreSQL? Jika Anda memberikan saran untuk menggunakan PascalCase untuk nama tabel dalam jawaban khusus-PG, saya pikir Anda harus menyebutkan (a) bagaimana menangani fakta bahwa sebagian besar contoh menggunakan kata kunci huruf kecil dan (b) apakah mengutip nama tabel atau membiarkan PG lipat menjadi huruf kecil.
AndreKR
@AndreKR ada satu hal: Saya berharap pengembang perangkat lunak menjadi orang dewasa, mengetahui cara membaca dokumentasi, dan mendiskusikan dengan tim mereka cara menulis kode secara konsisten. Jawaban ini adalah wiki komunitas, artinya siapa pun boleh mengedit dan memperbaikinya. Saya tidak bisa mengatakan dengan tepat "ini satu-satunya jalan" dan hanya karena beberapa orang memberikan contoh semuanya dalam huruf kecil tidak berarti bahwa itulah satu-satunya cara dalam hidup. Anda harus menemukan jalan Anda sendiri, yang merupakan semangat jawaban ini. Silakan edit jawaban komunitas ini untuk memperbaikinya. Terima kasih!
jcolebrand
4

Google cepat akan mengungkapkan banyak situs yang menunjukkan praktik terbaik. Saya hanya akan mengatakan dua hal - jangan pernah menggunakan spasi "Nama Tabel Saya" (porting menjadi tidak mungkin karena mekanisme pelarian yang berbeda; hal yang sama berlaku untuk karakter non-alfanumerik). Dengan mekanisme semacam ini, Anda biasanya harus menghargai kasing juga. Ada cukup huruf dan kata dalam bahasa Inggris (atau Anda sendiri) dan panjang pengidentifikasi cukup panjang (saya tidak tahu sistem yang memiliki identifier_length <32, PostgreSQL adalah 64). Dan jangan pernah menggunakan kata kunci SQL (yang bervariasi berdasarkan RDBMS) yang akan melakukan hal yang sama.

Statments seperti

SELECT "Field" FROM "Table";

bisa valid! Yang benar-benar kritis adalah memiliki konvensi yang jelas dan relatif sederhana dan kemudian menaatinya. Orang-orang memiliki pendapat yang berbeda karena Anda akan mencari tahu - baca di sekitar topik dan pilih apa yang "terasa benar" bagi Anda. Lihat situs-situs ini 1 , 2 , 3 , 4 , 5 , ... (masih banyak lagi).

Vérace
sumber
Terima kasih, saya menemukan banyak di pencarian saya sendiri. Saya ingin tahu apakah ada styleguide resmi.
Adam Matan
Ada banyak praktisi di kedua sisi perdebatan (singular_table_name / plural_table_name) yang pendapatnya tentang bidang lain yang saya hormati. Saya sendiri seorang "lajang" - jika Anda menjalankan pembangkit listrik tenaga nuklir, Anda mungkin memiliki tabel yang disebut catastrophic_meltdown di mana Anda tidak ingin melihat catatan sama sekali! Berikan akhiran kunci utama Anda _id dan merujuknya sebagai Parent_Table_Name_FK di tabel anak - itulah yang saya lakukan. Setelah itu, mudah-sombong! Sedangkan untuk caps / no-caps, skrip SQL saya memiliki case-untel (tidak dikutip), pernyataan saya mungkin atau mungkin tidak.
Vérace