Kami telah lama memiliki standar pengkodean untuk kode .Net kami, dan tampaknya ada beberapa sumber yang memiliki reputasi baik tentang cara menerapkannya yang berkembang seiring waktu.
Saya ingin dapat menyatukan beberapa standar untuk SQL yang ditulis untuk digunakan oleh produk kami, tetapi sepertinya tidak ada sumber daya di luar sana tentang konsensus untuk apa yang menentukan SQL yang ditulis dengan baik?
coding-standards
sql-server
Rowland Shaw
sumber
sumber
Jawaban:
Dalam pengalaman saya, hal-hal utama yang saya cari adalah:
Penamaan tabel dan kolom - lihat apakah Anda menggunakan ID, Referensi atau Nomor untuk kolom jenis ID, tunggal atau bentuk jamak untuk nama (bentuk jamak yang umum untuk nama tabel - misalnya THING, tunggal untuk nama kolom - misalnya THING_ID). Bagi saya hal yang paling penting di sini adalah konsistensi yang menghindari orang membuang-buang waktu (misalnya Anda tidak mengalami kesalahan ketik di mana seseorang telah menempatkan HAL sebagai nama tabel karena Anda hanya tahu secara intuitif bahwa nama tabel tidak pernah tunggal).
Semua ciptaan harus menyertakan setetes (tergantung pada objek yang ada) sebagai bagian dari file mereka. Anda mungkin juga ingin menyertakan izin hibah, terserah Anda.
Memilih, memperbarui, memasukkan dan menghapus harus diletakkan satu nama kolom, satu nama tabel dan satu di mana klausa / pesanan dengan klausa per baris sehingga mereka dapat dengan mudah berkomentar satu per satu selama debugging.
Awalan untuk jenis objek khususnya di mana mereka mungkin bingung (jadi v untuk tampilan menjadi yang paling penting). Tidak yakin apakah itu masih berlaku tetapi dulu tidak efisien untuk prosedur tersimpan selain prosedur sistem untuk memulai sp_. Mungkin praktik terbaik untuk membedakannya toh usp_ adalah apa yang saya gunakan paling baru.
Standar yang menunjukkan bagaimana nama pemicu harus mencakup apakah itu untuk pembaruan / masukkan / hapus dan tabel yang berlaku. Saya tidak memiliki standar yang disukai tetapi ini adalah informasi penting dan harus mudah ditemukan.
Standar untuk kepemilikan objek dalam versi SQL Server sebelumnya atau skema yang seharusnya ada pada 2005 dan kemudian. Ini panggilan Anda apa adanya, tetapi Anda tidak boleh menebak siapa yang memiliki sesuatu / tempat tinggalnya) dan jika memungkinkan skema / pemilik harus dimasukkan dalam skrip CREATE untuk meminimalkan kemungkinan pembuatannya secara salah.
Indikator bahwa siapa pun yang menggunakan SELECT * akan diminta untuk minum satu liter air seni mereka sendiri.
Kecuali ada alasan yang sangat, sangat bagus (yang tidak termasuk kemalasan di pihak Anda), miliki, tegakkan, dan pertahankan hubungan kunci utama / kunci asing sejak awal. Bagaimanapun, ini adalah basis data relasional, bukan file datar dan catatan yatim piatu yang akan membuat kehidupan dukungan Anda seperti neraka di beberapa titik. Perlu diketahui juga bahwa jika Anda tidak melakukannya sekarang saya bisa menjanjikan Anda Anda tidak akan pernah berhasil menerapkannya setelah acara karena ini 10 kali pekerjaan setelah Anda memiliki data (yang akan sedikit kacau karena Anda tidak pernah memaksakan hubungan dengan benar).
Saya yakin saya telah melewatkan sesuatu tetapi bagi saya merekalah yang sebenarnya menawarkan manfaat nyata dalam sejumlah situasi yang layak.
Tetapi seperti semua standar, lebih sedikit lebih banyak. Semakin lama standar pengkodean Anda, semakin kecil kemungkinan orang untuk membaca dan menggunakannya. Setelah Anda melewati beberapa halaman dengan spasi baik mulai mencari untuk menjatuhkan hal-hal yang tidak benar-benar membuat perbedaan praktis di dunia nyata karena Anda hanya mengurangi kemungkinan orang melakukan hal itu.
Sunting: dua koreksi - termasuk skema di bagian kepemilikan, menghapus tip yang salah tentang hitungan (*) - lihat komentar di bawah.
sumber
Itu karena tidak ada konsensus. Sama seperti contoh, saya akan memiliki jawaban yang berbeda untuk setidaknya setengah dari item dalam daftar Jon Hopkins, dan berdasarkan pada jumlah detail pada daftarnya, itu adalah dugaan aman bahwa kami berdua bekerja dengan database untuk mencari nafkah.
Yang mengatakan, standar pengkodean masih merupakan hal yang baik untuk dimiliki, dan standar yang dipahami dan disetujui oleh semua orang dalam tim adalah hal yang lebih baik, karena standar itu kemungkinan besar akan diikuti.
sumber
Selain jawaban Jon Hopkins ...
Pisahkan objek internal vs eksternal
Untuk objek internal, buat mereka eksplisit jika "non default"
Gunakan skema untuk menyederhanakan penamaan + izin. Contoh:
sumber