Proses normalisasi hingga bentuk normal ke-3 (3NF)

From OnnoWiki
Jump to navigation Jump to search

Tujuan Pembelajaran

Setelah mempelajari modul ini, mahasiswa mampu:

  • Menjelaskan proses normalisasi dari UNF hingga 3NF
  • Mengidentifikasi ketergantungan fungsional
  • Mengimplementasikan hasil normalisasi ke dalam MySQL

Apa Itu Normalisasi?

Normalisasi adalah proses sistematis dalam desain database untuk mengurangi duplikasi data (redundansi) dan menghindari anomali data (insert, update, delete). Normalisasi dilakukan dalam beberapa bentuk normal (normal forms), dari bentuk awal (UNF) hingga bentuk normal ketiga (3NF) atau lebih.

Studi Kasus: Data Awal (UNF)

Misalkan kita punya data mahasiswa dan mata kuliah sebagai berikut:

NIM Nama Prodi KodeMK NamaMK Dosen
101 Andi Informatika MK001 Basis Data Dr. Budi
101 Andi Informatika MK002 Algoritma Dr. Siti
102 Budi Informatika MK001 Basis Data Dr. Budi

> Masih dalam bentuk UNF: grup data berulang (multi-valued).


Proses Menuju 1NF (First Normal Form)

Aturan 1NF:

  • Setiap kolom harus memiliki nilai atomik (tidak berisi list atau grup)
  • Tidak ada data berulang

Hasil 1NF:

NIM Nama Prodi KodeMK NamaMK Dosen
101 Andi Informatika MK001 Basis Data Dr. Budi
101 Andi Informatika MK002 Algoritma Dr. Siti
102 Budi Informatika MK001 Basis Data Dr. Budi

> Sudah atomik, tetapi masih ada redundansi.


Menuju 2NF (Second Normal Form)

Aturan 2NF:

  • Sudah dalam 1NF
  • Semua atribut non-primer harus bergantung penuh pada kunci utama

Solusi: Pisahkan tabel berdasarkan ketergantungan:

  • Tabel Mahasiswa
  • Tabel Mata Kuliah
  • Tabel Relasi Mahasiswa-Matkul


Menuju 3NF (Third Normal Form)

Aturan 3NF:

  • Sudah dalam 2NF
  • Tidak ada ketergantungan transitif (atribut non-primer tergantung pada non-primer lainnya)

Solusi: Pisahkan entitas dosen menjadi tabel terpisah.


Implementasi MySQL (Ubuntu 24.04)

Berikut adalah skrip SQL berdasarkan hasil normalisasi hingga 3NF:

Tabel Mahasiswa

CREATE TABLE mahasiswa (
    nim VARCHAR(10) PRIMARY KEY,
    nama VARCHAR(100),
    prodi VARCHAR(100)
);

Tabel Dosen

CREATE TABLE dosen (
    id_dosen INT PRIMARY KEY,
    nama_dosen VARCHAR(100)
);

Tabel Mata Kuliah

CREATE TABLE mata_kuliah (
    kode_mk VARCHAR(10) PRIMARY KEY,
    nama_mk VARCHAR(100),
    id_dosen INT,
    FOREIGN KEY (id_dosen) REFERENCES dosen(id_dosen)
);

Tabel Pengambilan (relasi Mahasiswa * Matkul)

CREATE TABLE pengambilan (
    nim VARCHAR(10),
    kode_mk VARCHAR(10),
    semester VARCHAR(10),
    PRIMARY KEY (nim, kode_mk),
    FOREIGN KEY (nim) REFERENCES mahasiswa(nim),
    FOREIGN KEY (kode_mk) REFERENCES mata_kuliah(kode_mk)
);

Ringkasan Proses Normalisasi

Bentuk Normal Tujuan Aksi
UNF Data mentah Data masih berulang
1NF Atomisasi data Hilangkan kolom dengan data jamak
2NF Ketergantungan fungsional penuh Pisahkan data yang bergantung parsial terhadap key
3NF Hilangkan ketergantungan transitif Pisahkan atribut non-primer yang tergantung non-key


Pranala Menarik