Social Icons

Pages

Minggu, 17 Februari 2013

Normalisasi dan Denormalisasi Data


Basis data dapat diumpamakan sama dengan lemari arsip data. Dengan adanya basis data kita jadi lebih gampang untuk menyampaikan informasi yang tersimpan dalam lemari arsip data. Penyampaian informasi melalui basis data selalu dibuat sesimpel dan seringkas mungkin serta tidak menhilangkan informasi yang ingin disampaikan. Bentuk penyampai informasi seperti ini biasanya dilakukan pada sebuah bentuk tabel yang disebut tabel Universal. 
Tabel universal menyampaikan semua informasi yang ada seringkas mungkin dan tanpa menhilangkan satupun informasi. Tetapi kita sering tidak melihat data atau informasi yang tertera pada tabel Universal. Supaya kita dapat melihat informasi yang tertera pada tabel universal sehingga tidak ada data yang tidak terbaca atau data tertambah, yang bukan merupakan sebuah data yang tertera pada tabel universal. Maka kita lakukan dengan cara menormalisasi data tersebut.

Pengertian Normalisasi Data
Sebuah upaya untuk memperoleh sebuah basis data dengan struktur yang baik (ruang penyimpanan yang efisien) dengan cara menerapkan sejumlah aturan (bentuk normal) pada setiap tabel yang menjadi anggota basis data tersebut. 
Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). 


Tahapan dalam Normalisasi Data

a) Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)
Aturan : 
- Tidak adanya atribut multi-value, atribut komposit atau kombinasinya.
- Mendefinisikan atribut kunci.
- Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi) 

b) Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)
Aturan : 
- Sudah memenuhi dalam bentuk normal kesatu (1NF)
- Semua atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci 
- Jika ada ketergantungan  parsial maka atribut tersebut harus dipisah pada tabel yang lain
- Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi
c) Bentuk Normal Tahap (3rd Normal Form / 3NF)
Aturan : 
-  Sudah berada dalam bentuk normal kedua (2NF)
- Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya). 
d) Boyce-Code Normal Form (BCNF)
e) Bentuk Normal Tahap (4th Normal Form / 4NF)
- Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute 
- Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies
f) Bentuk Normal Tahap (5th Normal Form / 5NF)
- Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah lossless decomposition menjadi tabel-tabel yg lebih kecil.
- Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula 

Contoh Penerapan Normalisasi Data

Contoh dokumen mengenai faktur pembelian barang pada PT. Revanda Jaya.
Tahapan Normalisasi Database pada PT. Revanda Jaya
a) Bentuk Unnormalisasi
Mencantumkan semua atribut dengan apa adanya :
- Nomor_Faktur
- Kode_Supplier
- Nama_Supplier
- Kode_Barang
- Nama_Barang
- Tanggal
- Jatuh_Tempo
- Quantity
- Harga
- Jumlah

b) Bentuk normal pertama (1NF)
Dengan bentuk normal pertama akan terbuat sebuah tabel yang terdiri dari 10 atribut, yaitu :
(No_Faktur, Kode_Supplier, Nama_Supplier, Kode_Barang, Nama_Barang, Tanggal, Jatuh_Tempo, Qty, Harga, Jumlah)
No_Fak : 779,998,998
Kode_Supplier : S02,G01,G01
Nama_Supplier : Hitachi,Gobel,Gobel
Kode_Barang : R02,A01,A02
Nama_Barang : Ricechoker C3,AC Split ½ PK,AC Split 1 PK
Tanggal : 02/02/01,07/02/01,07/02/01
Jatuh_Tempo : 09/03/01,09/03/01,09/03/01
Qty : 10,10,10
Harga : 15000000,13500000,20000000
Jumlah : 15000000,33500000,33500000
Pada bentuk normal pertama masih terdapat banyak kekurangan pada proses anomali, insert, update, dan delete. Pada proses Inserting/Penyisipan tidak bisa dengan memasukkan kode dan nama supplier saja tanpa adanya transaksi pembelian. Pada proses Delete/Penghapusan jika suatu record/data dihapus contohnya nomor faktur 779, maka berakibat pada penghapusan data supplier S02 (Hittchi) padahal data tersebut masih dibutuhkan. Pada proses Update/Pengubahan kode dan nama supplier ditulis berkali-kali, bila nama supplier berubah, maka disetiap baris yang ada harus dirubah, bila tidak menjadi tidak konsisten.

c) Bentuk normal kedua (2NF)
Bentuk normal kedua dengan melakukan dekomposisi relasi diatas menjadi beberapa relasi dan mencari kunci primer dari tiap-tiap relasi dan atribut kunci haruslah unik. Beberapa kunci kandidat adalah No_faktur, kode_supplier dan kode_barang. Kunci kandidat tersebut nantinya bisa menjadi kunci primer pada relasi hasil dekomposisi. Berdasarkan bentuk normal pertama dapat idekomposisikan menjadi tiga relasi beserta kunci primernya yaitu : relasi supplier (kode_supplier), relasi barang (kode_barang), dan relasi faktur (no_faktur).
Relasi Supplier
Kode_Supplier : S02,G01,G01
Nama_Supplier : Hitachi,Gobel Nustra
Relasi Barang
Kode_Barang :R02,A01,A02
Nama_Barang :Ricechocker C3,AC Split ½ PK,AC Split 1 PK
Harga :15.000.000,13.500.000,20.000.000
Kamus data dari masing-masing relasi diatas adalah :
Supplier = {Kode_Supplier,Nama_Supplier}
Barang = {Kode_Barang,Nama_Barang,Harga}
Faktur = {No_Faktur,Kode_Barang,Kode_Supplier,Tanggal,Jatuh_Tempo,Qty}

