Assalamu'alaikum :). Padahal cuma minggu kemaren nggak post, tapi rasanya udah lama aja. Oke kali ini saya mau post tentang Normalisasi. Ini beda sama post-post sebelumnya. Kalo biasanya kita pakai psql yang item-item itu buat bikin query, sampe (mungkin) bosen liatnya, sekarang kita pake yang lebih berwarna, karena ini mungkin teori penormalan data gitu, jadi nggak usah pake psql yang item itu. =D

       A. Dasar Teori
1.      Pengertian Normaliasasi
Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi).  Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
2.      Tujuan Normalisasi
·         Untuk menghilang kerangkapan data
·         Untuk mengurangi kompleksitas
·         Untuk mempermudah pemodifikasian data
Jadi tujuan dari normalisasi data adalah agar data yang ada tidak redundan dan memiliki data integrity yang kuat sehingga ketika kita melakukan relasi antara tabel akan dengan mudah kita menjaga data integrity dan mendapatkan datanya
3.      Keuntungan Proses Normalisasi Data
·         Meminimalkan ukuran penyimpanan yang diperlukan untuk penyimpanan data.
·         Meminimalkan resiko inkonsistensi data pada basis data.
·         Meminimalkan kemungkinan anomaly pembaruan.
·         Memaksimalkan stabilitas struktur data.
4.      Permasalahan Dalam Normalisasi Data
·         Redundansi data (ruang penyimpanan)
Redundansi data yaitu kejadian berulangnya data atau kumpulan data yang sama dalam sebuah database yang mengakibatkan pemborosan media penyimpanan.
·            Anomalies (penyimpanan dalam proses modifikasi data)
a.       Insert Anomalies merupakan error atau kesalahan yang terjadi sebagai akibat dari operasi menyisipkan (insert) tuple / record pada sebuah relasi.
b.      Update Anomalies merupakan error atau kesalahan yang terjadi sebagai akibat operasi perubahan (update) tuple / record dari sebuah relasi.
c.       Delete Anomalies merupakan error atau kesalahan yang terjadi sebagai akibat operasi penghapusan (delete) terhadap tupe / record dari sebuah relasi.
5.      Tahapan Normalisasi
Tahapan Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling ketat (5NF). Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Urutan: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF.
6.      Langkah – langkah Normalisasi
Secara umum, langkah-langkah normalisasi dapat digambarkan seperti di bawah ini.



a.      Unnormalization Form
Bentuk yang tidak normal dimaksudkan suatu kumpulan data yang akan diolah yang diperoleh dari format – format yang beraneka ragam, masih terdapat duplikasi, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan.
b.      Normal Pertama (1st Normal Form)
Aturan :
·         Tidak adanya atribut multi-value, atribut komposit atau kombinasinya.
·         Mendefinisikan atribut kunci.
·         Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi)

c.       Normalisasi Kedua (2nd Normal Form)
Aturan :
·         Sudah memenuhi dalam bentuk normal kesatu (1NF)
·         Semua atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci
·         Jika ada ketergantungan  parsial maka atribut tersebut harus dipisah pada tabel yang lain
·         Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi

d.      Normalisasi Ketiga (3rd Normal Form)
           Aturan :
·         Sudah berada dalam bentuk normal kedua (2NF)
·         Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya).

e.       Boyce Codd Normal Form (BCNF)  
           Secara praktis tujuan analisis database cukup sampai pada 3NF, Akan tetapi dalam suatu kasus tertentu lebih baik bila dapat mencapat BCNF. Beberapa pemikir menyamakan antara 3NF dengan BCNF.
Bentuk normal BCNF terpenuhi jika :
·         Masing-masing atribut utama bergantung fungsional penuh pada masing kunci dimana kunci tersebut bukan bagiannya.
·         Setiap determinan atribut-atribut relasi adalah kunci relasi atau kandidat kunci. - BCNF dapat memiliki lebih dari satu kunci.
·         BCNF hampir sama dengan 3NF atau bisa dibilang sama dengan 3NF.

f.       Bentuk Normal Tahap Keempat (4th Normal Form /4NF) 
            Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued attribute. Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies
g.      Bentuk Normal Tahap Keempat (5th Normal Form /5NF) 
              Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah lossless decomposition menjadi tabel-tabel yg lebih kecil. Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula. 
Sumber: http://672012123.blogspot.com/2013/03/sbd-chap-4-normalisasi-data.html
                        http://indahmanafe702012136.blogspot.com/2013/03/normalisasi-dan-denormalisasi_2464.html
       B. Hasil Praktikum
Berikut ini adalah soal praktikum normalisasi

Untuk mendapatkan menormalisasi bentuk nota tersebut kita harus melakukan langkah-langkah normalisasi sepert berikut ini.
1.      Unnormalization Form
Bentuk Unnormalisasi merupakan bentuk yang masih sangat sederhana, masih banyak terdapat duplikasi dan masih rancu karena masih terdapat kolom yang null. Seperti di bawah ini.


