Apa itu normalisasi database?

Normalisasi database adalah proses yang digunakan dalam desain database untuk mengatur data secara efisien. Hal ini dapat membantu mengurangi redundansi data (data duplikat) dan meningkatkan integritas data (akurasi dan konsistensi data). Hal ini seperti mengatur lemari arsip yang berantakan: alih-alih menyimpan informasi yang sama di banyak tempat, Anda menyimpan setiap informasi di satu tempat, lalu menggunakan sistem referensi silang untuk menghubungkannya.

Apa yang dimaksud dengan "database"?

Database hanyalah kumpulan data yang terorganisir, biasanya disimpan secara elektronik dalam sistem komputer. Anggap saja seperti lemari arsip digital. Alih-alih menggunakan folder dan laci kertas, Anda menggunakan tabel terstruktur (atau metode pengorganisasian data lainnya) yang memungkinkan Anda menyimpan, mengelola, dan mengambil informasi dengan cepat dan efisien.

Bisnis modern menggunakan database untuk melacak segala hal, mulai dari pesanan pelanggan dan tingkat inventaris hingga detail akun pengguna dan transaksi keuangan, dan banyak yang memilih untuk menjalankan database mereka di cloud.

Apa itu database relasional?

Database relasional mengatur data ke dalam satu atau beberapa tabel yang terdiri dari kolom dan baris. Database ini disebut "relasional" karena menetapkan hubungan spesifik dan telah ditentukan sebelumnya antara tabel-tabel ini. Ide utamanya adalah memecah informasi kompleks menjadi bagian-bagian yang lebih kecil dan mudah dikelola, sehingga tidak perlu menyimpan informasi yang sama berkali-kali.

Contoh normalisasi database

Bayangkan database sederhana untuk toko online. Anda akan memiliki tabel untuk Pelanggan (nama, alamat, telepon) dan tabel lainnya untuk Pesanan (tanggal, total). Saat pelanggan melakukan pemesanan, Anda tidak perlu menyalin seluruh alamat mereka ke tabel Pesanan. Anda cukup menggunakan ID Pelanggan unik mereka untuk menghubungkan pesanan kembali ke detail lengkap pelanggan.

Jika pelanggan pindah dan mengubah alamat, Anda hanya perlu memperbaruinya di satu tempat: tabel Pelanggan. Jika Anda menyalinnya ke 100 kumpulan data pesanan, Anda harus memperbarui semuanya, yang kemungkinan akan menghasilkan data yang tidak rapi dan tidak konsisten. Masalah yang mengharuskan Anda memperbarui informasi di banyak tempat ini disebut anomali data.

Namun, Anda ingin menyalin harga produk ke dalam data pesanan pada saat pembelian. Mengapa? Karena harga produk mungkin berubah di masa mendatang di tabel Produk utama Anda, tetapi catatan pesanan harus mencerminkan harga yang sebenarnya dibayar pelanggan pada tanggal transaksi. Dalam kasus ini, menyalin dan membekukan data (atau membuat snapshot) adalah pilihan desain yang tepat.

Normalisasi adalah proses sistematis untuk mendesain tabel relasional dan hubungan di antara tabel tersebut guna menghilangkan inkonsistensi ini dan menghemat ruang penyimpanan. "Bentuk normal" (1NF, 2NF, 3NF, dll.) adalah serangkaian aturan preskriptif. Normalisasi adalah solusi untuk redundansi data dan anomali data yang ditimbulkannya, sehingga memberikan jalur yang jelas untuk mengelola data secara efisien dan andal berdasarkan kebutuhan aplikasi Anda.

Berbagai bentuk normal (1NF, 2NF, 3NF)

Normalisasi adalah panduan langkah demi langkah untuk menyusun tabel Anda, dengan setiap langkah (atau "bentuk") yang dibangun berdasarkan langkah sebelumnya. Agar dapat berada dalam Bentuk Normal Ketiga (3NF), tabel harus lulus uji untuk 1NF dan 2NF. Sebagian besar database operasional dirancang untuk memenuhi setidaknya standar 3NF karena dapat memberikan keseimbangan antara integritas dan performa data.

Aturan untuk 1NF adalah memastikan tabel Anda terstruktur dengan benar sejak awal, seperti menyiapkan spreadsheet yang rapi.

Aturan: Setiap kolom harus memiliki nama yang unik, dan setiap sel hanya boleh berisi satu nilai yang tidak dapat dibagi.

Masalah yang dipecahkan: Anda tidak dapat memasukkan daftar item ke dalam satu sel. Misalnya, dalam tabel "Pesanan", Anda tidak dapat mencantumkan "Susu, Telur, Roti" dalam satu sel di kolom "Produk yang Dipesan". Sebagai gantinya, setiap produk harus memiliki barisnya sendiri, yang memastikan data dapat dicari dan dikelola.

Aturan 2NF hanya berlaku jika tabel Anda menggunakan kunci komposit—kunci utama yang terdiri dari dua kolom atau lebih yang digabungkan (seperti ID Pesanan ditambah ID Produk). Kunci utama adalah kolom atau sekumpulan kolom yang nilainya mengidentifikasi setiap baris dalam tabel secara unik. Kolom non-kunci adalah kolom apa pun yang bukan bagian dari kunci utama.

