Ketika berangkat dari project satu ke project lain atau bahkan ketika pindah perusahaan, terkadang kita harus belajar kembali cara penamaan dan design database. Ini disebabkan karena database bagi sebagian developer hanya sebuah tempat untuk menyimpan data hingga pekerjaan utama(coding) selesai. Sehingga dari sebagian banyak developer dengan ‘strong SQL skill’ hanya sedikit yang mampu menormalisasi database.
Jika kita sudah memiliki database, ada baiknya kita menggunakan standar yang sudah ada pada database tersebut, sambil tetap memperhatikan konsistensinya. Namun jika kita dalam tahap membuat database baru, saya harap artikel ini bisa membantu.
Aturan Umum
Nama Database
Nama Table
CamelCase Vs snake_case
Mari kita bahas dari yang paling umum. Kita pasti pernah menemukan nama table MstUser atau mst_user. Mana yang sebaiknya kita pakai, CamelCase atau snake_case? Dalam hal ini saya menyarankan untuk menggunakan snake_case. Untuk mempermudah pemahaman kita mari kita buat table dengan nama ‘underscore‘ dengan standar camelcase seharusnya menjadi Underscore. Lalu bagaimana jika kita memerlukan table dengan nama ‘under score‘ dimana kita tahu ‘underscore‘ dan ‘under score‘ memiliki arti yang berbeda. Jadi jika kita menggunakan CamelCase akan menjadi Underscore dan UnderScore. hal ini akan menimbulkan error ambigu karena sql merupakan Case-Insensitive. Penggunaan snake_case seperti pada underscore_name dan under_score_name akan membantu mengurangi ambigu. Tantangan lain yang bisa dihindari jika menggunakan CamelCase adalah ketika menggunakan Akronim seperti IdKaryawan atau IDKaryawan. Jika menggunakan snake_case tentu tidak akan ada perbedaan asumsi antar developer.
Plural Vs Singular
Bagian ini terkadang luput dari perhatian kita. Karena tidak ada standar pasti yang mana yang harus digunakan plural(customers) atau singular(customer). Tanpa perlu membahas teori mana yang benar, saya ingin mengingatkan bahwa Sql memiliki kata spesial yang disebut ‘reversed word’. Ketika kita menamai table dengan nama user maka akan terjadi bentrok dengan ‘reversed word’. Jadi penamaan plural seperti users akan menghindari bentrok penamaan dengan ‘reversed word’. Namun tentu saja ini tidak mutlak, jika ingin menggunakan penamaan singular maka cara penamaan mst_user tentu akan lebih masuk akal.
Prefix dan Suffix
Nama Kolom
Hindari tambahan nama table ke nama kolom
Yang saya maksud disini adalah kolom yang menggunakan nama tablenya sendiri. Contoh yang salah adalah seperti berikut;
task (taskid, taskname, title)
sebaliknya kita dapat menggunakan table name untuk nama kolom di table yang berbeda untuk menyatakan relasi. Gunakan nama kolom seperti berikut;
task (id, userid, title);
note (id, taskid, userid, note);
user (id, name);
Hindari multitafsir
Penggunaan nama yang spesifik akan membantu menghindari multitafsir. Sebagai contoh penamaan suhu dengan data 32 membuat multitafsir karena 32 adalah suhu ruang yang hangat dalam Celcius namun dingin dalam Fahrenheit, sehingga lebih tepat jika kita beri nama celsius. Berikut adalah nama yang disarankan;
mysql> select * from cek_suhu;
id | nama | amount | unit | demam |
1 | sunu dioh | 39 | c | true |
2 | irwan hasan | 37 | c | false |
3 | achmad wahyu | 98 | f | false |
Kesimpulan
Standar penamaan sangat penting karena membantu koding dalam kecepatan, konsistensi, dan predictable. Sehingga nama yang tidak predictable dapat dicurigai sebagai bug. Bagaimanapun pemilihan standar penamaan dapat memudahkan kita membaca kode lebih baik. Jika dikerjakan dengan baik, akan memungkinkan kita melihat error dalam satu baris kode.
Buatlah nama table dan database simple namun mudah dimengerti oleh database desiner maupun programer. Nama bukanlah sesuatu yang harus menimbulkan kebingungan. Dan terakhir, nama mudah digunakan untuk bahasa pemrograman atau framework yang diimplementasikan.
Penulis : Tetra Sunu Dioh
Leave A Comment