[WebDev] Best Practice Membangun Desain Database Aplikasi yang Scalable

0
4
Deskripsi

Tulisan ini adalah kelanjutan dari tulisan saya sebelumnya dalam seri Best Practice Membangun Aplikasi Website dengan Laravel. Sebelum memulai untuk membuat aplikasi atau coding, ada hal yang perlu dipersiapkan oleh pengembang aplikasi website, yaitu database yang akan digunakan. Aplikasi tanpa database sebenarnya tidak menjadi masalah, namun apabila ada kondisi dimana pengguna akan melakukan maintenance seperti merubah properti value website, tentu tidak mungkin dilakukan secara hardcode atau merubah...

Tulisan ini adalah kelanjutan dari tulisan saya sebelumnya dalam seri Best Practice Membangun Aplikasi Website dengan Laravel. Sebelum memulai untuk membuat aplikasi atau coding, ada hal yang perlu dipersiapkan oleh pengembang aplikasi website, yaitu database yang akan digunakan. Aplikasi tanpa database sebenarnya tidak menjadi masalah, namun apabila ada kondisi dimana pengguna akan melakukan maintenance seperti merubah properti value website, tentu tidak mungkin dilakukan secara hardcode atau merubah kode setiap kali ada perubahan.

Aplikasi website harus dibuat se-general mungkin

Untuk mendapatkan aplikasi yang general dan mudah untuk dikustomisasi tentu dimulai dari desain database yang baik dan scalable. Saya akan memberikan beberapa contoh kasus kesalahan yang dilakukan pengembang dalam mendesain database. Kesalahan ini mungkin tidak menjadi masalah untuk jangka waktu pendek, namun seiring berkembangnya data dan sistem yang saling terhubung, kesadaran akan kesalahan desain database akan dirasakan sangat mengganggu.

1. UUID sebagai atribut unik / primary key

Kasus pertama kesalahan yang sering dilakukan yaitu pembuatan atribut unik atau primary key dalam tabel di database, dimana pengembang lebih suka membuat id transaksi dengan menggunakan autoincrement. Bagi saya, autoincrement pada dasarnya berguna hanya sebagai index untuk menghitung jumlah row terakhir yang pernah diinput sistem. Dalam hal dijadikan referensi id unik, penggunaan autoincrement sangatlah berisiko. Secara best practice, pengembang aplikasi yang sudah berpengalaman tidak akan menggunakan fungsi autoincrement ini dalam suatu id transaksi. Lalu bagaimana solusinya? Kita mengenal yang namanya universally unique identifier (UUID) yaitu kode unik yang dibangun atas 128-bit angka sebagai identifikasi sistem komputer.

UUID sebagai primary key

Penggunaan UUID akan mengatasi masalah konflik data ketika suatu sistem akan dilakukan integrasi. Saya sendiri mengalami kendala ini dan tersadar ketika akan membuat fungsi export import data antar sistem. Suatu trasanksi yang menggunakan autoincrement ketika akan dilakukan penggabungan dengan data di sistem yang berbeda akan mengalami konflik id transaksi.

2. Penggunaan Desain Relasional Database

Sebelum membahas mengeniai relational database, kita akan membahas mengenai struktur database itu sendiri. Beberapa istilah yang akan ditemui diantaranya:

Database atau Entitas adalah suatu objek yang memiliki atribut dan nilai sehingga memiliki karakteristik khusus. Sebagai contoh ketika akan membuat aplikasi perpustakaan, maka entitasnya adalah Perpustakaan.

Tabel adalah komponen pembentuk database yang memiliki atribut field untuk menampung transaksi. Sebagai contoh untuk entitas perpustakaan akan dibentuk oleh 3 tabel utama yaitu Tabel Buku, Penerbit dan Pengarang.

Field adalah atribut-atribut yang membentuk suatu tabel dimana suatu field akan menampung nilai yang akan mencirikan suatu tabel. Misalnya untuk tabel Buku, akan terdiri atas judul buku, tahun terbit, jumlah halaman, isbn, dll.

Data Value, data value / nilai merupakan satuan data terkecil yang berisi hanya nilai pada field tertentu. Melanjutkan contoh sebelumnya, tabel Buku diisi dengan nilai diantaranya judul buku "Cara Membuat Website", tahun terbit "2020", jumlah halaman "200" dan isbn "12328728".

Record / row merupakan kumpulan data yang terdiri dari sekumpulan field. Record merupakan satuan informasi database yang berisi satu unit data konkrit. Satu record dapat disebut juga dengan 1 transaksi.

Konsep Relational Database

