Kasus Membuat Normalikasi



Kasus:
Sebuah perputakaan memiliki banyak buku yang dapat di pinjamkan ke pada anggota perpustakaan dengan menggunakan kartu peminjaman. Setiap anggota kartu peminjaman memiliki 1 kartu dan dapat meminjam beberapa buku.  Data nya terdiri dari id kartu peminjaman, nama peminjam, jumlah hari pinjam, biaya peminjaman, id buku, nama buku, penerbit buku, tahun terbit buku.


Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

Ada beberapa anomali yang terjadi pada table berikut, yaitu:
ü  Anomali Peremajaan
Contoh:
Jika terjadi perubahan nama peminjam dengan id pinjam menjadi “Burhanudin”, maka perubahan harus dilakukan sebanyak 2x. Kalau dilakukan hanya 1x, maka data menjadi tidak konsisten (tidak sesuai)

Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhanudin
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

Id_pinjam yang sama pj003 mempunyai nama yang berbeda, hal ini disebut anomali peremajaan)

ü  Anomali Penyisipan
Misalnya:
Jika terjadi penambahan buku baru, misalnya: Bk006, Algoritma Pemrograman, Mizan Pustaka, 2012. Dengan penambahan buku baru mengakibatkan terjadi kekosongan nilai pada atribut : Id_pinjam, Nm_peminjaman, Jm_hr_pl, dan biaya_punjam ( anomali penyisipan)

Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
kosong
kosog
Kosong
kosong
Bk006
Algoritma Pemrograman
Mizan Pustaka
2012

ü  Anomali penghapusan
Jika Id pinjam pj002  membatalkan peminjaman dengan nama buku Basis data
Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

Dengan penghapusan record tersebut mengakibatkan hilangnya datajm_hr_pj terhadap Biaya pinjam (Anomali penghapusan)
Berdasarkan beberapa anomali di atas, maka tabel/relasi tersebut harus didekomposisi (dipisahkan) berdasarkan dependensinya:
Table peminjaman
Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

ü  Dependensi Fungsional
1.      Id_pinjam è Nm_peminjam
2.      Id_buku è {Nm_buku, Penerbit, Thn_terbit}
3.      {Id_pinjam, Id_buku} è {Jm_hr_pj, Biaya_Pinjam}

ü  Dependensi Fungsional sepenuhnya
1.      Id_pinjam è Nm_peminjam
2.      Id_buku è {Nm_buku, Penerbit, Thn_terbit}
3.      {Id_pinjam, Id_buku} è {Jm_hr_pj, Biaya_Pinjam}

ü  Dependensi Transitif
Pada dependensi 3) terdapat Dependensi transitif :
{Id_pinjam, Id_buku} è {Jm_hr_pj, Biaya_pinjam}
                X                                           Y
Jm_hr_pjèBiaya_pinjam       
       Y                        Z


Berdasarkan dependensi diatas, diperoleh 4 tabel :
1.      Id_pinjam è Nm_peminjam

 Table peminjam
Id_pinjam
Nm_peminjam
pj001
Boediyono
pj002
Mulyadi
pj003
Burhan
pj004
Alex
pj005
Suparman

2.      Id_buku è {Nm_buku, Penerbit, Thn_terbit}

 Table buku
Id_buku
Nm_buku
Penerbit
Thn_terbit
Bk001
Matematika
Erlangga
2010
Bk002
Basis data
Tinta emas
2009
Bk003
Visual basic
Gramedia
2012
Bk004
Jaringan
Penebar swadaya
2008
Bk005
Struktur data
Smart book
2011

3.      Jm_hr_pj è Biaya_pinjam

 Table biaya peminjaman
Jm_hr_pj
Biaya_pinjam
1
Rp.2000
2
Rp.4000
3
Rp.6000
5
Rp.9000

4.      {Id_pinjam, Id_buku} è {Jm_hr_pj}

Tabel jumlah hari peminjaman
Id_pinjam
Id_buku
Jm_hr_pj
pj001
Bk001
3
pj002
Bk002
2
pj003
Bk001
5
pj001
Bk003
1
pj004
Bk004
3
pj003
Bk005
1
pj005
Bk002
2


Table UNF (UnNormalized Form)

Adalah suatu kondisi dimana sebuah table yang memiliki rangkap atau data yang terduplikasi

Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
1
Rp.6000
Rp.2000
Bk001
BK003
Matematika
Visual basic
Erlangga
Gramedia
2010
2012
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
1
5
Rp.2000
Rp.9000
Bk005
Bk001
Struktur data
Matematika
Smart book
Erlangga
2011
2010
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009


Bentuk normalisasi pertama:

Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
1
Rp.6000
Rp.2000
Bk001
BK003
Matematika
Visual basic
Erlangga
Gramedia
2010
2012
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
1
5
Rp.2000
Rp.9000
Bk005
Bk001
Struktur data
Matematika
Smart book
Erlangga
2011
2010
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

