A. Definisi Normalisasi
Normalisasi adalah serangkaian aturan dan teknik dalam perancangan basis data relasional yang bertujuan untuk menghasilkan struktur tabel yang efisien, terukur, dan mudah dikelola. Proses ini membantu memecah satu tabel besar yang memuat banyak data menjadi beberapa tabel yang lebih kecil dan saling terhubung melalui kunci. Dengan demikian, normalisasi mengurangi pengulangan data (redundansi), meminimalkan potensi kesalahan, dan mempertahankan integritas informasi.Kadir (2009) mendefinisikan normalisasi sebagai proses pengelompokan atribut ke dalam tabel sehingga:
∙ Redundansi data diminimalkan: setiap fakta disimpan hanya sekali. ∙ Operasi manipulasi aman: penambahan, perubahan, atau penghapusan tidak menimbulkan inkonsistensi data.
Normalisasi bukan sekadar membagi tabel, melainkan menerapkan standar keberfungsian (dependensi) antar atribut untuk mencapai struktur data yang optimal.
B. Anomali Data
Anomali data merujuk pada ketidakkonsistenan atau kesalahan yang terjadi saat seseorang menangani data yang tersimpan. Anomali ini dapat membahayakan integritas data dan menyebabkan ketidakakuratan yang mana dapat tidak mencerminkan apa yang seharusnya direpresentasikan oleh data tersebut. Dalam database, anomali biasanya terjadi karena redundansi atau konstruksi tabel yang buruk. Anomali dapat berdampak signifikan terhadap konsistensi dan integritas data. Oleh karena itu, mengidentifikasi dan menangani anomali data merupakan langkah penting dalam setiap proses berbasis data. Ketiga bentuk anomali utama adalah:1. Anomali Penyisipan (Insert Anomaly)
∙ Terjadi saat menambahkan baris baru gagal atau menimbulkan duplikasi.∙ Contoh (tabel barang_pemasok): Jika ingin menambahkan pemasok baru ‘PT. Santosa’ (P55) tanpa ada barang yang dipasok, kita tidak dapat menyisipkan baris karena kolom kode_barang wajib diisi.
Akibatnya, data pemasok terlambat tercatat hingga ada barangnya.
2. Anomali Pengubahan (Update Anomaly)
∙ Terjadi saat mengubah nilai di satu baris tidak diikuti perubahan di baris lain, menimbulkan inkonsistensi.∙ Contoh: Pemasok P22 (PT. Citra Jaya) berpindah kota dari Bogor ke Bekasi. Jika hanya baris pertama diubah, baris kedua tetap mencantumkan ‘Bogor’, sehingga data lokasi tidak seragam.
3. Anomali Penghapusan (Delete Anomaly)
∙ Terjadi saat menghapus baris menyebabkan hilangnya informasi penting selain baris itu sendiri.
∙ Contoh: Menghapus barang dengan kode_barang = T-003 pada tabel barang_pemasok juga menghilangkan informasi bahwa ‘PT.Amerta’ (P11) ada sebagai pemasok, padahal pemasok tersebut
mungkin masih aktif memasok barang lain.
C. Tujuan dan Manfaat Normalisasi
Normalisasi memiliki beberapa tujuan utama, antara lain:1. Menghilangkan Redundansi :
Data yang tersimpan secara berulang pada banyak tempat dapat menyebabkan pemborosan ruang penyimpanan dan ketidakkonsistenan. Normalisasi menjamin bahwa suatu informasi hanya disimpan sekali dalam struktur tabel yang tepat
2. Mengurangi Anomali:
Anomali dalam basis data (insert, update, delete anomaly) dapat menyebabkan terjadinya perubahan data yang tidak konsisten. Dengan struktur data yang optimal, setiap operasi modifikasi data (insert, update, delete) tidak akan menimbulkan masalah.
3. Meminimalkan Kompleksitas:
Struktur data yang dinormalisasi memudahkan pemeliharaan dan pengelolaan basis data. Setiap perubahan hanya perlu dilakukan pada satu tempat dan hubungan antar tabel diatur melalui kunci primer (primary key) dan kunci tamu (foreign key).
4. Memudahkan Pengambilan Data dan Pemrosesan:
Data yang telah dinormalisasi lebih mudah di-query karena setiap tabel hanya mengandung informasi yang relevan sesuai dengan keterkaitannya.
5. Memaksimalkan Stabilitas Struktur Data:
Dengan mengelompokkan atribut yang memiliki ketergantungan tinggi, basis data menjadi lebih stabil terhadap perubahan struktur atau penambahan data.
D. Atribut dan Dependensi: Fondasi untuk Normalisasi Database
1. Jenis Atribut
Atribut adalah nama kolom dalam tabel yang mendeskripsikan karakteristik data. Berikut jenis-jenis atribut sesuai modul Basis Data 1 (Pertemuan 4):1) Atribut Kunci (Key) dan Atribut Deskriptif
∙ Atribut Kunci: Satu atau gabungan atribut yang mengidentifikasi setiap baris secara unik. Contoh: NIM pada tabel Mahasiswa.
Ada beberapa macam key yang dapat diterapkan pada suatu tabel, yaitu:
a. Primary Key (Kunci Utama): Atribut atau kombinasi atribut yang secara unik mengidentifikasi setiap baris dalam tabel.
Contohnya adalah NIM dalam tabel MAHASISWA.
b. Foreign Key (Kunci Asing): Atribut dalam tabel yang merujuk ke kunci utama tabel lain, menghubungkan dua tabel dan memastikan integritas referensial.
c. Super Key (Kunci Super): Himpunan atribut yang memungkinkan identifikasi unik setiap baris dalam tabel, yang dapat mencakup lebih banyak atribut daripada kunci utama.
d. Candidate Key (Kunci Kandidat): Atribut atau kombinasi atribut yang memenuhi syarat kunci utama tetapi belum tentu dipilih sebagai kunci utama.
∙Atribut Deskriptif: Atribut non-key yang memberikan informasi tambahan. Contoh: Nama, TanggalLahir.
2) Atribut Sederhana (Simple) dan Atribut Komposit (Composite) ∙ Simple: Tidak dapat dipecah lagi, misal nim.
∙ Komposit: Terdiri dari sub-atribut, misal alamat_mhs dapat diuraikan menjadi jalan, kota, kode_pos.
3) Atribut Bernilai Tunggal (Single-Valued) dan Atribut Bernilai Banyak (Multivalued)
∙ Single-Valued: Hanya satu nilai per baris, misal tanggal_lahir. ∙ Multivalued: Bisa memiliki lebih dari satu nilai, misal hobby.
4) Mandatory Attribute dan Nilai Null
∙ Mandatory: Wajib berisi nilai, misal NIM.
∙ Nullable: Boleh kosong (NULL), misal nomor_telepon jika tidak wajib.
5) Atribut Turunan (Derived)
∙ Nilainya diturunkan dari atribut lain, misal ipk dapat dihitung dari tabel Nilai dan SKS.
a. Dependensi Fungsional
Atribut X menentukan Y (X → Y).
Contoh: kode_barang → nama_barang.
b. Dependensi Fungsional Sepenuhnya
Atribut non-kunci bergantung pada keseluruhan kunci komposit, bukan hanya sebagian. Contoh: Dalam tabel dosen_pendidikan, tahun_lulus bergantung pada kombinasi {no_dosen, pendidikan} secara penuh.
c. Dependensi Parsial
Atribut non-kunci tergantung hanya pada sebagian kunci komposit.
Contoh: jenis_kelamin bergantung pada no_dosen saja, bukan pada seluruh {no_dosen, pendidikan}.
d. Dependensi Total
Dua atribut saling menentukan satu sama lain (X ↔ Y).
Contoh: kode_pemasok ↔ nama_pemasok di tabel pemasok.
e. Dependensi Transitif
Jika X → Y dan Y → Z, maka X → Z secara transitif.
Contoh: kode_barang → kode_pemasok → nama_pemasok.
Adapun urutan dari tahap normalisasi adalah :
∙ First Normal Form (1NF)
∙ Second Normal Form (2NF)
∙ Third Normal Form (3NF)
∙ Boyce-Codd Normal Form (BCNF)
∙ Fourth Normal Form (4NF)
∙ Fifth Normal Form (5NF)
Berikut adalah langkah-langkah normalisasi dari 1NF hingga 5NF (termasuk BCNF)
Data Awal (Belum Dinormalisasi)
Tabel: Pembelian
ID_Pembelian Nama_Pelanggan Produk Jumlah
1 Ani Sabun, Sikat Gigi 2, 1
2 Budi Pasta Gigi 1
Masih ada data multivalue di kolom "Produk" dan "Jumlah".
1NF (First Normal Form)
Aturan: Data harus atomik (tidak ada data yang mengandung lebih dari satu nilai dalam satu sel).
Hasil 1NF:
ID_Pembelian Nama_Pelanggan Produk Jumlah
1 Ani Sabun 2
1 Ani Sikat Gigi 1
2 Budi Pasta Gigi 1
2NF (Second Normal Form)
Aturan: Harus sudah 1NF dan tidak boleh ada ketergantungan parsial terhadap sebagian kunci utama (jika pakai kunci gabungan).
Misalnya:
Kunci gabungan = (ID_Pembelian, Produk)
"Nama_Pelanggan" hanya tergantung pada ID_Pembelian.
Hasil 2NF:
Pisah jadi dua tabel:
Tabel Pembelian:
ID_Pembelian Nama_Pelanggan
1 Ani
2 Budi
2) Atribut Sederhana (Simple) dan Atribut Komposit (Composite) ∙ Simple: Tidak dapat dipecah lagi, misal nim.
∙ Komposit: Terdiri dari sub-atribut, misal alamat_mhs dapat diuraikan menjadi jalan, kota, kode_pos.
3) Atribut Bernilai Tunggal (Single-Valued) dan Atribut Bernilai Banyak (Multivalued)
∙ Single-Valued: Hanya satu nilai per baris, misal tanggal_lahir. ∙ Multivalued: Bisa memiliki lebih dari satu nilai, misal hobby.
4) Mandatory Attribute dan Nilai Null
∙ Mandatory: Wajib berisi nilai, misal NIM.
∙ Nullable: Boleh kosong (NULL), misal nomor_telepon jika tidak wajib.
5) Atribut Turunan (Derived)
∙ Nilainya diturunkan dari atribut lain, misal ipk dapat dihitung dari tabel Nilai dan SKS.
2. Jenis-jenis depedensi
Dependensi dalam sistem manajemen database menjelaskan bagaimana atribut dalam suatu tabel saling berhubungan dan bergantung satu sama lain. Jenis-jenis dependensi meliputi:a. Dependensi Fungsional
Atribut X menentukan Y (X → Y).
Contoh: kode_barang → nama_barang.
b. Dependensi Fungsional Sepenuhnya
Atribut non-kunci bergantung pada keseluruhan kunci komposit, bukan hanya sebagian. Contoh: Dalam tabel dosen_pendidikan, tahun_lulus bergantung pada kombinasi {no_dosen, pendidikan} secara penuh.
c. Dependensi Parsial
Atribut non-kunci tergantung hanya pada sebagian kunci komposit.
Contoh: jenis_kelamin bergantung pada no_dosen saja, bukan pada seluruh {no_dosen, pendidikan}.
d. Dependensi Total
Dua atribut saling menentukan satu sama lain (X ↔ Y).
Contoh: kode_pemasok ↔ nama_pemasok di tabel pemasok.
e. Dependensi Transitif
Jika X → Y dan Y → Z, maka X → Z secara transitif.
Contoh: kode_barang → kode_pemasok → nama_pemasok.
E. Urutan Normalisasi
Normalisasi adalah proses sistematis untuk mengorganisasi data dalam database agar lebih efisien dan bebas dari anomali. Proses ini dilakukan secara bertahap melalui beberapa bentuk normal (normal forms). Setiap bentuk normal memiliki aturan tertentu dan harus dipenuhi sebelum melangkah ke bentuk selanjutnya.Adapun urutan dari tahap normalisasi adalah :
∙ First Normal Form (1NF)
∙ Second Normal Form (2NF)
∙ Third Normal Form (3NF)
∙ Boyce-Codd Normal Form (BCNF)
∙ Fourth Normal Form (4NF)
∙ Fifth Normal Form (5NF)
Berikut adalah langkah-langkah normalisasi dari 1NF hingga 5NF (termasuk BCNF)
Data Awal (Belum Dinormalisasi)
Tabel: Pembelian
ID_Pembelian Nama_Pelanggan Produk Jumlah
1 Ani Sabun, Sikat Gigi 2, 1
2 Budi Pasta Gigi 1
Masih ada data multivalue di kolom "Produk" dan "Jumlah".
1NF (First Normal Form)
Aturan: Data harus atomik (tidak ada data yang mengandung lebih dari satu nilai dalam satu sel).
Hasil 1NF:
ID_Pembelian Nama_Pelanggan Produk Jumlah
1 Ani Sabun 2
1 Ani Sikat Gigi 1
2 Budi Pasta Gigi 1
2NF (Second Normal Form)
Aturan: Harus sudah 1NF dan tidak boleh ada ketergantungan parsial terhadap sebagian kunci utama (jika pakai kunci gabungan).
Misalnya:
Kunci gabungan = (ID_Pembelian, Produk)
"Nama_Pelanggan" hanya tergantung pada ID_Pembelian.
Hasil 2NF:
Pisah jadi dua tabel:
Tabel Pembelian:
ID_Pembelian Nama_Pelanggan
1 Ani
2 Budi
Tabel Detail_Pembelian:
ID_Pembelian Produk Jumlah
1 Sabun 2
1 Sikat Gigi 1
2 Pasta Gigi 1
3NF (Third Normal Form)
Aturan: Sudah 2NF dan tidak boleh ada ketergantungan transitif (atribut tergantung pada non-prime key).
Misalnya: kalau “Nama_Pelanggan” menyimpan data seperti alamat, dan alamat bisa dipindah ke tabel tersendiri.
Tapi dalam contoh ini, tidak ada ketergantungan transitif, jadi sudah 3NF.
BCNF (Boyce-Codd Normal Form)
Aturan: Sudah 3NF, dan setiap determinan adalah kunci kandidat.
Misalnya, jika ada kasus seperti:
NIK Nama No_HP
123 Ani 08123
123 Ani 08124
Jika No_HP → Nama, tapi No_HP bukan kunci utama → bentuk ini tidak memenuhi BCNF.
Dalam contoh kita tadi, tidak ada pelanggaran BCNF, jadi sudah BCNF.
4NF (Fourth Normal Form)
Aturan: Tidak boleh ada multi-valued dependency (ketergantungan multi nilai).
Misalnya: 1 orang bisa punya lebih dari 1 hobi dan juga lebih dari 1 nomor HP.
Kalau kita simpan dalam satu tabel, bisa terjadi kombinasi berlebih.
Dalam contoh kita, tidak ada multi-valued dependency, jadi sudah 4NF.
Dalam contoh kita tadi, tidak ada pelanggaran BCNF, jadi sudah BCNF.
4NF (Fourth Normal Form)
Aturan: Tidak boleh ada multi-valued dependency (ketergantungan multi nilai).
Misalnya: 1 orang bisa punya lebih dari 1 hobi dan juga lebih dari 1 nomor HP.
Kalau kita simpan dalam satu tabel, bisa terjadi kombinasi berlebih.
Dalam contoh kita, tidak ada multi-valued dependency, jadi sudah 4NF.
5NF (Fifth Normal Form)
Aturan: Tidak boleh ada join dependency yang tidak bisa dipecah tanpa kehilangan data.
Biasanya jarang terjadi pada data sederhana. Biasanya terjadi jika tabel bisa dipecah menjadi beberapa tabel kecil dan harus bisa disatukan kembali tanpa kehilangan informasi.
Contoh ini tidak butuh sampai 5NF, tapi sudah cukup baik dengan BCNF atau 4NF.
Aturan: Tidak boleh ada join dependency yang tidak bisa dipecah tanpa kehilangan data.
Biasanya jarang terjadi pada data sederhana. Biasanya terjadi jika tabel bisa dipecah menjadi beberapa tabel kecil dan harus bisa disatukan kembali tanpa kehilangan informasi.
Contoh ini tidak butuh sampai 5NF, tapi sudah cukup baik dengan BCNF atau 4NF.
Tidak ada komentar:
Posting Komentar