NORMALISASI PADA DATABASE DAN CONTOHNYA
Normalisasi bisa juga disebut Well Structure Relation atau proses pengelompokan atribut-atribu dari suatu relasi. Ada beberapa bentuk dalam normalisasi, yaitu Unnormalized Form, First Normal Form (1NF), Second Normal Form (2NF), Third Normal Form (3NF) dan Boyce-Codd Normal Form (BNF
Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam tabel-tabel untuk memenuhi kebutuhan pemakai di dalam suatu organisasi.
Tujuan dari normalisasi
- Untuk menghilangkan kerangkapan data
- Untuk mengurangi kompleksitas
- Untuk mempermudah pemodifikasian data
Proses Normalisasi
- Data diuraikan dalam bentuk tabel, selanjutnya dianalisis
- berdasarkan persyaratan tertentu ke beberapa tingkat.
Apabila tabel yang diuji belum memenuhi persyaratan tertentu,
maka tabel tersebut perlu dipecah menjadi beberapa tabel yang
lebih sederhana sampai memenuhi bentuk yang optimal.
Tahapan Normalisasi/langkah-langkah normalisasi
Untuk mendapatkan hasil yang paling normal, maka proses normalisasi dimulai dari normal pertama. Field-field tabel di atas yang merupakan group berulang : Employee number, Employee name, Rate category, Hourly rate.
- Normalisasi Pertama :
Solusinya hilangkan duplikasi dengan mencari ketergantungan parsial; menjadikan field-field menjadi tergantung pada satu atau beberapa field, bukan seluruhnya. Karena yang dapat dijadikan kunci adalah Project Number dan Employee Number, maka langkah kemudian dicari field-field mana yang tergantung pada Project Number dan mana yang tergantung pada Employee Number
Keterangan : nama field yang dicetak miring dan tebal menunjukkan primary key. Ada beberapa keanehan dalam data pada tabel di atas. Adanya kesalahan penulisan data pada kolom “project name” record ketiga. Kemungkinan kesalahan penulisan data semakin bertambah seiring bertambahnya record.
- Normalisasi Kedua :
Field-field yang tergantung pada satu field haruslah dipisah dengan tepat, misalnya Project Number menjelaskan Project Name dan Employee Number menjelaskan Employee Name, Rate Category dan Hourly Rate.
Untuk membuat hubungan antara dua tabel, dibuat suatu tabel yang berisi key-key dari tabel yang lain.
- Normalisasi Ketiga :
Pada tabel diatas masih terdapat masalah, bahwa Employee Number 17 mendapatkan hourly rate yang tidak sesuai dengan rate category nya. Solusinya adalah mencari hubungan transitif (transitive relation) dimana field non-key tergantung pada field non-key lainnya. Artinya harus memisahkan field non-kunci Rate Category yang tadinya tergantung secara parsial kepada field kunci Employee Number, untuk menghilangkan anomali penulisan data pada field hourly rate.
Bentuk Normal Pertama (1NF)
- Sebuah model data dikatakan memenuhi bentuk normal pertama apabila setiap atribut yangdimilikinya memiliki satu dan hanya satu nilai. Apabila ada atribut yang memiliki nilai lebih
dari satu, atribut tersebut adalah kandidat untuk menjadi entitas tersendiri.
Bentuk Normal Kedua (2NF)
- Sebuah model data dikatakan memenuhi bentuk normal kedua apabila ia memenuhi bentuknormal pertama dan setiap atribut non-identifier sebuah entitas bergantung sepenuhnya hanya pada semua identifier entitas tersebut.
Bentuk Normal Ketiga (3NF)
- Sebuah model data dikatakan memenuhi bentuk normal ketiga apabila ia memenuhi bentuknormal kedua dan tidak ada satupun atribut non-identifying (bukan pengidentifikasi unik) yang
bergantung pada atribut non-identifying lain. Apabila ada, pisahkan salah satu atribut tersebut
menjadi entitas baru, dan atribut yang bergantung padanya menjadi atribut entitas baru tersebut.
contoh bentuk-bentuk normalisasi pada suatu tabel.
Betuk Unnormalized Form
- Value pada kolom Kode_Matkul lebih dari 1, itulah mengapa masih disebut Unnormalized.
Bentuk First Normal Form (1NF)
- Value pada masing-masing kolom hanya ada Satu
Bentuk Second Normal Form (2NF)
Memiliki ketergantungan fungsional
Tabel 1
Tabel 2
Tabel 3
Pada bentuk 1NF, masih terdapat ketidaktergantungan terhadap beberapa kolom (misal TTL tidak bergantung pada kode_matkul), sehingga tabel dipecah menjadi 3 bagian agar tabel-tabel tersebut dapat memiliki ketergantungan terhadapat kolom-kolomnya (misal NIM bergantung pada nama_mhs dan ttl).
Bentuk Third Normal Form (3NF)
Tabel 1 dan 2 sudah memenuhi criteria bantuk 3NF, namun tidak untuk tabel 3, karena bila kita ingin merubah value bobot dari nilai, maka kita akan melakukan perubahan pada banyak record/baris yang lainnya. Sehingga pada bentuk 3NF, tabel 3 dapat dipecah lagi menjadi 2 tabel agar memenuhi kriteria bentuk 3NF.
Tabel 3a
Tabel 3b
Bentuk Boyce-Codd Normal Form (BNF)
Dalam kasus ini, sebenarnya pada bentuk 3NF sudah memenuhi criteria sebagai tabel relasional yang dapat diimplementasikan pada RDBMS, tidak harus dalam bentuk BNF. Jadi bentuk BNF pun tidak mutlak dijadikan sebagai bentuk dalam RDBMS.
Bentuk BNF memiliki syarat harus memenuhi syarat ketergantungan fungsional dan ketergantungan transitif.