Penggunaan konsep relational database akan sangat membantu kita untuk menghasilkan desain database yang efisien. Relational database akan mengatasi permasalahan redudansi atau duplikasi data serta menciptakan desain database yang terintegrasi dan scalable. Sebagai contoh untuk aplikasi perpustakaan sebelumnya, untuk mendesain database yang berelasi, maka pada Tabel Buku tidak akan diisi dengan nama pengarang buku, namun akan diisi dengan kode pengarang buku. Sedangkan nama pengarang buku berada pada Tabel Pengarang Buku. Dengan metode ini, maka apabila sistem akan mengubah nama pengarang buku tidak perlu mencari judul buku yang dibuat oleh pengarang pada Tabel Buku lalu mengganti nama pengarang buku, melainkan sistem tinggal menggantinya pada Tabel Pengarang Buku. Dengan konsep ini, maka masing-masing tabel pada entitas perpustakaan dapat berdiri sendiri dan tercipta proses pengambilan data dari dan ke database dengan lebih efektif dan efisien. Secara umum konsep relasional database dibagi menjadi 3 yaitu:

One to One (1 to 1)

Relasi database model ini terjadi apabila sebuah data terdapat pada 2 buah tabel, dan hanya diperbolehkan satu data saja pada masing masing tabel (unique record), sama halnya seperti primary key, record yang ada pada model ini tidak boleh ada yang sama.

One to Many (1 to n)

Relasi database model ini membolehkan data yang sama pada tabel kedua, tapi hanya membolehkan data yang bersifat unique (unik) pada tabel pertama. Jadi pada model tabel kedua boleh memiliki beberapa data yang sama.

Many to many (n to m)

Berbeda dengan kedua model diatas, relasi database model ini membolehkan beberapa data yang sama baik pada tabel pertama maupun tabel kedua. Dengan demikian tidak ada unique record di kedua tabel tersebut.

Demikianlah beberapa best practice dalam membangun desain database yang scalable yang dapat saya bagikan. Untuk tutorial selanjutnya, saya akan mulai membahas mengenai instalasi Framework Laravel dengan library dasar yang penting untuk diinstall. Salah satu library yang sudah saya sebutkan yaitu library UUID untuk mengenerate kode unik UUID.

Referensi: mfikri.com, DosenIT.com

Karya ini GRATIS! Tapi kamu boleh kok kasih tip biar kreator hepi 🥰

