Pages

PRAKTIKUM DESAIN BASIS DATA VI (NORMALISASI)


Waah, serasa sudah fakum lama ya ga posting di blog ini, serasa tangan ini sudah kaku untuk menarik-nari di atas keyboard mencari kosa kata untuk memberi pemahaman baik di setiap laporan praktikum yang saya buat (haha, agak alay) ya berhubung minggu kemarin ada UTS yang harus dikerjakan di kelas, maka laporan di stop.

Jadi, saya akan melanjutkan rutinitas melengkapi tugas yang memang sudah menjadi kewajiban untuk melengkapinya. Materi kali ini ga akan menyinggung tentang posgreSQL maupun My SQL, sudah bored mungkin ya? hehe, nggak.. Materinya berkaitan dengan bagaimana cara kita membuat table yang baik sesuai kaidah normalisasi dan denormalisasi. Jadi intinya, jika output dari prosessing seperti transaksi ataupun KHS, atau output output lainnya bisa kita kira-kira bagaimana kita akan membangun database dan table yang baik.
Here we go..
Kita kupas habis materi dan soalnya
LAPORAN DESAIN BASIS DATA BAB VI NORMALISASI
Bahasan :
      -> Normalisasi sebagai teknik analisis database
          -> Langkah-langkah dalam normalisasi
Sasaran :
      -> Memahami pengertian dan tujuan dari normalisasi
            -> Memahami langkah-langkah dalam normalisasi
Memahami Normalisasi
Dari judulnya aja udah bisa ditebak kan, normalisasi itu cara untuk menormalkan. Menormalkan apa? Ya menormalkan yang tidak normal. Hehehe, bukan sedangkal itu juga sih pengertiannya.. Nah, untuk lebih paham apa normalisasi itu, kita harus mengetahui artinya dulu ya..
Normalisasi merupakan suatu proses untuk mengubah suatu table yang memiliki masalah tertentu ke dalam dua table atau lebih yang tidak lagi memiliki masalah tersebut. Ada juga yang berpendapat normalisasi adalah proses penyusunan table table yang tidak redundan (double), yang dapat menyebabkan anomaly yaitu proses basis data yang memberikan efek samping yang tidak diharapkan (Misalnya menyebabkan data tidak konsisten atau membuat data hilang ketika data yang lain dihapus).[1]
Seperti point bahan pembahasandiatas,  normalisasi digunakan sebagai teknik analisis data pada database, sehingga dapat diketahui apakah pembuatan tabel – tabel yang terelasi dalam database itu sudah baik. Konteksnya dikatakan baik itu saat berada pada kondisi yaitu suatu kondisi pada saat proses insert, update, delete dan modifikasi pada satu atau beberapa atribut suatu tabel tidak berpengaruh terhadap integritas data yang lain dalam satu hubungan relasi database.
Kalimat-kalimat diatas sudah cukup untuk memahami apa sih normalisasi itu. Nah, sekarang setelah mencapai tahap pemahaman, saya akan melangkah pada tahap langkah-langkahnya proses normalisasi.
Teori normalisasi dibangun menurut konsep level normalisasi. Level normalisasi atau sering disebut sebagai bentuk normal suatu relasi dijelaskan berdasarkan kriteria tertentu pada bentuk normal. Bentuk normal yang dikenal hingga saat ini meliputi bentuk 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, DKNF, dan RUNF. Secara berturut-turut masing-masing level normal tersebut akan dibahas berikut ini, dimulai dari bentuk tidak normal.[2]
Yang pertama : Unnormalization Form
Yang dimaksud bentuk tidak normal itu adalah bentuk yang format-formatnya masih beraneka ragam, masih terdapat duplikasi kolom, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan.
Bentuk ga normal ini biasanya bentuk yang masih pertama kali di ambil dari data lapangan dan atributnya masih belum sederhana
Langkah yang kedua yaitu: First Normal Form (1NF)
Suatu table dikatakan normal ke satu (1NF) jika :
        -> Tidak terdapat baris yang bernilai ganda atau duplikat
        -> Masing masing baris bernilai tunggal dan tidak bernilai null
Langkah-langkahnya :
        -> Isikan setiap data bernilai tunggal dan tidak null
        -> Membuang perulangan data dalam satu baris dan tidak bernilai null[3]
