Normalization


Apa itu Normalisasi?

Normalisasi dalam database mengacu pada proses mengorganisir data sehingga disimpan secara efisien dan tanpa redundansi.

Proses normalisasi melibatkan memecah tabel menjadi tabel yang lebih kecil dan mudah dikelola, serta membangun hubungan antara tabel-tabel tersebut. Proses ini biasanya dibagi menjadi beberapa bentuk normal, masing-masing menentukan seperangkat aturan untuk struktur data.


Bentuk-Bentuk Normalisasi

  • Bentuk normal pertama (1NF): Memastikan bahwa setiap kolom dalam tabel mengandung nilai atomik, yaitu nilai yang tidak dapat dibagi lebih lanjut.
  • Bentuk normal kedua (2NF): Memastikan bahwa setiap tabel memiliki kunci primer dan setiap kolom non-kunci sepenuhnya tergantung pada kunci primer.
  • Bentuk normal ketiga (3NF): Memastikan bahwa setiap kolom non-kunci tidak bergantung secara transitif pada kunci primer.

Terdapat bentuk normal tambahan di luar 3NF, namun jarang digunakan. Normalisasi membantu meningkatkan kinerja database dengan mengurangi jumlah data redundan yang perlu disimpan dan memastikan bahwa data konsisten di seluruh tabel. Hal ini juga memudahkan pembaruan dan pemeliharaan database.


Contoh

mari kita lihat contoh database pesanan pelanggan untuk toko online. database awal mungkin memiliki satu tabel dengan kolom-kolom berikut:

  • OrderID, CustomerName, CustomerEmail, ProductName, ProductPrice, Quantity, TotalPrice

Namun, tabel ini tidak ternormalisasi, karena terdapat redundansi data, dan tidak ada hubungan antara kolom-kolom. Misalnya, jika seorang pelanggan melakukan beberapa pesanan, nama dan email mereka akan diduplikasi pada setiap baris.

Untuk melakukan normalisasi tabel ini, kita perlu memecahnya menjadi tabel-tabel yang lebih kecil dan membangun hubungan antara mereka. Berikut adalah contoh normalisasi untuk tabel tersebut:

normalization visualization

Bentuk normal pertama (1NF)

  • Pisahkan produk menjadi tabel terpisah dengan kolom-kolom berikut:

ProductID, ProductName, ProductPrice

  • Buat tabel baru untuk detail pesanan dengan kolom-kolom berikut:

OrderID, CustomerName, CustomerEmail

normalization visualization

Bentuk normal kedua (2NF)

  • Tambahkan primary key ke tabel produk (ProductID).
  • Tambahkan foreign key ke tabel detail pesanan (ProductID).
normalization visualization

Bentuk normal ketiga (3NF)

  • Hapus kolom TotalPrice dari tabel detail pesanan, karena dapat dihitung dari kolom ProductPrice dan Quantity.

database final mungkin terlihat seperti ini:

Tabel produk: ProductID, ProductName, ProductPrice

Tabel detail pesanan: OrderID, CustomerName, CustomerEmail, ProductID, Quantity

normalization visualization

Dengan melakukan normalisasi database ini, kita telah menghilangkan redundansi data dan membangun hubungan antara tabel-tabel. Hal ini membuat database lebih efisien dan lebih mudah di-maintain.