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
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
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
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
Tidak ada komentar:
Posting Komentar