Cara Cepat Merestrukturisasi Tabel dan Data
Dalam sistem penilaian yang diminta, terdapat beberapa item penilaian, secara sederhana katakanlah A, B, C, dan D. Masing-masing item tersebut nantinya akan diisi nilai tertentu berdasarkan portofolio guru yang dinilai oleh asesor.
Pada awal mulanya, saya coba rancang tabel untuk menyimpan nilai dari item-item tersebut sebagai berikut
Kode Guru | Item | Nilai |
K001 | A | 70 |
K001 | B | 10 |
K001 | C | 25 |
K001 | D | 40 |
K002 | A | 55 |
K002 | B | 50 |
K002 | C | 42 |
K002 | D | 60 |
Feeling saya mengatakan, pasti ada sesuatu dari sisi scriptingnya. Setelah melalui proses pengecekan ulang terhadap efisiensi scripting disertai dengan bantuan anggota tim yang lain, scripting tidak ada masalah. Beberapa algoritma yang tadinya kurang begitu simpel, akhirnya dibuat menjadi lebih simpel. Namun… masalah yang sama kembali muncul.
Wah… ada apa gerangan.. apakah dari sisi networkingnya yang membuat prosesnya lambat, mungkin ada virus yang mem-flood jaringan? Setelah dicek juga tidak ada masalah dari sisi networking.
Akhirnya… setelah merenung beberapa saat, dan berdiskusi dengan tim maka feeling kami mengatakan “there’s something wrong with the database”. Apakah masalah ini disebabkan oleh struktur tabel yang tidak efisien? Selanjutnya kami mencoba merestrukturisasi tabel penilaian di atas. Kami mencoba mengubah struktur tabel tersebut menjadi seperti di bawah ini
Kode Guru | A | B | C | D |
K001 | 70 | 10 | 25 | 40 |
K002 | 55 | 50 | 42 | 60 |
Apakah dengan analisis tersebut bisa membawa efek yang signifikan terhadap kinerja proses dari sistem? Kita coba bereksperimen dengan ide tersebut.
Trus… bagaimana dengan data yang sudah telanjur dimasukkan ke tabel pertama yang sudah ada sekitar 30% dari 8000 guru atau kira-kira 2000 x 4 = 8000 an record dari 32000 record total. Untuk mengulangi lagi entri dari awal, jelas tidak mungkin. Dipindahkan satu persatu data ke dalam struktur tabel yang baru juga sangat tidak mungkin karena datanya ribuan. Akhirnya kami coba pakai script PHP untuk proses restrukturisasi data dan tabel ini.
Langkah restrukturisasi ini, saya bagi ke dalam 2 tahap. Tahap pertama saya akan coba mengambil data semua kode guru yang telah tersimpan dalam tabel yang lama, selanjutnya saya pindahkan ke tabel yang baru. Pada tahap ini, nilai untuk masing-masing item saya urus belakangan.
Adapun script yang saya buat untuk memindahkan data kode guru adalah sebagai berikut:
01.
<?php
02.
03.
// koneksi ke db
04.
05.
$query
=
"SELECT DISTINCT kodeguru FROM tabel_lama"
;
06.
$hasil
= mysql_query(
$query
);
07.
while
(
$data
= mysql_fetch_array(
$hasil
))
08.
{
09.
$kodeGuru
=
$data
[
'kodeguru'
];
10.
$query2
=
"INSERT INTO tabel_baru(kodeguru) VALUES = '$kodeGuru'"
;
11.
mysql_query(
$query2
);
12.
}
13.
14.
?>
Kode Guru | A | B | C | D |
K001 | 0 | 0 | 0 | 0 |
K002 | 0 | 0 | 0 | 0 |
Sekarang menginjak tahap ke dua yaitu memindahkan nilai-nilai setiap item dari tabel lama ke tabel baru. Untuk tahap ini, idenya hanya menggunakan proses update data saja pada tabel yang baru berdasarkan kode guru masing-masing.
Berikut ini script yang saya gunakan
01.
<?php
02.
03.
// koneksi ke db
04.
05.
$query
=
"SELECT * FROM tabel_lama"
;
06.
$hasil
= mysql_query(
$query
);
07.
while
(
$data
= mysql_fetch_array(
$hasil
))
08.
{
09.
$kodeGuru
=
$data
[
'kodeguru'
];
10.
$item
=
$data
[
'item'
];
11.
$nilai
=
$data
[
'nilai'
];
12.
if
(
$item
==
"A"
)
$query2
=
"UPDATE tabel_baru SET A = $nilai WHERE kodeguru = '$kodeGuru'"
;
13.
else
if
(
$item
==
"B"
)
$query2
=
"UPDATE tabel_baru SET B = $nilai WHERE kodeguru = '$kodeGuru'"
;
14.
else
if
(
$item
==
"C"
)
$query2
=
"UPDATE tabel_baru SET C = $nilai WHERE kodeguru = '$kodeGuru'"
;
15.
else
if
(
$item
==
"D"
)
$query2
=
"UPDATE tabel_baru SET D = $nilai WHERE kodeguru = '$kodeGuru'"
;
16.
mysql_query(
$query2
);
17.
}
18.
19.
?>
Sumber: http://blog.rosihanari.net/cara-cepat-merestrukturisasi-tabel-dan-data/
Comments
Post a Comment