Dalam membuat basis data, kita pasti ingin basis data yang kita punya tidak ruwet dan mudah dalam memodifikasi data. Sehingga kita sebagai database administrator menjadi lebih mudah dalam mengelola basis data tersebut. Untuk mencapai hal tersebut maka kita perlu untuk mempelajari yang namanya Dependensi dan Normalisasi dalam Basis Data.
Ada empat macam dependensi, yaitu:
Normalisasi merupakan suatu proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali, dan mengacu pada cara data item dikelompokkan ke dalam struktur record. Normalisasi juga merupakan proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
Banyak dari kita pasti berpikir, kenapa harus dilakukan normalisasi? Berikut adalah alasannya.
Dependensi
Ada empat macam dependensi, yaitu:
- Dependensi Fungsional
- Dependensi Fungsional Penuh
- Dependensi Fungsional Parsial
- Dependensi Fungsional Transitif
Dependensi Fungsional
Dependensi fungsional menggambarkan relasi / hubungan, batasan, dan keterkaitan antara atribut-atribut dalam suatu relasi. Suatu atribut dikatakan bergantung pada atribut lain secara fungsional jika kita menggunakan harga atribut yang lain.
Notasi dependensi fungsional yaitu A ⇒ B (A secara fungsional menentukan B)
Artinya bahwa A secara fungsional menentukan B atau B bergantung pada A. Jika ada dua baris data dengan nilai A yang sama, maka nilai B juga sama.
Contoh:
Berikut adalah dependensi yang ada dalam tabel nilai:
Notasi dependensi fungsional yaitu A ⇒ B (A secara fungsional menentukan B)
Artinya bahwa A secara fungsional menentukan B atau B bergantung pada A. Jika ada dua baris data dengan nilai A yang sama, maka nilai B juga sama.
Atribut B bergantung pada atribut A |
Contoh:
Tabel Nilai |
Berikut adalah dependensi yang ada dalam tabel nilai:
- NIM ⇒ NamaMhs Karena untuk setiap nilai NIM yang sama, maka NamaMhs juga sama
- {MataKuliah,NIM} ⇒ NilaiHuruf Karena atribut NilaiHuruf tergantung pada MataKuliah dan NIM secara bersama-sama. Dalam arti lain MataKuliah dan NIM yang sama, maka NilaiHuruf juga sama, karena MataKuliah dan NIM merupakan key (bersifat unik).
Dependensi Penuh
Dependensi penuh menunjukkan jika terdapat atribut A dan B dalam suatu relasi, dimana:
{NIM, Nama} ⇒ idRuang bukan Dependensi Penuh jika nama dihilangkan, maka NIM ⇒ idRuang bisa menjadi Dependensi Penuh.
- B memiliki dependensi fungsional secara penuh pada A
- B bukan memiliki dependensi terhadap subset A
{NIM, Nama} ⇒ idRuang bukan Dependensi Penuh jika nama dihilangkan, maka NIM ⇒ idRuang bisa menjadi Dependensi Penuh.
Dependensi Parsial
Dependensi Parsial merupakan ketergantungan fungsional dimana beberapa atribut dapat dihilangkan dari A dengan ketergantungan tetap dipertahankan.
{NIM, Nama} ⇒ idRuang dimana jika nama dihilangkan maka ketergantungan tetap ada
- B memiliki dependensi terhadap subset A
{NIM, Nama} ⇒ idRuang dimana jika nama dihilangkan maka ketergantungan tetap ada
Dependensi Transitif
Transitif Dependensi adalah kondisi dimana A, B, C merupakan atribut sebuah relasi dimana A ⇒ B dan B ⇒ C.
- Maka C dikatakan dependensi transitif terhadap A melalui B.
- NIP ⇒ {Nama, Jabatan, Gaji, kdCabang, almCabang}
- kdCabang ⇒ almCabang
Normalisasi
Normalisasi merupakan suatu proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali, dan mengacu pada cara data item dikelompokkan ke dalam struktur record. Normalisasi juga merupakan proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
Banyak dari kita pasti berpikir, kenapa harus dilakukan normalisasi? Berikut adalah alasannya.
- Optimalisasi struktur-struktur tabel
- Meningkatkan kecepatan akses
- Menghilangkan pemasukan data yang sama
- Mengurangi redundansi
- Lebih efisien dalam penggunaan media penyimpanan
- Menghindari anomali
- Integritas data meningkat
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Boyce-codd Normal Form (BCNF)
- Four Normal Form (4NF)
- Five Normal Form (5NF)
Langkah-Langkah Normalisasi
Langkah-langkah normalisasi data |
1NF - Bentuk Normal Pertama
Pada bentuk normal pertama, setiap perpotongan baris dan kolom hanya memiliki satu nilai. Bentuk normal pertama juga tidak memperkenankan adanya atribut bernilai banyak dan atribut komposit.
Contoh:
Contoh:
Bentuk Tidak Normal (UNF) |
Bentuk Normal Pertama (1NF) |
2NF - Bentuk Normal Kedua
Bentuk normal 2NF terpenuhi jika sudah memenuhi bentuk normal 1NF dan semua atribut selain primary key secara utuh memiliki dependensi feungsional terhadap primary key. Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya hanya bersifat parsial saja. Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.
Contoh:
Contoh:
Bentuk Normal 1NF |
{No_peg, No_klien} ⇒ {Nama_peg, Nama_klien}
Bentuk Normal 2NF |
3NF - Bentuk Normal Ketiga
Bentuk normal ketiga akan terpenuhi jika sudah memenuhi bentuk 2NF dan tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lain (ketergantungan transitif).
Contoh:
Contoh:
Tabel Mahasiswa (2NF) |
NIM ⇒ {NamaMhs, Jalan, Kota, Provinsi, KodePos}
KodePos ⇒ {Kota, Provinsi}
NIM ⇒ {NamaMhs, Jalan, KodePos}
KodePos ⇒ {Provinsi, Kota}
KodePos ⇒ {Kota, Provinsi}
Diubah menjadi:
NIM ⇒ {NamaMhs, Jalan, KodePos}
KodePos ⇒ {Provinsi, Kota}
Tabel KodePos | Tabel Mahasiswa | |
BCNF - Boyce-Codd Normal Form
Bentuk BCNF dapat terpenuhi apabila setiap dependensi fungsional A ⇒ B memiliki kondisi bahwa A merupakan superkey dari tabel bersangkutan. Tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga B menjadi super key dari tabel-tabel hasil dekomposisi.
Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency A ⇒ B, BCNF tidak membolehkan B sebagai bagian dari primary key.
Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency A ⇒ B, BCNF tidak membolehkan B sebagai bagian dari primary key.
4NF - Bentuk Normal Keempat
Bentuk normal 4NF terpenuhi dalam sebuah tabel jika tabel tersebut telah memenuhi bentuk
BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute. Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies.
Contoh:
Contoh:
Tabel yang belum memenuhi 4NF |
Setiap employee dapat bekerja di lebih dari project dan dapat memiliki lebih dari satu skill. Untuk kasus seperti ini tabel tersebut harus di-dekomposisi menjadi:
- (Employee, Project)
- (Employee, Skill)
Tabel (Employee, Project) | Tabel (Employee, Skill) | |
5NF - Bentuk Normal Kelima
Bentuk normal 5NF terpenuhi jika dia tidak dapat mempunyai dekomposisi lossless menjadi sejumlah tabel lebih kecil. Empat bentuk normal pertama berdasarkan pada konsep ketergantungan fungsional, sedangkan bentuk normal kelima berdasarkan pada konsep ketergantungan gabungan (join dependence). Ketergantungan gabungan berarti bahwa sebuah tabel, setelah didekomposisi menjadi tiga atau lebih tabel yang lebih kecil, harus dapat digabungkan kembali untuk membentuk tabel asal. Dengan kata lain, 5NF menunjukkan ketika sebuah tabel tidak dapat didekomposisi lagi
Kritik dan saran aja,
ReplyDeleteMaterinya sudah bagus, sangat membantu,
Tapi alangkah baiknya jika text pd web bisa di copy, krna ini disimpan di blog, yang semua orang ga bisa simpan filenya, kecuali save hal page nya..
Sehingga semua orang bisa menyimpan copy - an materinya . Terimakasih
Penjelasan bagian functional dependency kurang dapat dipahami. Penerangan dengan contoh tidak sesuai seperti A berhubungan dengan C melalui B sedangkan dicontoh menggunakan kalimat lain tanpa refer ke ABC itu.
ReplyDeleteKesimpulannya pun cuma berupa keterangan bukan penjelasan kembali.
Bagian Normalisasi lebih baik contoh dari 1 entitas tetap yang bisa mencapai tahap 5 NF ato minimal 3 NF
Bagusnya. ini di indonesia in jadi lebih mudah dimengerti
mantab
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteSaya ingin bertanya, apa yang harus dilakukan jika tahap normalisasi paling akhir sudah dilakukan, namun masih belum normal?
ReplyDeletesebelumnya terimakasih