Oke
dalam artikel pertama dalam blog ini akan membahas normalisasi
apa itu normalisasi?
normalisasi adalah salah satu bagian penting dari mata kuliah sistem basis data
nah untuk lebih jelasnya langsung saja kita ulas dalam penjelasan dibawah ini
SELAMAT MEMBACA :D
Normalisasi
adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
Tahap Normalisasi dimulai dari tahap paling ringan 1NF (First Normal Form) hingga paling ketat (5NF)
Biasanya hanya sampai pada tingkat 3NF atau BCNF karena ketika proses normalisasi pada tahap 3NF telah menghasilkan
tabel-tabel yang berkualitas sehingga tidak perlu lagi dilakukan proses normalisasi ke 4NF/5NF.
Normalisasi dilakukan untuk memperoleh :
- Optimalisasi struktur-struktur tabel
- Meningkatkan kecepatan
- Menghilangkan pemasukan data yang sama
- Lebih efisien dalam penggunaan media penyimpanan
- Mengurangi redundansi
- Menghindari anomali (insertion anomalies, deletion anomalies, update anomalies).
- Integritas data yang ditingkatkan
Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb:
Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman. Artinya,
setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru,
tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis.
Terpeliharanya ketergantungan fungsional pada saat perubahan data
Tidak melanggar Boyce-Code Normal Form (BCNF)
Jika syarat" diatas tidak terpenuhi, paling tidak tabel tersebut tidak melanggar bentuk normal ketiga (3NF).
Dalam melakukan normalisasi, mengetahui ketergantungan fungsional (Fungsional Dependent) sangat penting
seperti contoh kasus dibawah ini
Matakuliah | NIM | NamaMhs | NilaiHuruf |
SBDL | 2014420152 | Niko Hasda | A |
SBDL | 2014420123 | | |
RPL | 2014420152 | Niko Hasda | A |
RPL | 2014420111 | | |
RPL | 2014420112 | | |
Design web | 2014420152 | Niko Hasda | A |
Algo Lanjut | 2014420152 | Niko Hasda | A |
Algo Lanjut | 2014420114 | | |
Jarkom | 2014420152 | Niko Hasda | A |
Functional Dependency dari tabel nilai
- NIM bergantung pada NamaMhs
Karena untuk setiap nilai nim yang sama, maka nilai NamaMhs juga sama
- {Matakuliah, NIM} bergantung pada NilaiHuruf
Karena attribut NilaiHuruf tergantung pada Matakuliah dan NIM secara bersama-sama. Dalam arti lain untuk Matakuliah dan NIM yang sama, maka NilaiHuruf juga sama, karena Matakuliah dan NIM merupakan key (bersifat unik).
- Matakuliah tidak bergantung NIM
NIM tidak bergantung NilaiHuruf
Ketika kita sudah mengetahui ketergantungan fungsional dari sebuah tabel maka akan mempermudah
untuk melakukan normalisasi dalam sebuah tabel.
LANGKAH - LANGKAH NORMALISASI
1NF :
dalam tahap ini tidak diperbolehkan adanya :
-Atribut yang bernilai banyak (Multivalued attribut).
-Attribut komposit atau kombinasi dari keduanya.
Contoh :
maka tabel di atas akan di dekomposisikan menjadi dua tabel :
-tabel mahasiswa
- tabel hobi
2NF :
Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1NF,
dan semua atribut selain primary key, secara utuh memiliki Functional Dependency pada primary key
Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya (Functional Dependency)
hanya bersifat parsial saja (hanya tergantung pada sebagian dari primary key)
Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key,
maka atribut tersebut harus dipindah atau dihilangkan
Contoh :
tabel di atas
Tidak memenuhi 2NF, karena {NIM, KodeMk} yang dianggap sebagai primary key sedangkan:
{NIM, KodeMk} à NamaMhs
{NIM, KodeMk} à Alamat
{NIM, KodeMk} à Matakuliah
{NIM, KodeMk} à Sks
{NIM, KodeMk} à NilaiHuruf
Tabel tersebut perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF seperti berikut:
Functional dependencynya sbb:
n{NIM, KodeMk} à NilaiHuruf (fd1)
nNIM à {NamaMhs, Alamat} (fd2)
nKodeMk à {Matakuliah, Sks} (fd3)
Sehingga :
nfd1 (NIM, KodeMk, NilaiHuruf) à Tabel Nilai
nfd2 (NIM, NamaMhs, Alamat) à Tabel Mahasiswa
nfd3 (KodeMk, Matakuliah, Sks) à Tabel MataKuliah
3NF :
Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF,
dan jika tidak ada atribut non primary key yang memiliki ketergantungan
terhadap atribut non primary key yang lainnya (ketergantungan transitif).
Contoh :
Tabel mahasis berikut ini memenuhi syarat 2NF, tetapi tidak memenuhi 3NF
Karena masih terdapat atribut
non primary key (yakni Kota dan Provinsi) yang memiliki ketergantungan terhadap atribut
non primary key yang lain (yakni KodePos) :
KodePos à {Kota, Provinsi}
Sehingga tabel tersebut perlu didekomposisi menjadi :
nMahasiswa (NIM, NamaMhs, Jalan, KodePos)
nKodePos (KodePos, Provinsi, Kota)
Sekian Dalam Ulasan materi kali ini semoga artikel ini dapat membantu dan bermanfaat bagi blogger sekalian. sampai jumpa lagi di ulasan ulasan berikutnya Salam "NHP"