Langkah ketiga yaitu: Second Normal Form (2NF)
Dikatakan 2NF jika:
-        Langkah 1NF harus sudah terpenuhi
-        Pada semua table semua atribut yang tidak termasuk dalam primary key memiliki ketergantungan fungsional pada primary key secara utuh. Suatu atribut dikatakan ketergantungan fungsional jika harga pada atribut tersebut menentukan harga dari atribut yang lain. Misalnya, nim → mhs_nama.
Nah nama tersebut kan akan bergantung pada nim, jadi nim akan menjadi primary key dan memiliki atribut mhs_nama yang ketergantungan fungsional terhadap nim
Langkah-langkah:
-       Jika terdapat atribut yang bergantung terhadap atribut bukan kunci utama dan merupakan atribut kunci maka pecah menjadi table baru.
Langkah selanjutnya yaitu: Third Normal Form (3NF)
Dianggap 3NF jika :
-       Bentuk normal 2NF sudah terpenuhi
-       Tidak terdapat anomali-anomali hasil ketergantungan transitif
Hasil ketergantungan transitif itu adalah dalam suatu table masih terdapat dua atau lebih atribut bukan kunci
Langkah – langkah :
-        Pastikan semua atribut non kunci bergantung penuh terhadap atribut kunci.
-        Pisahkan menjadi tabel baru jika menemukan ketergantungan transitif dalam tabel tersebut.
Kemudian langkah Boyce Codd Normal Form (BCNF)
Sebenarnya normalisasi itu bisa saja hanya sampai langkah 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[4].
Langkah – langkah :
-       Hilangkan dependensi pada bukan kunci kandidat.
6. Fourth Normal Form (4NF)
Dilakukan jika terdapat anomali pada (3NF)
7. Fifth Normal Form (5NF)
Langkah ini untuk memecah relasi menjadi dua sehingga relasi tersebut tidak digabungkan kembali manjadi satu dan jika terdapat anomali pada (5NF)
Nah, kalo langkah langkah diatas sudah dapat kita lakukan, maka urusan selesai. Tetapi tidak dengan semudah itu suatu table yang baik dapat dibangun ternyata. Butuh ketelitian dalam menentukan relasi serta komponen apa saja atau atribut apa saja yang kita butuhkan dalam membangun database yang baik dan dimengerti oleh pengguna dan bermanfaaat.
Kemudian, saya akan membahas soal yang akan menggunakan langkah-langkah normalisasi diatas. Soal tersebut sebagai berikut
Soal 1.
Buatlah normalisasi dari data berikut .
a. Sistem informasi rental buku “pustaka ilmu”



Soal 2 Sistem informasi toko serba_ada
Nah, karena yang dipraktikkan di lab itu adalah no.2, maka saya akan mengerjakan nomer 2 terlebih dahulu
Pertama, kita bikin tabelnya sesuai dengan slip pembayaran diatas (tulis yang lengkap)
Hal tersebut merupakan tahap Unnormalization Form 
Sehingga hasilnya sebagai berikut:

Kurang jelas ya? oke saya perjelas, hehehe
Tgl_trans
id_trans
nama_pel
nama_brg
id_brg
jml
harga
jml_harga
18/072013
FP.13070024
Amad
Sandal lampu
499
1
17,500
17,500



Sandal anak
678
1
10,000
10,000



Angry bird
824
2
10,000
20,000



Crop A10B
36
1
27,000
27,000



Crop A10K
30
1
25,000
25,000







Ya, karna kepanjangan, saya potong tabelnya.. akan tetapi kedua table dibawah ini masih merupakan satu table

diskon_brg
subtotal
jml_diskon
PPN
total
nama_pet
0
308,500
0
0
308,500
admin
0

0
0


0

0
0


0

0
0


0

0
0










Nah, karena banyak data yang kosong-kosong dan ada baris yang double, dan juga karena table diambil langsung dari lapangan, maka memperoleh atribut yang tidak sederhana dengan format yang rumit. Jadi, sebagai programmer yang baik, maka kita harus menormalisasikan table diatas agar lebih akurat dan tidak ribet dalam memanajement table ataupun databasenya.
Jadi kita beranjak ke tahap First Normal Form (1NF), dimana kita lengkapi data-data yang kosong dan hilangkan data yang duplicate pada baris
Jadi, hasilnya sebagai berikut

Wahh, masih kecil ya gambarnya, mari diperjelas
Tgl_trans
id_trans
nama_pel
nama_brg
id_brg
jml
18/072013
FP.13070024
Amad
Sandal lampu
499
1
18/072013
FP.13070024
Amad
Sandal anak
678
1
18/072013
FP.13070024
Amad
Angry bird
824
2
18/072013
FP.13070024
Amad
Crop A10B
36
1
18/072013
FP.13070024
Amad
Crop A10K
30
1