Selanjutnya [Web Dev] Instalasi Framework Laravel dan Library Dasar
0
0
Melanjutkan seri tutorial pengembangan aplikasi website sebelumnya, kali ini kita masuk pada proses instalasi framework laravel dan library dasar. Output yang akan kita hasilkan adalah starter kit yang akan mempermudah kita dalam pengembangan aplikasi web. Dalam dunia pengembangan aplikasi, developer manapun pasti membutuhkan yang namanya pola atau pattern dalam membuat aplikasi. Pola yang terus berulang tentu tidak akan efisien jika harus dibuat setiap kali ada proyek pengembangan aplikasi. Starter kit akan mempermudah pengembang sehingga semua fungsi dasar yang diperlukan sudah tersedia, sehingga pengembang tinggal membuat modifikasi sederhana sesuai dengan tujuan aplikasi yang dibuat. Dari best practice yang telah saya lalui, ada beberapa fungsi dasar yang seharusnya ada dalam sebuah aplikasi website yaitu:User Management atau Authentication Management. User management akan mengelola hal-hal terkait dengan role dari masing-masing user yang login. Secara sederhana, autentikasi dibutuhkan dalam hal pembuatan backend, dimana pengelolaan konten harus dilakukan oleh admin, sehingga dibatasi hanya oleh yang berhak saja. Pada kondisi tertentu, misalnya aplikasi publishing/blog dimana masing-masing user bisa membuat konten artikel sendiri, maka user manegement juga dibutuhkan untuk pengelolaan masing-masing akun pribadi user. Lalu bagaiman pembagian user role yang baik dalam pengembangan suatu aplikasi? dari pengalaman saya, user role yang dibuat pada dasarnya dibagi menjadi 3 yaitu:Role Super Admin, yang bertugas mengelola aplikasi secara menyeluruh baik segi teknis aplikasi maupun admin untuk pemberian hak akses.Role Admin Konten, yang bertugas mengelola aplikasi secara konten, data umum website, maupun user support.Role User, yaitu role sebagai pengguna pada umumnya yang telah melakukan registrasi dan terdaftar.Fungsi Print atau mencetak data dalam berbagai format seperti PDF, Excel, Word atau tampilan lainnya. Fungsi ini sangat diperlukan untuk menghasilkan berbagai report atas data yang dikelola. Biasanya fungsi ini dapat ditambahkan dengan fitur keren lain yaitu mencetak QR Code untuk setiap dokumen yang dihasilkan. Penggunaan QR Code ini akan menambah validitas data jika didalamnya diberikan informasi untuk validasi dokumen hasil cetakan tersebut.Fungsi Debugging. Dalam mode pengembangan atau development, fitur ini harus dimiliki bagi pengembang. Tujuannya yaitu menghasilkan solusi yang tepat atas error yang terjadi di aplikasi yang sedang dibangun.API Management. Jika aplikasi yang kamu buat akan terhubung dengan aplikasi mobile, maka fungsi ini wajib kamu tambahkan. Dengan API Management, maka proses transaksi data antar sistem menjadi lebih mudah dikelola.Frontend Design. Beberapa fitur untuk tampilan depan halaman website yang perlu kamu siapkan antara lain tampilan untuk message seperti popup message atau modal, tampilan tanggal dalam format bahasa Indonesia, tampilan list data dalam bentuk table, sampai pada Error handling design, yaitu tampilan dalam hal terjadi error atau url tidak tersedia. Walaupun sederhana fungsi ini akan sangat membantu kamu dalam membuat format-fromat yang sesuai dengam kebutuhan.Fungsi Pendukung Database. Beberapa library yang dibutuhkan seperti yang sudah dibahas pada artikel sebelumnya yaitu library untuk membuat UUID sebagai referensi ID unik setiap transaksi yang disimpan ke dalam database.Mungkin masih banyak fitur lainnya yang belum terdaftar, namun secara umum semua fitur di atas akan sangat diperlukan untuk menghasilkan starter kit yang sangat berguna untuk semua jenis aplikasi. Instalasi Laravel Framework 5.8Saatnya memulai proses instalasi framework Laravel 5.8. Saya memilih laravel 5.8 dengan berbagai pertimbangan, yaitu karena pada versi ini sudah tersedia helper yang lengkap untuk mendukung pengembangan aplikasi. Jika kamu ingin versi yang lebih tinggi yaitu laravel 6 atau 7 itu pilihan yang bebas. Pada tutorial sebelumnya, saya sudah memberikan instruksi untuk melakukan instalasi beberapa tool dasar, salah satunya Composer. Composer akan membantu kita dalam melakukan proses instalasi dari server laravel serta untuk library utama yang akan diinstall. 1. Buka Command prompt di windows atau bash pada mac. Lalu ketikkan perintah untuk change directory ke folder htdocs di dalam server XAMPP. Mengarahkan ke folder web server xampp2. Ketikkan perintah composer untuk install Laravel 5.8, composer create-project --prefer-dist laravel/laravel blog 5.8.*. blog merupakan folder baru yang akan dibuat dengan framework laravel 5.8. Tunggu sampai proses unduh seluruh file selesai. Proses ini akan memakan waktu tergantung koneksi internet kamu.Proses unduh file framework laravel3. Setelah proses selesai, buka editor text dengan Visual Studio Code atau Sublime dan arahkan ke folder instalasi yaitu di c:\xampp\htdocs\blog.File laravel yang berhasil diunduh4. Hal pertama yang harus disetting adalah file konfigurasi dengan nama .env. Secara default, file ini akan bernama .env.example, kita hanya perlu melakukan duplikasi file ini dan mengubah namanya menjadi .env. Pada file ini, akan kita gunakan untuk menghubungkan database dengan aplikasi, juga sebagai media penyimpanan variable global yang dibutuhkan aplikasi. Variable yang harus diisi yaitu:DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=(isikan nama database)DB_USERNAME=rootDB_PASSWORD=5. Sampai disini aplikasi kamu sudah bisa dijalankan baik dengan mengetik langsung pada browser alamat fisik (web server xampp sudah dijalankan PHP dan Mysql) dengan mengakses localhost/blog/public atau juga tanpa web server xampp dengan menjalankan perintah php artisan serve pada command prompt. Setelah menjalankan fungsi tersebut maka akan muncul alamat yang bisa dijalankan, biasanya di localhost:8000.Menjalankan laravel tanpa web server xamppAplikasi laravel sudah berhasil dijalankanYeay! Kamu sudah berhasil menjalankan aplikasi laravel kamu. Instalasi Library Utama LaravelPada struktur organisasi laravel pada gambar sebelumnya, kita melihat beberapa file seperti .env, lalu ada composer.json dan composer.lock. Pada file composer.json terdapat konfigurasi library laravel yang sudah terinstall pada aplikasi kita. Sedangkan file composer.lock adalah hasil terjemahan dari file composer.json yang sudah terparsing untuk dieksekusi aplikasi. Jika kamu mencoba hapus file composer.lock maka akan terjadi error. Sedangkan jika file composer.json yang dihapus maka tidak akan error, namun kamu akan kesulitan jika akan melakukan instalasi library.Untuk melakukan instalasi library dapat dilakukan dengan 2 cara yaitu pertama dengan mengubah file composer.json lalu menghapus file composer.lock (akan direfresh dan dibuat kembali dengan file terbaru), atau cara kedua dengan menggunakan command prompt. Struktur file composer.json akan terlihat sebagai berikut:Variabel “require” berisi parameter atau list library yang akan ada pada mode production, sedangkan variable “require-dev” berisi parameter atau list library yang hanya akan ada pada mode development. Lalu bagaimana cara mengubah mode tersebut? kamu bisa mengubahnya pada file .env pada variable APP_ENV atau pada folder config/app.php.Dari gambar di atas sudah dapat dilihat library yang harus dipersiapkan yaitu:1. barryvdh/laravel-dompdf: ^0.8.5, library untuk membantu melakukan cetak dalam format pdf.2. jenssegers/date: ^3.5, library untuk membantu format tanggal yang ditampilkan sesuai dengan format tanggal Indonesia.3. laravel/framework: 5.8.*, library utama yaitu laravel framework versi 5.8.4. ramsey/uuid: 3.9.3, library untuk menggenerate UUID untuk id unik transaksi di dalam database.5. simplesoftwareio/simple-qrcode: ~1, library untuk membuat QR Code di dalam cetakan file pdf.6. uxweb/sweet-alert: ^2.0, library untuk menampilkan popup alert setiap ada interaksi user, seperti insert, update, delete data untuk konfirmasi atau informasi.7. yajra/laravel-datatables-oracle: ~9.0, library untuk menampilkan data dalam bentuk tabel yang dinamis, baik client side maupun server side dengan menggunakan fungsi ajax / dom. 8. “maatwebsite/excel”, library untuk mencetak data dalam format excel. Selain library maatwebsite kamu juga bisa menggunakan library bawaan yajra untuk export data dalam berbagai format dengan variabel “yajra/laravel-datatables-buttons”:^4.09. barryvdh/laravel-debugbar: ^3.2, library untuk menampilkan pesan error pada laravel dengan lebih rinci, sehingga proses debugging lebih mudah dilakukan oleh developer. Library ini sebaiknya diletakkan pada variabel require-dev sehingga hanya akan muncul pada mode development.Seperti yang sudah saya sebutkan sebelumnya, kamu bisa langsung menuliskan list library pada file composer.json, kemudian menghapus file composer.lock. Setelah itu barulah kamu jalankan perintah di command prompt “Composer Install”. Perintah ini akan menginstall library yang ada pada file composer.json dan membuat kembali file composer.lock.Cara kedua yang menurut saya lebih mudah dipahami adalah dengan mengetikkan perintah instalasi masing-masing library. Dari list library di atas, maka yang perlu dilakukan adalah dengan mengetik perintah sebagai berikut pada command prompt kamu:1. composer require barryvdh/laravel-dompdf2. composer require jenssegers/date3. composer require ramsey/uuid4. composer require simplesoftwareio/simple-qrcode5. composer require uxweb/sweet-alert6. composer require yajra/laravel-datatables-oracle7. composer require maatwebsite/excel8. composer require yajra/laravel-datatables-buttons9. composer require barryvdh/laravel-debugbarUntuk library utama framework laravel 5.8 tidak perlu dilakukan instalasi lagi.Catatan Penting!Untuk menjalankan update secara menyeluruh aplikasi maka kamu bisa menggunakan perintah composer update, namun saya sangat tidak menyarankan perintah ini, karena semua depedencies akan berubah mengikuti versi laravel yang terbaru. Dari pengalaman saya, dengan menjalankan perintah composer update, maka ada saja beberapa library yang menjadi tidak support alias tidak berfungsi. Saya lebih menyarankan kamu untuk menghapus file composer.lock terlebih dahulu, kemudian menjalankan perintah composer install jika ada perubahan versi library di file composer.json.Demikian akhir dari tutorial melakukan instalasi framework laravel dan library utama untuk dijadikan bahan starter kit kamu. Semoga bermanfaat. Untuk file hasil pembuatan starter kit ini merupakan konten eksklusif yang bisa kamu dapatkan dengan mendukung saya melalui karyakarsa.Selamat mencoba!Referensi: https://solutech.id
Apakah konten ini melanggar ketentuan yang berlaku sesuai syarat dan persetujuan? Laporkan