d) Bentuk normal ketiga (3NF)
Kamus data dari masing-masing relasi diatas adalah :
Supplier = {Kode_Supplier,Nama_Supplier}
Barang = {Kode_Barang,Nama_Barang,Harga}
Faktur = {No_Faktur, Kode_Supplier,Tanggal,Jatuh_Tempo}
Faktur_Barang ={ No_Faktur ,Kode_Barang,Qty}

e) Entity Relationship Diagram :
Supplier ke faktur relasinya adalah one to many karena satu supplier mempunyai banyak faktur, dan faktur mempunyai relasi terhadap supplier.
Faktur ke transaksi barang relasinya adalah one to many karena satu faktur mempunyai beberapa transaksi barang.
Barang ke transaksi_barang relasinya adalah one to many karena satu barang bisa terjadi beberapa kali pembelian barang

Pengertian Denormalisasi Data
Pelanggaran Normalisasi basis data disebut dengan Denormalisasi. Satu-satunya alasan mengapa kita boleh melakukan denormalisasi adalah pertimbangan performansi.  Jika performansi yang kita peroleh bisa menjadi jauh lebih baik, maka normalisasi yang telah dilakukan cukup beralasan untuk dilanggar.

Tahapan dalam Denormalisasi Data

a) Atribut yang terderivasi (atribut turunan)
Atribut yang nilainya bisa diperoleh dari nilai-nilai yang sudah ada pada atribut lain.
b) Atribut yang berlebihan
Atribut terkodekan
Atribut yang memiliki kode tambahan yang menunjukkan beberapa kondisi lainnya
Atribut Gabungan
Atribut dalam domain komposit.

Atribut Tumpang-Tindih
Atribut dengan nilai yang tidak sepenuhnya ekslusif.

Atribut Bermakna Ganda
Atribut yang memiliki arti berbeda tergantung kelompok entitasnya.

c) Tabel rekapitulasi (summary table)
- Laporan hasil rekapitulasi akan selalu merupakan hasil pengolahan dari semua tabel yang ada.
- Pengolahan tersebut melibatkan banyak tabel sehingga akan membutuhkan waktu yang lama.
- Jika hal tersebut sering diakses dan diperlukan, maka perlu dibuat tabel khusus untuk menyimpan data hasil rekapitulasi tersebut.

Contoh Penerapan Denormalisasi Data

Berikut adalah screenshot contoh sumber data yang digunakan, berupa file spreadsheet Excel. Kita akan mendenormalisasikan row data "Bulan" dengan nilai 1,2,3 dan seterusnya menjadi field Januari, Februari, Maret, dstnya. Untuk isi dari field tersebut kita mengambil nilai dari field "Nilai Penjualan".
 Key Field
Untuk denormalisasi, kita memerlukan informasi "Key Field", yaitu field yang berisi nilai-nilai yang kemudian akan dijadikan field baru. Pada contoh kita maka "Key Field" adalah bulan dengan nilai-nilai yang akan di-map menjadi field sebagai berikut :
Nilai "1" menjadi field "Januari"
Nilai "2" menjadi field "Febuari"
dan seterusnya
Value Fieldname
Selain "Key Field", maka kita juga memerlukan "Value Fieldname", dimana field tersebut akan dihilangkan dan nilai dari field tersebut akan menjadi nilai dari field baru (hasil mapping dari "Key Field"). Dari contoh di atas, "Value Fieldname" kita adalah "Nilai Penjualan" dimana  :
100 akan menjadi nilai dari "Januari" untuk kode produk 'Kode-001' dan nama barang 'Kacang Mete'
200 akan menjadi nilai dari "Februari" untuk kode produk 'Kode-001' dan nama barang 'Kacang Mete'
dan seterusnya
Step "Row Denormaliser" dan "Grouping Fields"
Dengan kedua konsep key tersebut kita tidak akan kesulitan menggunakan step denormalisasi data, yaitu "Row Denormaliser". Namun ada persyaratan lagi untuk penggunaan step ini, yakni semua field yang terlibat selain "Key Field" dan  "Value Fieldname" harus diurutkan terlebih dahulu. Kumpulan field ini sering disebut sebagai "Grouping Fields" atau "Grouping Keys".
Pada contoh kita, maka grouping fields kita adalah field "Kode" dan "Nama Barang".

Boyce-Codde Method

- Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap functional dependency terhadap setiap atribut atau gabungan atribut dalam bentuk: X à Y maka X adalah super key 
- tabel tersebut harus didekomposisi berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi 
- Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency X à A, BCNF tidak membolehkan A sebagai bagian dari primary key.


0 komentar:

Posting Komentar