harga
diskon_brg
jml_diskon
PPN
total
nama_pet
17,500
0
0
0
308,500
admin
10,000
0
0
0
308,500
admin
10,000
0
0
0
308,500
admin
27,000
0
0
0
308,500
admin
25,000
0
0
0
308,500
admin






Sudah jelas kan?
Nah ditahap 1NF ini masih banyak kekurangan, kenapa? Ya sebenarnya bisa saja kita membuat table sedemikian, akan tetapi table tersebut banyak kekurangan dalam memasukkan data, deleting data, dan mengubah data.
Tentang inserting data, kita tidak dapat memasukan kode dan nama barang saja tanpa ada transaksi pembelian, sehingga petugas baru dapat masuk bila ada transaksi pembelian
Kemudian tentang deleting data, bila satu baris transaksi dihapus, maka maka akan berakibat pada data pelanggan, padahal data pelanggan masih diperlukan untuk transaksi sesudahnya.
Selanjutnya kekurangan 1NF itu tentang mengubah data. Nama ahmad yang tertulis berulang-ulang tidak dapat diubah sekaligus, padahal data harus konsisten, jadi pengubahannya harus berkali-kali sehingga semua baris berubah
Maka, dilakukan tahap selanjutnya yaitu Second Normal Form (2NF)

Nah, gambar diatas adalah hasil dari tahap 2NF
Dimana table table tersebut dipecah berdasarkan kunci yang sudah ada dalam table 1NF. Yang dapat dikatakan primary key pada tabel di tahap 1NF adalah id_brg dan id_trans
Jadi id_barang merupakan primary key terhadap tabel barang dan memiliki atribut tersendiri. Sedangkan id_trans sebagai primary key terhadap tabel transaksi dan juga memiliki atribut yang berkaitan dengan transaksi. Dan keduanya direlasikan terhadap tabel transaksi_barang diamana terdapat proses  transaksi dilakukan
Akan tetapi, pada langkah ini, masih terdapat anomaly, jadi kita perbaikinya dengan tahap selanjutnya, yaitu tahap Third Normal Form (3NF). Berikut adalah hasil dari langkah 3NF

Pada tahap 3NF, hilangkan juga anomali-anomali yang masih mempunyai ketergantungan fungsional. Pada tabel diatas, kita dapat membuat tabel baru berupa pelanggan dan petugas
Nah jadi,  untuk memasukkan data, mendelete data, dan mengubah data petugas ataupun pelangggan tidak perlu menunggu untuk melakukan transaksi terlebih dahulu.
Kemudian seharusnya pada tabel transaksi_barang kita bisa memisahkan diskon dengan membuat tabel baru. Kemudian direlasikan dengan tabel transaksi karena pada diskon mempunyai kondisi dan berfungsi saat pelanggan memenuhi syarat yang diberikan oleh penjual dan dengan melakukan transaksi yang kesekian kali, maka pelanggan dapat mendapatkan diskon yang telah ditentukan penjual.
Pada tahap tersebut masuk dalam tahap Forth Normal Form (4NF), yaitu menghilangkan anomali pada 3NF
Berikut adalah hasil 4NF yang merupakan hasil akhir dari soal nomer 2

Soal no.1
Nah, saya akan berusaha menyelesaikan soal nomer satu, semoga aja ga keliru hehe
Unnormalization Form
Jreng jreng jreng, Pada tahapan unnormalization, data yang ditulikan adalah sesuai fakta di lapangan. Bentuk ini didapat dari dokumen yang ada dilapangan atau manual. Dan dokumen yang saya pakai adalah gambar nota diatas.

Waw, kecil banget ya gambarnya. Baiklah, saya zoom
No. Nota
Tgl
Tgl_Kembali
Jaminan
No_anggota
Nama_angg
0804001
1/4/2008
1/6/2008
KTP
08001
Fadhil M.A.




















Alamat
Telepon
Kode
Judul Buku
Jenis
Jl. Pandega No. 1
081765999
N001
Dibawah bendera revolusi
Non Fiksi



Senopati pamungkas
Fiksi



Kungfu Boy seri I
Komik



Gatra Mei 2008
Majalah



Biaya Sewa
Kasir
Total
Rp. 2.000
K01 – Fatih
Rp. 7.000
Rp. 1.500


Rp. 1.000


Rp. 2.500




Nah, kemudian kita normalkan lagi dengan cara tahap First normal Form (1NF) dengan tujuan normalisasi bentuk pertama ini adalah agar dalam data tidak terdapat baris yang bernilai ganda atau duplikat dan masing - masing baris bernilai tunggal.