Aturan: Tabel harus sudah dalam 1NF, dan semua kolom non-kunci harus bergantung pada seluruh kunci komposit, bukan hanya sebagian.

Masalah yang diselesaikan: Anda hanya boleh menyimpan data di tempat yang benar-benar sesuai. Jika Anda memiliki tabel dengan kunci (IDPesanan, IDProduk), kolom seperti Harga Produk tidak boleh ada di dalamnya karena harga hanya bergantung pada IDProduk, bukan IDPesanan. Solusinya adalah memindahkan IDProduk dan Harga Produk ke tabel Produk terpisah, dengan IDProduk sebagai kunci utama tunggal. Hal ini mencegah harga produk diulang secara tidak perlu untuk setiap pesanan yang berisi produk tersebut.

Aturan 3NF adalah target paling umum untuk desain database dan bertujuan menghilangkan hubungan tidak langsung antara titik data.

Aturan: Tabel harus berada dalam 2NF, dan kolom non-kunci hanya boleh bergantung pada kunci utama, bukan pada kolom non-kunci lainnya.

Masalah yang diselesaikan: Menghindari satu bagian data non-kunci menentukan nilai bagian data non-kunci lainnya. Pertimbangkan tabel "Karyawan" yang menyimpan ID Kantor (kolom non-kunci) dan Lokasi Kantor (kolom non-kunci lainnya). Lokasi Kantor ditentukan oleh ID Kantor, bukan ID karyawan (kunci utama tabel). Link tidak langsung ini adalah dependensi transitif. Untuk memperbaikinya, Anda membuat tabel Kantor baru yang hanya berisi ID Kantor dan Lokasi Kantor, lalu menautkan kedua tabel tersebut menggunakan ID Kantor. Dengan begitu, Anda hanya perlu memperbarui lokasi kantor di satu tempat jika ada perubahan.

Normalisasi vs. denormalisasi

Fitur

Normalisasi

Denormalisasi

Sasaran utama

Mengurangi redundansi, meningkatkan integritas data.

Meningkatkan performa baca.

Contoh kasus penggunaan

Database transaksional (pembaruan sering).

Database analitis dan data warehouse (sering dibaca); data yang tidak boleh berubah setelah dibuat (misalnya, snapshot kontrak atau invoice).

Hasil

Lebih banyak tabel, lebih sedikit duplikasi data.

Tabel lebih sedikit, duplikasi data yang disengaja.

Fitur

Normalisasi

Denormalisasi

Sasaran utama

Mengurangi redundansi, meningkatkan integritas data.

Meningkatkan performa baca.

Contoh kasus penggunaan

Database transaksional (pembaruan sering).

Database analitis dan data warehouse (sering dibaca); data yang tidak boleh berubah setelah dibuat (misalnya, snapshot kontrak atau invoice).

Hasil

Lebih banyak tabel, lebih sedikit duplikasi data.

Tabel lebih sedikit, duplikasi data yang disengaja.

Denormalisasi adalah penambahan data redundan yang disengaja ke database, sering kali untuk meningkatkan performa kueri untuk pelaporan atau analisis. Ini adalah pertukaran: Anda mengorbankan sebagian integritas dan meningkatkan ruang penyimpanan untuk pengambilan data yang lebih cepat. Namun, dalam skenario seperti kontrak hukum, Anda mungkin menginginkan redundansi yang disengaja ini untuk membuat snapshot data yang independen dari perubahan di masa mendatang. Hal ini memastikan bahwa persyaratan, nama, dan harga yang tercatat pada saat penandatanganan kontrak tetap permanen dan tersedia, meskipun data pelanggan atau produk utama diperbarui di kemudian hari.

Mengapa normalisasi database penting?

Normalisasi membuat database relasional (seperti Cloud SQL atau Spanner) lebih efisien, andal, dan mudah dikelola dengan menggunakan "bentuk normal" untuk menyusun data dan menghindari masalah umum. 

Mengurangi redundansi data

Simpan setiap bagian data, seperti alamat pelanggan, hanya di satu tempat untuk menghemat ruang penyimpanan dan meningkatkan efisiensi.

Menghilangkan anomali data

Hindari inkonsistensi yang dapat terjadi dengan data redundan, seperti anomali penyisipan, penghapusan, atau pembaruan.

Meningkatkan integritas data

Pastikan data akurat dan konsisten di seluruh database dengan menjamin setiap bagian data benar dan disimpan di satu lokasi saja.

Jika prioritas Anda adalah performa yang sangat tinggi, skala besar, atau skema yang fleksibel, Anda dapat memilih database non-relasional (NoSQL), seperti Bigtable atau Firestore. Database NoSQL dirancang dengan prinsip berbeda yang secara sengaja menyertakan redundansi data untuk mengoptimalkan pembacaan dan ketersediaan yang cepat.

Mengatasi tantangan bisnis Anda dengan Google Cloud

Pelanggan baru mendapatkan kredit gratis senilai $300 untuk dibelanjakan di Google Cloud.

Langkah selanjutnya

Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.