Apa itu normalisasi pada ERD

 

Normalisasi dalam Entity-Relationship Diagram (ERD) adalah proses untuk mengorganisasi data dalam basis data relasional guna mengurangi redundansi dan memastikan integritas data. Normalisasi bertujuan untuk memecah tabel besar yang mengandung data duplikat menjadi tabel-tabel kecil yang lebih spesifik dengan hubungan antar tabel yang jelas.

Proses normalisasi dilakukan dengan mengikuti beberapa tingkatan normalisasi yang dikenal dengan istilah normal forms (NF). Setiap tingkat normalisasi berusaha untuk meningkatkan desain basis data dan mengurangi masalah yang dapat muncul dalam pengelolaan data.

1. Tujuan Normalisasi:

  • Mengurangi redundansi: Menghindari penyimpanan data yang berlebihan atau duplikat dalam basis data.
  • Menjaga konsistensi: Menghindari inkonsistensi data yang dapat terjadi ketika data yang seharusnya diperbarui tidak ter-update di seluruh tabel.
  • Mempermudah pemeliharaan: Data yang terorganisir dengan baik akan mempermudah pemeliharaan, pembaruan, dan penghapusan data.
  • Menghindari anomali: Seperti anomali pembaruan (update anomalies), anomali penyisipan (insertion anomalies), dan anomali penghapusan (deletion anomalies).

2. Tingkat Normalisasi (Normal Forms):

  1. First Normal Form (1NF):

    • Kondisi: Setiap kolom harus berisi nilai atomik (tidak boleh ada nilai yang dapat dibagi lagi). Baris-baris dalam tabel harus unik.
    • Contoh: Jika tabel "Mahasiswa" memiliki kolom "Mata Kuliah" yang menyimpan lebih dari satu mata kuliah dalam satu kolom, maka itu melanggar 1NF. Setiap mahasiswa seharusnya memiliki satu mata kuliah per baris.
  2. Second Normal Form (2NF):

    • Kondisi: Tabel sudah memenuhi 1NF dan setiap atribut non-primer harus sepenuhnya bergantung pada primary key, artinya tidak boleh ada ketergantungan parsial.
    • Contoh: Jika sebuah tabel "Pendaftaran Mata Kuliah" memiliki kolom "Nama Mahasiswa" dan "Mata Kuliah" dengan primary key (NIM, Kode Mata Kuliah), maka "Nama Mahasiswa" harus dipindahkan ke tabel terpisah yang bergantung hanya pada "NIM", bukan pada kombinasi "NIM" dan "Kode Mata Kuliah".
  3. Third Normal Form (3NF):

    • Kondisi: Tabel sudah memenuhi 2NF dan tidak ada ketergantungan transitif, yaitu jika atribut non-primer bergantung pada atribut non-primer lain.
    • Contoh: Dalam tabel "Mahasiswa" yang memiliki kolom "NIM", "Nama", dan "Kode Program Studi", jika kolom "Nama Program Studi" bergantung pada "Kode Program Studi", maka kolom "Nama Program Studi" harus dipindahkan ke tabel "Program Studi".
  4. Boyce-Codd Normal Form (BCNF):

    • Kondisi: Tabel memenuhi 3NF dan setiap determinan adalah kandidat key. Ini berarti bahwa setiap atribut yang menentukan atribut lainnya harus menjadi bagian dari kunci kandidat.
    • Contoh: Jika dalam tabel "Penyewaan Mobil", ada kolom "ID Penyewa" dan "Nomor Mobil", dan "Nomor Mobil" menentukan harga sewa, maka "Harga Sewa" harus dipindahkan ke tabel lain yang terpisah.
  5. Fourth Normal Form (4NF):

    • Kondisi: Tabel memenuhi BCNF dan tidak ada ketergantungan multivalued, yaitu ketika atribut yang independen dari satu sama lain tetapi keduanya bergantung pada kunci utama.
    • Contoh: Jika dalam tabel "Pendaftaran Mahasiswa", seorang mahasiswa dapat mengikuti lebih dari satu ekstrakurikuler dan juga memiliki lebih dari satu alamat, ini akan melanggar 4NF. Dalam hal ini, data harus dipisahkan ke dalam tabel yang berbeda untuk ekstrakurikuler dan alamat.

3. Contoh Penerapan Normalisasi pada ERD:

Misalkan kita memiliki entitas "Pendaftaran Mata Kuliah" dengan atribut:

  • NIM (Nomor Induk Mahasiswa)
  • Nama Mahasiswa
  • Mata Kuliah
  • Nama Mata Kuliah
  • Dosen

1NF:

  • Masalah: Tabel ini mengandung kolom "Mata Kuliah" yang bisa berisi lebih dari satu mata kuliah, melanggar prinsip atomicity.
  • Solusi: Pisahkan data sehingga setiap baris hanya berisi satu mata kuliah per mahasiswa.

2NF:

  • Masalah: "Nama Mahasiswa" bergantung hanya pada NIM, sementara "Nama Mata Kuliah" bergantung hanya pada Kode Mata Kuliah, tetapi keduanya ada dalam tabel yang sama.
  • Solusi: Pisahkan tabel "Mahasiswa" dan "Mata Kuliah" menjadi dua tabel yang lebih spesifik dan hubungkan mereka melalui tabel relasi seperti "Pendaftaran".

3NF:

  • Masalah: "Nama Dosen" bergantung pada "Mata Kuliah", sedangkan "Mata Kuliah" bergantung pada "Kode Mata Kuliah".
  • Solusi: Pisahkan "Nama Dosen" ke dalam tabel terpisah yang terhubung langsung dengan "Mata Kuliah".

4. Keuntungan dari Normalisasi:

  • Mengurangi redundansi dan inkonsistensi data.
  • Meningkatkan efisiensi penyimpanan dan query pada basis data.
  • Mempermudah pemeliharaan basis data dengan menghindari duplikasi data yang tidak perlu.

5. Kapan Tidak Melakukan Normalisasi?

Meskipun normalisasi memiliki banyak keuntungan, dalam beberapa kasus, seperti pada sistem yang sangat besar dengan banyak data atau pada sistem yang membutuhkan performa tinggi, denormalisasi (proses menggabungkan tabel) mungkin lebih disarankan untuk meningkatkan kecepatan query.

Komentar

Postingan populer dari blog ini

Apa itu relation pada ERD, Mengapa many-to-many tidak baik digunakan pada ERD