NORMALISASI PERPUSTAKAAN
KASUS PERPUSTAKAAN
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 |
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 |
Buatlah normalisasi tersebut!
Analisis Tabel Dependensi :
1. Tabel Pinjam
|
Id_pinjam |
Nm_peminjam |
|
PJ001 |
Boediyono |
|
PJ002 |
Mulyadi |
|
PJ003 |
Burhan |
|
PJ004 |
Alex |
|
PJ005 |
Suparman |
2. Tabel 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 |
|
Jm_Hr_pj |
Biaya_Pinjam |
|
1 |
Rp.2000 |
|
2 |
Rp.4000 |
|
3 |
Rp.6000 |
|
5 |
Rp.9000 |
|
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 |
- Ø UnNormlamized
-
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
Ø Normal Satu 1NF
Suatu relasi disebut sebagai bentuk normal pertama jika :
- dalam relasi tersebut tidak mengandung atribut yang bernilai ganda (multi valued attribute).
- Buang atribut berganda.
Caranya: Atur setiap kolom berisi satu nilai (tunggal) hingga menjadi n baris.
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
Ø Normal Dua 2NF
Suatu relasi memenuhi bentuk normal kedua jika:
- Relasi telah berada dalam bentuk normal pertama (1NF)
- Tidak ada dependensi parsial.
o setiap atribut non kunci-primer memiliki dependensi sepenuhnya terhadap kunci-primer).
o Sehingga harus di cari atribut mana saja yang menjadi kunci-primer, dan atribut mana saja yang bukan kunci primer.
Berdasarkan diagram dependensi fungsional diatas, dapat dikompresi menjadi 3 tabel relasi yaitu :
1. Id_pinjam à Nm_pinjam
Tabel Peminjam
Id_pinjam
Nm_peminjam
PJ001
Boediyono
PJ002
Mulyadi
PJ003
Burhan
PJ001
Boediyono
PJ004
Alex
PJ003
Burhan
PJ005
Suparman
1. Id_buku à {Nm_buku, Penerbit, Thn_terbit}
Tabel Buku
Id_pinjam
Nm_peminjam
Id_pinjam
Nm_peminjam
PJ001
Boediyono
pj001
Boediyono
PJ002
Mulyadi
pj002
Mulyadi
PJ003
Burhan
pj003
Burhan
PJ001
Boediyono
pj001
Boediyono
PJ004
Alex
pj004
Alex
PJ003
Burhan
pj003
Burhan
PJ005
Suparman
pj005
Suparman
2. {Id_pinjam, Id_buku} à {Jm_hr_pj, Biaya_pinjam}
Tabel Biaya
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
Ø Normal Tiga 3NF
Suatu relasi berada dalam bentuk normal ketiga jika:
- Memenuhi bentuk normal kedua (2NF)
- Tidak ada dependensi transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya)
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
Berdasarkan tabel diatas, dapat dikompresi menjadi 2 tabel relasi.
1. 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
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
Ø Lampiran
"TERIMA KASIH"



Komentar
Posting Komentar