b belajar.myudak

Normalisasi — 1NF, 2NF, 3NF, BCNF

Kenapa tabel "satu untuk semua" bermasalah, functional dependency, dan langkah normalisasi dengan contoh KRS.

menengah #normalisasi#functional dependency#desain basis data

SlideNormalizationNORMALIZATION Advanced

Latihan UTS & UAS ↓

Normalisasi adalah proses memecah tabel supaya setiap fakta disimpan di satu tempat saja. Tujuannya menghilangkan redundansi dan anomali saat data diubah.

Masalahnya: satu tabel besar

Misalkan semua data KRS disimpan di satu tabel:

nimnamadosen_walikode_mknama_mksksnilai
001AyuPak BudiMK302Struktur Data4A
001AyuPak BudiMK303Basis Data4AB
002BimaBu SariMK302Struktur Data4B

Tiga jenis anomali muncul:

  • Update anomaly: nama matkul “Struktur Data” tersimpan berkali-kali. Ganti di satu baris, lupa yang lain, data jadi tidak konsisten.
  • Insert anomaly: matkul baru tidak bisa dicatat sebelum ada mahasiswa yang mengambilnya (kolom kunci nim kosong).
  • Delete anomaly: kalau Bima satu-satunya mahasiswa Bu Sari dan barisnya dihapus, info bahwa Bu Sari dosen wali ikut hilang.

Functional dependency (FD)

X→YX \to Y dibaca “X menentukan Y”: jika dua baris punya nilai X sama, nilai Y pasti sama. Dari tabel di atas:

  • nim → nama, dosen_wali
  • kode_mk → nama_mk, sks
  • {nim, kode_mk} → nilai

Candidate key tabel ini adalah {nim, kode_mk}, himpunan atribut minimal yang menentukan semua atribut lain.

Bentuk normal

1NF: setiap sel berisi satu nilai atomik; tidak ada kolom berulang atau list dalam sel (misalnya matkul = "MK302, MK303").

2NF: sudah 1NF, dan tidak ada partial dependency: atribut non-kunci harus bergantung pada seluruh candidate key, bukan sebagian. nama hanya bergantung pada nim (sebagian dari kunci), jadi harus dipisah.

3NF: sudah 2NF, dan tidak ada transitive dependency: atribut non-kunci tidak boleh bergantung pada atribut non-kunci lain. Contoh: jika dosen_wali → no_hp_dosen, maka nim → dosen_wali → no_hp_dosen adalah transitif.

BCNF: untuk setiap FD non-trivial X→YX \to Y, XX harus superkey. Lebih ketat dari 3NF; bedanya baru terasa jika ada beberapa candidate key yang saling tumpang tindih.

Hasil dekomposisi

Memuat diagram…
Setelah normalisasi: setiap fakta tersimpan satu kali.

Dekomposisi yang baik harus lossless (tabel asli bisa direkonstruksi persis lewat JOIN) dan sebaiknya dependency preserving (semua FD masih bisa dicek tanpa JOIN). Coba lakukan JOIN-nya di catatan SQL dasar.

Flashcard0/5 dikuasai

Telusuri satu pemisahan tabel

Bayangkan tabel KRS dengan kunci (NIM, kodeMK) dan atribut namaMK. Setiap kodeMK memiliki tepat satu namaMK.

Dekomposisi tabel KRS
JOINNIMkodeMKKRS gabungannamaMK berulangMataKuliahKRS
1/3Temukan penentu. Nama mata kuliah dapat ditemukan dari kodeMK saja, tanpa NIM.kodeMK → namaMK · kunci awal = (NIM, kodeMK)
Cek pemahaman
  1. 1. Tabel R(nim, kode_mk, nama_mk, nilai) dengan kunci {nim, kode_mk} dan FD kode_mk → nama_mk. Paling tinggi R ada di bentuk normal…

  2. 2. Kolom "hobi" berisi "futsal, catur, musik". Ini melanggar…

Latihan UTS & UAS