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