August 11, 2025
5 min read
Pernahkah Anda bertanya-tanya, mengapa data di sebuah website nampak lebih terorganisir dan tersusun rapi? Hal tersebut karena adanya proses yang bernama normalisasi database. Sebuah tahapan maintenance database agar menjadi lebih efisien. Lalu bagaimana contoh normalisasi database itu? Yuk simak penjelasannya pada artikel ini.
Apa itu normalisasi database?
Normalisasi database adalah sebuah proses maintenance database agar data-data di dalam database dapat lebih terorganisir, tersusun rapi, bahkan dapat mengurangi redudansi dan menjaga integritas data.
Analogi sederhana terkait normalisasi database seperti halnya merapikan pakaian di dalam lemari. Dengan memisahkan celana, kaos, kemeja, pakaian dalam bahkan aksesoris agar tidak tercampur aduk menjadi satu. Sehingga, lebih memudahkan kita ketika ingin mencari dan mengambil barang yang dituju.
Proses dalam normalisasi database umumnya akan disusun berdasarkan tingkatan berdasarkan class. Terdapat juga beberapa tahapan yang paling umum digunakan seperti normalisasi tingkat pertama (1NF), normalisasi tingkat kedua (2NF), normalisasi tingkat ketiga (3NF), dan seterusnya.
Setiap tingkatan normalisasi memiliki kriteria yang harus dipenuhi, misalnya:
- First Normal Form (1NF) : tidak boleh ada data berulang, setiap kolom hanya berisi nilai tunggal (atomic value), setiap tabel harus punya primary key.
- Second Normal Form (2NF) : harus memenuhi kriteria 1NF, setiap kolom non-primer harus bergantung pada primary key.
- Third Normal Form (3NF) : harus memenuhi kriteria 2NF, tidak boleh ada kolom non-primer yang bergantung pada kolom non-primer lainnya.
Anda juga dapat membaca penjelasan terkait normalisasi database pada artikel: Apa Itu Normalisasi Database?
Fungsi normalisasi database
Normalisasi database sangat penting apalagi untuk website penjualan yang datanya terus berkembang seiring waktu. Berikut beberapa fungsi dari normalisasi database:
- Mengurangi duplikasi data: data pelanggan yang sama tidak akan terjadi pengulangan ketika melakukan transaksi.
- Mengurangi penyimpanan: dengan tidak adanya duplikasi data, maka ruang penyimpanan dapat menjadi lebih longgar.
- Memudahkan dalam update data: ketika ada proses update data dapat dilakukan dengan cepat pada 1 tabel tanpa harus mencari di tabel-tabel yang lain.
- Meningkatkan keamanan data: karena datanya lebih terorganisir dan tersusun rapi, maka dalam pengelolaan data menjadi lebih mudah dilakukan dan meminimalisir kesalahan input data.
- Mempercepat pencarian data: karena data-data sudah tersusun rapi, proses pengambilan data akan menjadi lebih cepat.
Contoh normalisasi database pada web penjualan
Setelah mengetahui beberapa hal di atas, kami akan memberikan contoh sederhana terkait normalisasi database untuk website penjualan. Berikut informasinya:
Sebelum normalisasi
Berikut adalah contoh data mentah yang belum di normalisasi. Pada bagian ini memuat data seperti tabel berikut:
No. Pesanan | Tgl. Pesanan | ID Pelanggan | Nama Pelanggan | Alamat Pelanggan | Nama Produk | Harga Produk | Jumlah |
P001 | 2023-10-26 | C001 | Budi Santoso | Jl. Kenanga No. 5 | Baju Kaos, Celana Jeans | Rp50.000, Rp150.000 | 2, 1 |
P002 | 2023-10-26 | C002 | Siti Aminah | Jl. Mawar No. 10 | Sepatu Kets | Rp250,000 | 1 |
Masalah pada tabel tersebut terdiri dari:
- Adanya perulangan data di bagian nama dan alamat. Jika pelanggan melakukan lebih dari satu pesanan, akan membuat perulangan data.
- Adanya multivalue di kolom nama produk, harga produk, dan jumlah yang ditandai tanda koma.
- Jika ada perubahan harga produk, harus update di setiap produk yang memuat produk terkait.
Normalisasi 1NF
Dari data mentah tersebut, kita akan melakukan normalisasi database tahap 1NF. Berikut adalah hasil dari normalisasinya:
No. Pesanan | Tgl. Pesanan | ID Pelanggan | Nama Pelanggan | Alamat Pelanggan | Nama Produk | Harga Produk | Jumlah |
P001 | 2023-10-26 | C001 | Budi Santoso | Jl. Kenanga No. 5 | Baju Kaos | Rp50,000 | 2 |
P001 | 2023-10-26 | C001 | Budi Santoso | Jl. Kenanga No. 5 | Celana Jeans | Rp150,000 | 1 |
P002 | 2023-10-26 | C002 | Siti Aminah | Jl. Mawar No. 10 | Sepatu Kets | Rp250,000 | 1 |
Tujuan 1NF untuk menghilangkan kolom multivalue, sehingga pada setiap kolom hanya berisikan satu nilai atomik saja. Namun, dari hasil 1NF masih memiliki beberapa masalah seperti:
- Adanya perulangan data terutama di bagian nama “Budi Santoso”.
- Adanya ketergantungan parsial di bagian kolom nama pelanggan dan alamat pelanggan yang hanya bergantung pada kolom ID pelanggan, bukan pada seluruh kunci utama (misalnya melakukan kombinasi antara kolom no pesanan dan nama produk).
Normalisasi 2NF
Dari hasil tersebut perlu dilakukan normalisasi lagi di tahap 2NF. Pada tahap ini akan dilakukan pemecahan data lagi. Data yang akan dipecah akan menjadi tabel baru yaitu Tabel pelanggan, Tabel Produk, dan Tabel pesanan. Pemecahan data ini agar di setiap tabel memiliki primary keynya sendiri dan tidak mengalami ketergantungan parsial.
Perlu diingat kalau di tahap 2NF setiap kolom non-primer harus bergantung pada primary keynya sendiri agar tidak mengalami ketergantungan parsial. Sehingga tabelnya akan menjadi berikut:
- Tabel Pelanggan
ID Pelanggan | Nama Pelanggan | Alamat Pelanggan |
C001 | Budi Santoso | Jl. Kenanga No. 5 |
C002 | Siti Aminah | Jl. Mawar No. 10 |
- Tabel Produk
Nama Produk | Harga Produk |
Baju Kaos | Rp50.000 |
Celana Jeans | Rp150.000 |
Sepatu Kets | Rp250.000 |
- Tabel Pesanan
No. Pesanan | Tgl. Pesanan | ID Pelanggan | Nama Produk | Jumlah |
P001 | 2023-10-26 | C001 | Baju Kaos | 2 |
P001 | 2023-10-26 | C001 | Celana Jeans | 1 |
P002 | 2023-10-26 | C002 | Sepatu Kets | 1 |
Setelah pemecahan data tersebut, masih terdapat masalah yang perlu dilakukan normalisasi kembali di tahap 3NF. Bagian yang mengalami masalah yaitu ketergantungan transitif di tabel pesanan. Detailnya:
- Ketergantungan transitif berada di kolom Nama Produk.
- Nama Produk pada Tabel Pesanan sebenarnya tidak bergantung langsung pada No. Pesanan.
- Nama Produk harus memiliki hubungan langsung dengan Harga Produk di Tabel Produk.
- Nama Produk adalah kolom Non-Primer.
- Jumlah adalah kolom Non-Primer.
- Kolom non-primer tidak boleh bergantung dengan kolom non-primer lain (ketergantungan transitif).
Normalisasi 3NF
Dari hasil sebelumnya, perlu dilakukan pemecahan tabel lagi agar tidak menimbulkan ketergantungan transitif. Tabel pesanan akan dipecah menjadi dua menjadi tabel Pesanan dan Tabel Detail Pesanan. Kemudian ditambahkan ID produk sebagai primary key di Tabel Produk dan foreign key di Tabel Detail Pesanan. Hasilnya menjadi seperti berikut:
- Tabel Pelanggan
ID Pelanggan | Nama Pelanggan | Alamat Pelanggan |
C001 | Budi Santoso | Jl. Kenanga No. 5 |
C002 | Siti Aminah | Jl. Mawar No. 10 |
- Tabel Produk
ID Produk | Nama Produk | Harga Produk |
PR001 | Baju Kaos | Rp50.000 |
PR002 | Celana Jeans | Rp150.000 |
PR003 | Sepatu Kets | Rp250.000 |
- Tabel Pesanan
No. Pesanan | Tgl. Pesanan | ID Pelanggan |
P001 | 2023-10-26 | C001 |
P002 | 2023-10-26 | C002 |
- Tabel Detail Pesanan
ID Detail | No. Pesanan | ID Produk | Jumlah |
1 | P001 | PR001 | 2 |
2 | P001 | PR002 | 1 |
3 | P002 | PR003 | 1 |
Dari hasil pemecahan tersebut sudah tidak ada ketergantungan transitif karena setiap tabel sudah memiliki fokus tunggal.
- Tabel Pelanggan untuk data pelanggan.
- Tabel Produk untuk data produk.
- Tabel Pesanan untuk data pesanan.
- Tabel Detail Pesanan untuk menghubungkan Tabel pesanan dengan tabel produk
BACA JUGA: Belajar Database MySQL Untuk Pemula Melalui Localhost
Penutup
Normalisasi database merupakan proses penting untuk melakukan pengelolaan data agar lebih terorganisir dan tersusun rapi, terutama untuk website penjualan yang memiliki banyak informasi dinamis. Fokus utama normalisasi database agar tidak ada data berulang dan mengatasi anomali data.
Dengan melakukan normalisasi database mulai 1NF hingga 3NF, data penjualan akan lebih mudah dikelola dan lebih efisien. Jika memiliki niat untuk mengembangkan bisnis penjualan melalui website, pastikan databasenya sudah dilakukan proses normalisasi database. Dengan pengelolaan database yang baik dapat membuat website penjualan juga menjadi lebih kuat.
Demikian artikel kami tentang contoh normalisasi database pada website penjualan, semoga bermanfaat.