Saya telah membaca beberapa pertanyaan / jawaban di StackOverflow mencoba menemukan cara 'terbaik', atau harus saya katakan harus diterima, untuk memberi nama tabel pada Database.
Sebagian besar pengembang cenderung memberi nama tabel tergantung pada bahasa yang membutuhkan database (JAVA, .NET, PHP, dll). Namun saya hanya merasa ini tidak benar.
Cara saya menamai tabel sampai sekarang adalah melakukan sesuatu seperti:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Hal-hal yang saya khawatirkan adalah:
- Keterbacaan
- Identifikasi cepat dari modul tempat tabel berasal (dokter || pasien)
- Mudah dimengerti, untuk mencegah kebingungan.
Saya ingin membaca pendapat apa pun tentang konvensi penamaan. Terima kasih.
database
database-design
MarioRicalde
sumber
sumber
Saya biasanya menggunakan PascalCase dan entitasnya tunggal:
Ini meniru konvensi penamaan untuk kelas di aplikasi saya menjaga semuanya tetap rapi, bersih, konsisten , dan mudah dimengerti untuk semua orang.
sumber
Sifat dukungan SQL yang tidak peka huruf besar / kecil
Underscores_Scheme
. Namun perangkat lunak modern mendukung segala jenis skema penamaan. Namun terkadang beberapa bug, kesalahan, atau faktor manusia yang buruk dapat menyebabkanUPPERCASINGEVERYTHING
mereka, yang memilih keduanyaPascal_Case
danUnderscore_Case
skema hidup dengan semua saraf di tempat yang baik.sumber
Agregasi dari sebagian besar di atas:
Kemudian Anda dapat dengan mudah menerjemahkan (bahkan secara otomatis) nama antar lingkungan.
Tetapi saya akan menambahkan pertimbangan lain: Anda mungkin menemukan bahwa ada faktor-faktor lain ketika Anda berpindah dari kelas di aplikasi Anda ke tabel di database Anda: objek database memiliki tampilan, pemicu, procs tersimpan, indeks, batasan, dll - itu juga butuh nama. Jadi misalnya, Anda mungkin mendapati diri Anda hanya mengakses tabel melalui tampilan yang biasanya hanya berupa "pilih * dari foo" sederhana. Ini dapat diidentifikasi sebagai nama tabel hanya dengan akhiran '_v' atau Anda dapat meletakkannya di skema yang berbeda. Tujuan dari lapisan abstraksi yang sederhana adalah bahwa lapisan tersebut dapat diperluas bila diperlukan untuk memungkinkan perubahan dalam satu lingkungan untuk menghindari dampak yang lain. Ini tidak akan merusak saran penamaan di atas - hanya beberapa hal lagi yang perlu diperhitungkan.
sumber
Saya menggunakan garis bawah. Saya melakukan proyek Oracle beberapa tahun yang lalu, dan tampaknya Oracle memaksa semua nama objek saya menggunakan huruf besar, yang mana akan mengalahkan skema casing apa pun. Saya sebenarnya bukan orang Oracle, jadi mungkin ada cara lain yang tidak saya sadari, tetapi hal itu membuat saya menggunakan garis bawah dan saya tidak pernah kembali.
sumber
Karena pertanyaannya tidak spesifik untuk platform atau mesin DB tertentu, saya harus mengatakan untuk portabilitas maksimum, Anda harus selalu menggunakan nama tabel huruf kecil.
/ [a-z _] [a-z0-9 _] * / adalah satu-satunya pola nama yang diterjemahkan dengan mulus di antara platform yang berbeda. Alfa-numerik huruf kecil + garis bawah akan selalu berfungsi secara konsisten.
Seperti disebutkan di tempat lain, nama relasi (tabel) harus tunggal: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
sumber
Saya cenderung setuju dengan orang-orang yang mengatakan itu tergantung pada konvensi bahasa yang Anda gunakan (mis. PascalCase untuk C # dan snake_case untuk Ruby).
Jangan pernah camelCase.
sumber
Setelah membaca banyak pendapat lain, saya pikir sangat penting untuk menggunakan konvensi penamaan bahasa, konsistensi lebih penting daripada konvensi penamaan hanya jika Anda (dan akan menjadi) satu-satunya pengembang aplikasi. Jika Anda menginginkan keterbacaan (yang sangat penting) Anda lebih baik menggunakan konvensi penamaan untuk setiap bahasa. Di MySQL misalnya, saya tidak menyarankan menggunakan CamelCase karena tidak semua platform peka huruf besar kecil. Jadi di sini garis bawah lebih baik.
sumber
camelCase
sampaicamelcase
. Jadi memiliki kotak ular jauh lebih baik. Juga tentangModern software however supports any kind of naming scheme
Anda tidak memiliki jaminan bahwa yop akan menulis kode untuk versi lunak terakhir. Khusus untuk database - update versi bukanlah hal yang sepele bila memikirkan biaya regresi.Ini adalah lima sen saya. Saya sampai pada kesimpulan bahwa jika DB dari vendor yang berbeda digunakan untuk satu proyek, ada dua cara terbaik:
Alasannya adalah karena beberapa database akan mengubah semua karakter menjadi huruf besar dan beberapa menjadi huruf kecil. Jadi, jika Anda memilikinya
myTable
akan menjadiMYTABLE
ataumytable
kapan Anda akan bekerja dengan DB.sumber
Sayangnya tidak ada jawaban "terbaik" untuk pertanyaan ini. Seperti yang dikatakan @David, konsistensi jauh lebih penting daripada konvensi penamaan.
sumber
ada banyak variasi tentang cara memisahkan kata, jadi di sana Anda harus memilih apa pun yang lebih Anda suka; tetapi pada saat yang sama, tampaknya hampir ada kesepakatan bahwa nama tabel harus tunggal.
sumber
Konvensi penamaan ada dalam lingkup bahasa, dan bahasa yang berbeda memiliki konvensi penamaan yang berbeda.
SQL peka huruf besar / kecil secara default; jadi, snake_case adalah konvensi yang banyak digunakan. SQL juga mendukung pengenal yang dibatasi; jadi, kasus campuran dalam opsi, seperti camelCase (Java, di mana bidang == kolom) atau PascalCase (C #, di mana tabel == kelas dan kolom == bidang). Jika mesin DB Anda tidak dapat mendukung standar SQL, itulah masalahnya. Anda dapat memutuskan untuk menerimanya atau memilih mesin lain. (Dan mengapa C # harus berbeda adalah titik kejengkelan bagi kita yang mengkode keduanya.)
Jika Anda bermaksud untuk hanya menggunakan satu bahasa di layanan dan aplikasi Anda, gunakan konvensi bahasa itu di semua lapisan. Selain itu, gunakan konvensi bahasa yang paling banyak digunakan di domain tempat bahasa itu digunakan.
sumber