2.      Bentuk Normal Pertama (1st Normal Form)
Pada bentuk normal pertama ini, kita harus membuat semua nilai dalam atribut bernilai atomic (tunggal). Selain itu kita harus menentukan atribut kunci. Pada praktikum ini yaitu pada bentuk pertama, atribut kunci yang dapat kita definisikan yaitu Nomor dan Id_barang. Berikut ini adalah bentuk normal pertama.


3.      Bentuk Normal Kedua (2nd Normal Form)
Setelah bentuk pertama terpenuhi, kita dapat membentuk normal kedua. Pertama, atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci. Setelah itu, kita harus menghilangkan ketergantungan parsial pada tabel dengan membuat tabel baru.
Nama_Barang, Satuan, dan Diskon 1 bergantung kepada atribut kunci Id_Barang. Sehingga kita buat tabel baru bernama Tabel Barang.


Lalu, Nama_Pel dan Diskon 2 merupakan atribut yang tidak bisa dipisahkan, untuk itu kita buat atribut baru yaitu Id_pel sebagai atribut kunci dan Jenis_pel sebagai penentu Diskon 2. Atribut-atribut tersebut kita buat di Tabel Pelanggan.


Kemudian, kita buat Tabel Petugas dengan atribut Id_Pet sebagai atribut kunci untuk mengidentifikasi petugas dan Status_Pet seperti di bawah ini.


Terakhir kita buat Tabel Transaksi yang berisi atribut Nomor, Tanggal, Id_Barang, Jumlah, Satuan, Diskon 1, Total_Satuan, Sub_Total, Diskon 2, PPN, Total_qty, Total, Id_Pel, dan Id_Pet. Berikut ini adalah bentuk Tabel Transaksi.


4.      Bentuk Normal Ketiga (3rd Normal Form)
Untuk membentuk normal ketiga, bentuk kedua harus sudah terbentuk, seperti yang terdapat di atas. Selain itu untuk memenuhi bentuk ketiga, harus tidak ada ketergantungan transitif yaitu dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya.
Pada Tabel Barang dan Tabel Petugas tidak perlu diubah lagi karena sudah tidak ada lagi ketergantungan transitif.



Pada Tabel Transaksi masih terdapat ketergantungan transitif yaitu atribut Diskon 2 yang masih tergantung pada atribut Jenis_Pel. Sehingga Tabel Pelanggan pada bentuk kedua kita pisah menjadi Tabel Pelanggan dan Tabel Jenis Pelanggan. Tabel Jenis Pelanggan berisi atribut Id_Jenis sebagai atribut kunci , Jenis_Pel dan Diskon 2. Sedangkan Tabel Pelanggan berisi Id_Pel sebagai atribut kunci, Nama_Pel dan Id_Jenis seperti di bawah ini


Sedangkan tabel transaksi sama dengan bentuk kedua

5.      Bentuk Normal Keempat (4th Normal Form)
Pada bentuk keempat ini, kita dapat memisahkan beberapa atribut yang masih bisa dipisahkan. Selain itu, kita juga harus menghilangkan anomaly-anmlai yang masih terdapat pada tabel.
Untuk Tabel Barang, Tabel Petugas, Tabel Pelanggan, Tabel Jenis Pelanggan tetap seperti bentuk sebelumnya.





Pada tabel transaksi, masih ada terdapat anomali seperti pada atribut sub_total yang merupakan akumulasi dari jumlah atribut total_satuan dan perhitungan diskon  1 sehingga seharusnya atribut sub_total harus dipisahkan. Begitu juga pada atribut total yang harus dipisah juga karena atribut total adalah hasil perhitungan akhir dari subtotal dengan diskon 2 dan PPN sehingga atribut total juga harus dipisah. Sehingga Tabel Transaksi kita pisah menjadi Tabel Transaksi dan Tabel Nota seperti di bawah ini.

Sehingga hasil akhir dari normalisasi di atas dapat kita buat diagram seperti di bawah ini agar dapat kita ketahui relasinya.
                       

C.    Kesimpulan, Saran, Kritik dan Manfaat bagi Pembaca
1.      Kesimpulan
Setelah melakukan praktikum ini, saya dapat mengambil kesimpulan bahwa Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi).  Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan. Tahapan-tahapan Normalisasi yaitu 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Namun, pada umumya database yang baik cukup sampai 3NF saja karena sudah memenuhi database yang baik.
2.      Saran
Diperlukan pembelajaran lebih lanjut mengenai normalisasi agar diperoleh database dengan kualitas yang baik dengan langkah-langkah normalisasi yang ada.
3.      Kritik
Dalam laporan ini, masih banyak terdapat kekurangan kareana dalam melakukan proses normalisasi dibutuhkan ketelitian dalam menganalisa tabel-tabel dalam database yang akan dinormalisasi.
4.      Manfaat
Manfaat yang akan didapat pembaca dalam laporan ini antara lain dapat mengetahui pengertian normalisasi serta langkah-langkah dalam proses normalisasi agar diperoleh database yang berkualitas.