No. Nota
Tanggal
Tanggal Kembali
Jaminan
No. Anggota
Nama
0804001
01/04/2008
01/06/2008
KTP
08001
Fadhil M.A.
0804001
01/04/2008
01/06/2008
KTP
08001
Fadhil M.A.
0804001
01/04/2008
01/06/2008
KTP
08001
Fadhil M.A.
0804001
01/04/2008
01/06/2008
KTP
08001
Fadhil M.A.


Alamat
Telepon
Kode
Judul Buku
Jenis
Jl. Pandega No. 1
081765999
N001
Dibawah bendera revolusi
Non Fiksi
Jl. Pandega No. 1
081765999
N001
Senopati pamungkas
Fiksi
Jl. Pandega No. 1
081765999
N001
Kungfu Boy seri I
Komik
Jl. Pandega No. 1
081765999
N001
Gatra Mei 2008
Majalah


Biaya Sewa
Kasir
Total
Rp. 2.000
K01 – Fatih
Rp. 7.000
Rp. 1.500
K01 – Fatih
Rp. 7.000
Rp. 1.000
K01 – Fatih
Rp. 7.000
Rp. 2.500
K01 – Fatih
Rp. 7.000


Kemudian, tidak cukup di langkah 1NF lah, kita butuh penormalan lanjut dengan langkah Second Normal Form (2NF)

Pembentukan bentuk normal kedua ini dilakukan dengan mencari kunci-kunci field yang dapat dipakai sebagai patokan dalam pencarian dan sifatnya unik. Berdasarkan kondisi di  atas dapat diambil kunci kandidat yaitu : No_nota, Kode_buku, id_anggota, id_kasir.
Nah, setelah 2NF terbentuk, kita normalkan lagi dengan tahap Third Normal Form (3NF) Karena setiap atribut yang bukan kunci harus bergantung hanya pada atribut kunci (primary key) secara menyeluruh. Hilangkan juga anomali – anomali yang masih mempunyai ketergantungan fungsional. Pada tahap bentuk ketiga ini, saya tambahkan tabel jenis. Hal ini dimaksudkan untuk mencegah anomaly data, juga dimaksudkan agar pendataan menjadi mudah dan rinci. 


Urusan selesai :D
Mungkin sekian dari saya

KESIMPULAN
Jika kita ingin membuat sebuah database, maka kita perlu melakukan analisis terhadap kebutuhan apa saja yang memungkinkan untuk kita masukkan dalam database, jadi pengambilan data mentah dari lapangan harus kita analisis terlebih dahulu dan data tersebut juga harus dimasukkan mentah-mentah dalam sebuah tabel. Dan setelah tabel yang tidak sederhana terbentuk, kita dapat melakukan normalisasi dengan banyak tahapan. Diantaranya yaitu Unnormalization Form, kemudian First Normal Form (1NF), lalu Second Normal Form (2NF), selanjutnya Third Normal Form (3NF), sebenarnya normalisasi boleh saja berhenti di 3NF jika sudah dianggap bahwa tabel-tabel dalam database tersebut sudah baik dan tidak ketergantungan fungsional serta tidak terdapat anomaly. Jika tabel tersebut belum baik, maka kita boleh melakukan tahap berikutnya yaitu 4NF dan seterusnya. Sehingga terbentuklah database yang akurat dan mudah dimanajemen.

KRITIK SARAN DAN MANFAAT
Kritik dan sarannya sebaiknya nota yang diberikan bukan hanya satu, jadi ada beberapa nota yang melakukan transaksi pada toko yang sama. Jadi kita lebih mudah dalam menganalisis tabelnya. Hehe
Manfaatnya, banyak sekali manfaat dalam laporan ini, karena jika kita akan membuat sebuah program yang memerlukan database, maka kita dapat memahami bagaimana database yang baik yang dapat kita bentuk.

DAFTAR PUSTAKA
Musthofa, Aziz. 2014. Modul Praktikum Desain Basis Data Bab VI (Normalisasi)

Sutanta, Edhy. 2004. Sistem Basis Data. Yogyakarta : Graha Ilmu

Date, C.J. 2004. Pengenalan Sistem Basis Data Jilid 1. Jakarta : Indeks





[1] Aziz Musthofa, Modul Praktikum Desain Basis Data VI (Normalisasi). 2014
[2] Edhy Sutanta. Sistem Basis Data. Yogyakarta : Graha Ilmu. 2004. Hal 173
[3] Aziz Musthofa, Modul Praktikum Desain Basis Data VI (Normalisasi). 2014
[4] C.J. Date. Pengenalan Sistem Basis Data Jilid I. Jakarta : Indeks. Hal. 283

fitri

YOU MIGHT ALSO LIKE

Tidak ada komentar:

Posting Komentar

Pengunjung

Instagram