NORMALISASI PERPUSTAKAAN
Kasus
Sebuah perpustakaan memiliki banyak buku yang dapat dipinjamkan kepada
anggota perpustakaan dengan menggunakan kartu peminjaman. Setiap anggota kartu
peminjaman memiliki 1 kartu dan dapat meminjam beberapa buku. Datanya
terdiri dari id kartu peminjaman, nama peminjam, jumlah hari pinjam, biaya
peminjaman, id buku, nama buku, penerbit buku, dan 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
data jm_hr_pj terhadap Biaya pinjam (Anomali penghapusan).
Berdasarkan beberapa anomali di atas, maka tabel/relasi tersebut harus
didekomposisi (dipisahkan) berdasarkan dependensinya:
Tabel 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 |
Berdasarkan dependensi di atas, maka
diperoleh 4 tabel:
- Id_pinjam --> Nm_peminjam
Table Peminjam
|
Id_pinjam |
Nm_peminjam |
|
pj001 |
Boediyono |
|
pj002 |
Mulyadi |
|
pj003 |
Burhan |
|
pj004 |
Alex |
|
pj005 |
Suparman |
- 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 |
- Jm_hr_pj --> Biaya_pinjam
Table Biaya Peminjaman
|
Jm_hr_pj |
Biaya_pinjam |
|
1 |
Rp2.000 |
|
2 |
Rp4.000 |
|
3 |
Rp6.000 |
|
5 |
Rp9.000 |
- (Id_pinjam, Id_buku) -->
(Jm_hr_pj)
Table 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 |
Unnormalized Form
--> Suatu kondisi dimana
sebuah table 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 |
Rp6.000 |
BK001 |
Matematika |
Erlangga |
2010 |
|
|
|
1 |
Rp2.000 |
BK003 |
Visual
Basic |
Gramedia |
2012 |
|
pj002 |
Mulyadi |
2 |
Rp4.000 |
BK002 |
Basis Data |
Tinta Emas |
2009 |
|
pj003 |
Burhan |
1 |
Rp2.000 |
BK005 |
Struktur
Data |
Smart Book |
2011 |
|
|
|
5 |
Rp9.000 |
BK001 |
Matematika |
Erlangga |
2010 |
|
pj004 |
Alex |
3 |
Rp6.000 |
BK004 |
Jaringan |
Penebar
Swadaya |
2008 |
|
pj005 |
Suparman |
2 |
Rp4.000 |
BK002 |
Basis Data |
Tinta emas |
2009 |
First Normal Form
--> Suatu relasi dikatakan dalam bentuk
normal pertama jika dan hanya jika setiap atribut bernilai tunggal untuk setiap
baris. Pada unnormalized form terdapat atribut berulang seperti Boediyono dan
Burhan meminjam 2 buku yang berbeda. Oleh karena itu perlu diubah menjadi
bentuk first normal form.
|
Id_pinjam |
Nm_peminjam |
Jm_hr_pj |
Biaya_pinjam |
Id_buku |
Nm_buku |
Penerbit |
Thn_terbit |
|
pj001 |
Boediyono |
3 |
Rp6.000 |
BK001 |
Matematika |
Erlangga |
2010 |
|
pj001 |
Boediyono |
1 |
Rp2.000 |
BK003 |
Visual
Basic |
Gramedia |
2012 |
|
pj002 |
Mulyadi |
2 |
Rp4.000 |
BK002 |
Basis Data |
Tinta Emas |
2009 |
|
pj003 |
Burhan |
1 |
Rp2.000 |
BK005 |
Struktur
Data |
Smart Book |
2011 |
|
pj003 |
Burhan |
5 |
Rp9.000 |
BK001 |
Matematika |
Erlangga |
2010 |
|
pj004 |
Alex |
3 |
Rp6.000 |
BK004 |
Jaringan |
Penebar
Swadaya |
2008 |
|
pj005 |
Suparman |
2 |
Rp4.000 |
BK002 |
Basis Data |
Tinta emas |
2009 |
Second Normal Form
--> Suatu realasi
berada dalam bentuk normal kedua jika dan hanya jika.
- Berada
pada bentuk normal pertama.
- Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci primer.
Pada table diatas
dapat digambarkan diagram dependensi fungsional, seperti berikut ini:
Diagram depedensi
fungsional diatas menjelaskan bahwa:
- Nm_pinjam
memiliki dependensi fungsional terhadap Id_pinjam.
- Nm_buku,
penerbit, Thn_terbit memiliki dependensi fungsional terhadap Id_buku.
- Biaya_pinjam
dan Jm_hr_pj mempunyai dependensi fungsional terhadap Id_pinjam dan
Id_buku.
Berdasarkan diagram dependensi
fungsional tersebut, maka dihasilkan 3 buah relasi, yaitu:
- Table Peminjam
|
Id_pinjam |
Nm_peminjam |
|
pj001 |
Boediyono |
|
pj002 |
Mulyadi |
|
pj003 |
Burhan |
|
pj001 |
Boediyono |
|
pj004 |
Alex |
|
pj003 |
Burhan |
|
pj005 |
Suparman |
- 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 |
- Table Jumlah dan Biaya
Peminjaman
|
Id_pinjam |
Id_buku |
Jm_hr_pj |
Biaya_pinjam |
|
pj001 |
BK001 |
3 |
Rp6.000 |
|
pj002 |
BK002 |
2 |
Rp4.000 |
|
pj003 |
BK001 |
5 |
Rp9.000 |
|
pj001 |
BK003 |
1 |
Rp2.000 |
|
pj004 |
BK004 |
3 |
Rp6.000 |
|
pj003 |
BK005 |
1 |
Rp2.000 |
|
pj005 |
BK002 |
2 |
Rp4.000 |
Third Normal Form
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 |
Rp6.000 |
|
pj002 |
BK002 |
2 |
Rp4.000 |
|
pj003 |
BK001 |
5 |
Rp9.000 |
|
pj001 |
BK003 |
1 |
Rp2.000 |
|
pj004 |
BK004 |
3 |
Rp6.000 |
|
pj003 |
BK005 |
1 |
Rp2.000 |
|
pj005 |
BK002 |
2 |
Rp4.000 |
Dengan menggunakan pendekatan dari
bentuk normalisasi ketiga maka relasi pada bagian c diatas dapat didekomposisi
menjadi 2 relasi :
- Table 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 |
- Table Biaya
|
Jm_hr_pj |
Biaya_pinjam |
|
1 |
Rp2.000 |
|
2 |
Rp4.000 |
|
3 |
Rp6.000 |
|
5 |
Rp9.000 |
.png)
Komentar
Posting Komentar