29 Des 2012

MACAM-MACAM PENYIMPANGAN (ANOMALI)

 MACAM-MACAM PENYIMPANGAN (ANOMALI)

Dibawah ini akan diberikan contoh Anomali sbb:

No pasien
Kode obat
Harga obat
P001
Kd 01
2000
P002
Kd 02
4500
P003
Kd 03
2000

• Anomali Penyisipan(Insertion Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi menyisipkan tuple/record pada sebuah relasi.
Contoh: Jika ada obat baru yang akan dimasukkan/disisipkan, maka obat tersebut tidak dapat disisipkan ke dalam relasi sampai ada pasien yang mengambil jenis obat tersebut.

• Anomali Penghapusan(Deletion Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi penghapusan terhadap tuple/record dari sebuah relasi.
Contoh: Jika pasien yang memiliki No_Pasien P001 membatalkan tidak jadi menebus resep obat tersebut, maka jika record tersebut dihapus akan menyebabkan hilangnya informasi tentang Kode_Obat Kd01.

• Anomali Peremajaan(Update Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi perubahan tuple/record dari sebuah relasi.

Contoh: Jika harga obat untuk kode_obat Kd01 dinaikkan menjadi 5000, maka harus dilakukan beberapa kali modifikasi terhadap record-record pasien yang menebus kode_obat Kd01, agar data selalu tetap konsisten. 


7 Langkah Pembentukan Normalisasi :

1. Bentuk Tidak Normal (Unnormalized Form)
Merupakan kumpulan dari data yang akan direkam, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi, data dikumpulkan apa adanya sesuai dengan kedatangannya.

2. Bentuk Normal Kesatu (1NF / First Normal Form)
Menghilangkan beberapa elemen yang berulang agar menjadi suatu bernilai tunggal yang berinterigasi diantara setiap baris dan kolom pada suatu tabel.

3. Bentuk Normal Kedua (2NF / Second Normal Form)
Normalisai bentuk kedua telah memenuhi normalisasi bentuk pertama, setiap atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama (primary key), sehingga untuk membentuk normal kedua harus sudah ditentukan kunci field, kunci field haruslah unik dan tetap mewakili atribut yang lain yang menjadi anggotanya.

4.  Bentuk Normal Ketiga (3NF / Third Normal Form)
Untuk menjadi normal ketiga maka relasi haruslah dalam bentuk normal kedua dan semua atribut bukan primer tidak punya hubungan yang transitif dengan kata lain, setiap atribut bukan kunci haruslah bergantung pada primary key dan pada primary key  secara seluruh.

5.  Boyce-Code Normal Form (BCNF)
Bentuk yang mempunyai paksaan yang lebih kuat dari bentuk normal ketiga. Untuk menjadi BCNF, relasi dalam bentuk normal kesatu dan setiap atribut harus bergantung fungsi pada atribut super key.

6. Bentuk Normal Keempat (4NF / Fourth Normal Form)
Relasi R adalah bentuk normal keempat dan hanya relasi tersebut termasuk BCNF dan semua tergantung multi value adalah ketergantungan fungsional.

7. Bentuk Normal Kelima (5NF / Fifth Normal Form)
Berisi PJNF (Projection Join Normal Form) dan 4NF dilakukan dengan menghilangkan ketergantungan join yang bukan merupakan kunci kandidat.


























Contoh Kasus

Proses perancangan database dapat dimulai dari dokumen dasar yang dipakai dalam sistem, contoh:
PT. TEMPO, TBK

FAKTUR PEMBELIAN BARANG
JALAN KHATIB SULAIMAN 60



PADANG








Kode Supplier
: S02

Tanggal
: 22/04/2005
Nama Supplier
: Hitachi

Nomor
: 779
KODE
NAMA BARANG
QTY
HARGA
JUMLAH
R02
RICE COOKER CC3
10
150.000
1.500.000
TOTAL FAKTUR
1.500.000
Jatuh Tempo Faktur : 26/05/2005


PT. TEMPO, TBK

FAKTUR PEMBELIAN BARANG
JALAN KHATIB SULAIMAN 60



PADANG








Kode Supplier
: G01

Tanggal
: 24/04/2005
Nama Supplier
: Gobel Nusantara

Nomor
: 998
KODE
NAMA BARANG
QTY
HARGA
JUMLAH
A01
AC SPLIT ½ PK
10
1.350.000
13.500.000
A02
AC SPLIT 1 PK
5
2.000.000
10.000.000
TOTAL FAKTUR
23.500.000
Jatuh Tempo Faktur : 26/05/2005
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

  1. Step I bentuk Unnormalized
Bentuklah menjadi tabel unnormalized, dengan mencantumkan semua field yang ada. Tuliskan semua data yang akan direkam, bagian yang double tidak perlu dituliskan
Nofak
Kode Supp
Nama Supplier
Kode Brg
Nama Barang
Tanggal
Jatuh Tempo
QTY
Harga
Jumlah
Total
779
S02
HITACHI
R02
RICE COOKER CC3
22/04/2005
26/04/2005
10
150000
1500000
1500000
998
G01
GOBEL NUSANTARA
A01
AC SPLIT ½ PK
26/04/2005
26/04/2005
10
1350000
13500000
23500000
998
G01
GOBEL NUSANTARA
A02
AC SPLIT 1 PK
26/04/2005
26/04/2005
5
2000000
10000000










  1. Step II bentuk Normal Kesatu
Bentuklah menjadi bentuk normal kesatu dengan memisah-misahkan data pada field-field yang tepat dan bernilai atomic, juga seluruh record harus lengkap adanya. Bentuk file adalah flat file. Dengan bentuk normal kesatu ini telah dapat dibuat satu entity dengan 11 atribut yaitu:
Nofak
Kode Supp
Nama Supplier
Kode Brg
Nama Barang
Tanggal
Jatuh Tempo
QTY
Harga
Jumlah
Total
779
S02
HITACHI
R02
RICE COOKER CC3
22/04/2005
26/04/2005
10
150000
1500000
1500000
998
G01
GOBEL NUSANTARA
A01
AC SPLIT ½ PK
26/04/2005
26/04/2005
10
1350000
13500000
13500000
998
G01
GOBEL NUSANTARA
A02
AC SPLIT 1 PK
26/04/2005
26/04/2005
5
2000000
20000000
20000000

Namun bentuk normal kesatu ini masih banyak kelemahan yaitu:
a.    Inserting / penyisipan
Kita tidak dapat memasukkan kode dan nama supplier saja tanpa ada transaksi pembelian, sehingga supplier baru dapat masuk apabila ada transaksi pembelian
b.    Deleting / Penghapusan
Bila satu record diatas dihapus misalnya nomor faktur 779 maka berakibat pula penghapusan data supplier S02 (Hitachi), padahal data supplier tersebut masih dibutuhkan.
c.    Updating / Pengubahan
Kode dan nama supplier terlihat ditulis berkali-kali, bila suatu  ketika terjadi perubahan nama supplier misalnya maka harus mengganti disemua record yang mengandung hal tersebut. Bila ada yang terlewat maka membuat data tidak konsisten lagi.
d.    Redudancy
Field jumlah dan total diatas merupakan redudancy, karena setiap kali harga dikalikan dengan quantitas akan menghasilkan jumlah. Maka field tersebut dapatlah dibuang, bila tidak dibuang maka mengakibatkan tidak konsisten. Tidak konsisten disini diakibatkan karena bila ada perubahan harga, hanya data harga yang diubah, data jumlah tidak maka nilai jumlah tidak sama dengan quantity kali harga.
  1. Step III bentuk Normal Kedua
Pembentukan bentuk normal kedua dengan mencari kunci field yang dapat dipakai sebagai patokan dalam pencarian dan sifatnya unik. Melihat kondisi dari permasalahan faktur diatas dapat diambil kunci kandidat yaitu:
-       no faktur
-       kode supplier
-       kode barang
bentuklah tiga tabel dengan kunci tersebut, lihatlah ketergantungan fungsional field-field lain terhadap field kunci, maka didapat tabel sbb:







 




















Dengan pemecahan seperti diatas maka sebagian dari pertanyaan pengujian pada bentuk normal kesatu yaitu inserting, deleting, updating, dapat terjawab. Kode dan nama supplier baru dapat masuk kapanpun tanpa harus ada transaksi pada tabel nota, cukup dibuka tabel supplier dan disisipkan satu record baru. Demikian pula pada saat updating dan delete baik untuk tabel supplier dan juga tabel barang

Namun permasalahan masih ada yaitu pada tabel nota:
a.    field qty pada tabel tersebut tidak bergantung penuh pada kunci primer nomor nota, ia juga bergantung pada kode barang. Hal ini disebut sebagai kebergantungan yang transitif dan haruslah dipisahkan dalam dua tabel.
b.    Masih terdapat redudancy yaitu setiap kali satu nota terdiri dari 5 macam barang yang dibeli maka 5 kalipula di tuliskan no nota, tanggal nota, tempo. Ini harus pula dipisahkan bila terjadi penggandaan tulisan berulang-ulang.










  1. Step IV bentuk Normal Ketiga
Bentuk normal ketiga mempunyai syarat setiap tabel tidak mempunyai field yang bergantung transitif, harus bergantung penuh pada kunci utama.
Maka terbentuklah tabel sbb:


 























  1. Step V Pengujian dengan Contoh
Pengujian disini untuk memastikan kebenaran isi tabel dan hubungan antara tabel tersebut. Ujilah bahwa setiap tabel haruslah punya hubungan dengan tabel yang lainnya. Bila tidak ada hubungan antar tabel maka dapat dikatakan perancangan untuk membuat satu database adalah gagal.

Tabel Supplier
Kode Supp
Nama Supplier
G01
Gobel Nusantara
S02
Hitachi
Tabel Barang
Kode Barang
Nama Barang
Harga
R01
Rice Cooker CC3
150000
A01
AC Split ½ PK
1350000
A02
AC Split 1 PK
2000000


                   Tabel Nota
No Nota
Kode Supp
Tanggal
Tempo
779
S02
22/04/05
26/05/05
998
G01
22/04/05
26/05/05


                                Tabel transaksi
No Nota
Kode Barang
QTY
779
R01
10
998
A01
10
998
A02
10




  1. Step VI Hubungan Relasi antar Tabel
Gambarkan hubungan relasi antar entity yang ada :




 

















  1. satu supplier punya banyak nota
  2. satu nota punya beberapa transaksi barang
  3. satu barang terjadi beberapa kali transaksi pembelian


Sejauh mana Normalisasi Harus Dilakukan

Pertanyaan ini sering muncul atau dilontarkan oleh para mahasiswa dan praktisi-praktisi basis data. Tidak ada patokan dasar untuk itu. Pada dasarnya, kita harus terus melakukan langkah-langkah normalisasi sehingga kita tidak menemukan lagi anomali-anomali (baik anomali peremajaan, penyisipan dan penghapusan). Pada kenyataannya, normalisasi hingga ke 3NF seringkali sudah cukup memadai untuk menghilangkan anomali-anomali. Hanya kadang-kadang saja kita melangkah terus hingga ke BCNF dan 4NF, 5NF. Tetapi tidak ada standar baku sampai sejauh mana kita perlu melaksanakan langkah-langkah normalisasi. Pada prinsipnya lakukan normalisasi hingga anomali-anomali (peremajaan, penyisipan dan penghapusan) tidak ditemukan lagi.

                                                                                                          

Tidak ada komentar:

Posting Komentar