MENGATASI DUPLIKASI DATA DALAM QUERY



MENGATASI DUPLIKASI DATA DALAM QUERY

Dalam mengotak-atik query, terkadang kita harus menggunakan beberapa tabel dalam database. Dan tentu saja, dari masing-masing tabel terdapat key yang identik, sehingga tabel-tabel bisa saling dihubungkan.Anggap Anda telah memahami tentang penjoinan tabel. Nah, masalah yang sering muncul adalah, duplikasi data pada query. Ya, duplikasi ini bisa disebabkan beberapa hal. Misalkan dua tabel yang dihubungkan tidak memiliki key yang unik. Pemasangan non-unique key memang bisa dilakukan. Namun, resiko ada data kembar kemungkinan besar terjadi.
           Kedua, tidak adanya key penghubung yang cukup kuat. Dalam kasus tabel dengan banyak field, kita sering menemui adanya lebih daru satu primary key yang bisa dimanfaatkan. Nah, kesalahan yang sering terjadi adalah, kita tidak memasangkan cukup banyak atau spesifik dari key tabel satu ke tabel lainnya.
Pahit nih...
       Untuk database dengan sedikit tabel, field, dan data, tentu relatif mudah dalam memeriksa atau menelusuri penyebab terjadinya duplikasi. Tapih, bagaimana kalau database sudah complicated secara struktur dan isiny?. Aduh, perlu kerja keras sekeras-kerasnya...
Beberapa tips untuk mengatasi data kembar dalam melakukan query. Dimulai dari tindakan pencegahan dulu.
Pertama, selalu upayakan tiap tabel paling tidak memiliki satu unique primary key, yang menjadi 'identitas' dari sang tabel.  Dengan kata lain, pastikan ada satu field yang isinya tidak pernah sama meski data menjulang hingga ribuan.
Kedua, membuat strukturasi antar tabel dengan jelas dan mudah ditelaah. Ini gampang diomongin tapi sedikit sulit diterapkan. Kita harus bisa memilah tiap tabel sesuai dengan fungsinya, pastikan untuk meminimalisir pemborosan kolom. Dalam istilah kerennya sering disingkat normalisasi database. Pasti pernah dengar normalisasi waduk di Jakarta,'kan? Nah, mirip-mirip kok. Hehehe...
          Tujuannya adalah sama-sama menghilangkan jumlah data yang berlebihan. Jika satu kolom bisa dipakai untuk dependency banyak tabel, kenapa harus memasukkan kolom itu disetiap tabel? Tentunya akan membengkakkan kapasitas tabel. Kalau datanya cuma puluhan mungkin tak terasa. Tapi di instansi besar yang memiliki data hingga puluhan hingga ratusan ribu, ini hal sentimen yang kudu diperhatikan.
Nah, sekarang dari tindakan non-preventif.
Tips untuk menghilangkan data ganda pada query adalah dengan pemakaian distinct.
Syntax :
select distinct bla bla bla...
Mudah 'kan?
Yang perlu dilakukan hanyalah menempatkan kata distinct setelah select. Distinct sendiri berasal dari bahasa Inggris yang artinya jelas, terang, atau berbeda. Nah, dengan adanya command ini, maka query akan memproses data yang pure beda.
Contoh data tanpa distinct:
Select nama_pegawai, nomor_induk, status from tpegawai
Maka muncul hasil seperti di bawah :
Nama_pegawai
Nomor_induk
Status
John
12300
Lajang
Herman
12301
Duda
Budi
12302
Lajang
Anduk
12303
Menikah
Budi
2302
Lajang

Perhatikan. Dari contoh di atas, terdapat dua data Budi. Hal ini bisa terjadi karena salah input dua kali, atau join table yang kurang tepat. (Dalam kasus ini hanya memakai satu tabel, jadi tidak ada join).
Wah, gak lucu dong kalau muncul data dua kali. Untuk itu, kita bisa menambahkan perintah distinct setelah select sehingga hasil query menjadi :
Nama_pegawai
Nomor_induk
Status
John
12300
Lajang
Herman
12301
Duda
Budi
12302
Lajang
Anduk
12303
Menikah

Lihat, hanya tinggal ada 4 row. Data yang duplikat telah lenyap dan yang muncul hanyalah data yang memang berbeda. Eitss.. Ada beberapa hal yang perlu diperhatikan dalam pemakaian distinct.
1.      Distinct tidak menghapus data di tabel. Ya, distinct hanya 'menghilangkan' data dobel di query. Sedangkan di source aslinya tetap ada ganda. Distinct tidak menghilangkan duplikasi satu kolom saja. Ya, lihat dari contoh di atas. Ada 3 buah kolom dan 4 row yang muncul.
Contohnya :
Nama_pegawai
Jenis_kelamin
Umur
Budi
Pria
27
Budi
Pria
27
Budi
Pria
25
Dari contoh itu, maka yang dimaksud duplikat adalah nomor 1 dan 2. Kenapa? Karena datanya sama! Dari kolom 1 hingga akhir tidak ada yang berbeda. Sementara itu, meski data nomor tiga Budi dan Prianya sama dengan yang lain. Tapi tidak dianggap duplikasi. Karena ada kolom lain yang berbeda, yaitu umurnya 25. Jadi, distinct melakukan pengecekan duplikasi tidak per kolom. Tapi menyeluruh semua kolom pada tiap row.
Insya Allah, semoga sedikit informasi ini dapat bermanfaat!

0 Response to "MENGATASI DUPLIKASI DATA DALAM QUERY"

Post a Comment