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:

  1. Id_pinjam --> Nm_peminjam

 

Table Peminjam

Id_pinjam

Nm_peminjam

pj001

Boediyono

pj002

Mulyadi

pj003

Burhan

pj004

Alex

pj005

Suparman

 

  1. 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

 

  1. 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

 

  1. (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:

 

  1. Table Peminjam

Id_pinjam

Nm_peminjam

pj001

Boediyono

pj002

Mulyadi

pj003

Burhan

pj001

Boediyono

pj004

Alex

pj003

Burhan

pj005

Suparman

 

  1. 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

 

  1. 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 :

 

  1. 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

 

  1. Table Biaya

Jm_hr_pj

Biaya_pinjam

1

Rp2.000

2

Rp4.000

3

Rp6.000

5

Rp9.000

 

 


 








Komentar

Postingan populer dari blog ini

Cara Membuat Database Kasir dan Tabel Menggunakan Laragon

Cara Mengarsipkan Berkas pada Google Drive

Praktikum Data Manipulation Language (DML) dengan Laragon