Pada table diatas Jm_hr_pj, Biaya_pinjam, Id_buku, Nm_buku, penerbit, dan tahun menyatakan atribut yang berulang (misal boediyono meminjam 2 buku yang berbeda). Bentuk seperti ini perlu diubah menjadi bentuk normal pertama.
Sesuai dengan konsep normal pertama yaitu : “suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai tunggal untuk setiap baris”.
Berikut adalah table yang sudah di normalisasi pertama:
Id_pinjam
Nm_peminjam
Jm_hr_pj
Biaya_pinjam
Id_buku
Nm_buku
Penerbit
Thn_terbit
pj001
Boediyono
3
Rp.6000
Bk001
Matematika
Erlangga
2010
pj001
Boediyono
1
Rp.2000
Bk003
Visual basic
Gramedia
2012
pj002
Mulyadi
2
Rp.4000
Bk002
Basis data
Tinta emas
2009
pj003
Burhan
5
Rp.9000
Bk001
Matematika
Erlangga
2010
pj003
Burhan
1
Rp.2000
Bk005
Struktur data
Smart book
2011
pj004
Alex
3
Rp.6000
Bk004
Jaringan
Penebar swadaya
2008
pj005
Suparman
2
Rp.4000
Bk002
Basis data
Tinta emas
2009

Bentuk normalisasi kedua:
Ketentunan bentuk normal ke dua yaitu: “ suatu realasi berada dalam bentuk normal kedua jika dan hanya jika.
a.       Berada pada bentuk normal pertama
b.      Semua atribut bukan kunci memiliki depedensi sepenuhnya  terhadap kunci primer
Pada table diatas dapat digambarkan diagram depedensi fungsional, seperti berikut ini:

  
                                       
Diagram depedensi fungsional diatas menjelaskan bahwa:
a.       Nm_pinjam memiliki dependensi fungsional terhadap Id_pinjam.
b.      Nm_buku, penerbit, Thn_terbit memiliki dependensi fungsional terhadap Id_buku.
c.       Biaya_pinjam dan Jm_hr_pj mempunyai dependensi fungsional terhadap Id_pinjam dan Id_buku.
Berdasarkan diagram dependensi fungsional tersebut, pendekompossisinya menghasilkan tiga buah relasi, yaitu:
a.       (Id_pinjam, Nm_pinjam)

Table peminjam
Id_pinjam
Nm_peminjam
pj001
Boediyono
pj002
Mulyadi
pj003
Burhan
pj001
Boediyono
pj004
Alex
pj003
Burhan
pj005
Suparman

b.      (Id_buku, Nm_buku, penerbit, Thn_trbit)

Table buku
Id_buku
Nm_buku
Penerbit
Thn_terbit
Bk001
Matematika
Erlangga
2010
Bk002
Basis data
Tinta emas
2009
Bk001
Matematika
Erlangga
2010
Bk003
Visual basic
Gramedia
2012
Bk004
Jaringan
Penebar swadaya
2008
Bk005
Struktur data
Smart book
2011
Bk002
Basis data
Tinta emas
2009

c.       (Id_pinjam, Id_buku, Jm_hr_pj, Biaya_pinjam)
Table Jumlah dan biaya peminjaman
Id_pinjam
Id_buku
Jm_hr_pj
Biaya_pinjam
pj001
Bk001
3
Rp.6000
pj002
Bk002
2
Rp.4000
pj003
Bk001
5
Rp.9000
pj001
Bk003
1
Rp.2000
pj004
Bk004
3
Rp.6000
pj003
Bk005
1
Rp.2000
pj005
Bk002
2
Rp.4000

Bentuk normalisasi ketiga
Jm_hr_pj mempunyai dependensi fungsional terhadap Id_pinjam dan Id_buku. Serta Biaya_pinjam mempunyai dependensi fungsional terhadap Jm_hr_pinjam.
Id_pinjam
Id_buku
Jm_hr_pj
Biaya_pinjam
pj001
Bk001
3
Rp.6000
pj002
Bk002
2
Rp.4000
pj003
Bk001
5
Rp.9000
pj001
Bk003
1
Rp.2000
pj004
Bk004
3
Rp.6000
pj003
Bk005
1
Rp.2000
pj005
Bk002
2
Rp.4000

Dengan menggunakan pendekatan dari bentuk normalisasi ketiga maka relasi pada bagian c diatas dapat didekomposisi menjadi 2 relasi :
1.      (Id_pinjam, Id_buku, Jm_hr_pj)

Tabel  jumlah hari pinjam
Id_pinjam
Id_buku
Jm_hr_pj
pj001
Bk001
3
pj002
Bk002
2
pj003
Bk001
5
pj001
Bk003
1
pj004
Bk004
3
pj003
Bk005
1
pj005
Bk002
2

2.      (Jm_hr_pj, Biaya_pinjam)

Tabel biaya
Jm_hr_pj
Biaya_pinjam
1
Rp.2000
2
Rp.4000
3
Rp.6000
5
Rp.9000

Post a Comment