Halaman

Sabtu, 01 September 2012

Penggunaan Data Acak (Random) Pada Tabel MySQL

Penggunaan data acak (random) seringkali berguna jika dipakai sebagai data pengetesan suatu tabel pada suatu database MySQL. Artikel ini akan membahas secara ringkas penggunaan data acak yang akan menjadi data suatu field pada tabel MySQL.

Membuat nilai acak (random) pada query MySQL
Artikel ini disusun berdasarkan penjelasan mengenai kombinasi dari penggunaan fungsi RAND() dan FLOOR() yang ada pada artikel saya yang berjudul Membuat Nilai Acak (Random) pada Query MySQL. Jika Anda ingin mengetahui bagaimana cara membuat nilai acak dengan range nilai yang telah ditentukan, silakan baca artikel tersebut.

Implementasi dasar nilai acak pada suatu tabel
Saya anggap Anda telah mengetahui bagaimana suatu nilai acak dibuat berikut range nilai batas atas dan batas bawah dari nilai acak yang diinginkan. Jika belum paham, silakan kunjungi link di atas.

Pada dasarnya perintah query UPDATE dapat dipakai untuk memberikan nilai acak ke dalam field suatu tabel. Jika semua data ingin diberi nilai acak maka abaikan penggunaan perintah WHERE.

Peritah query UPDATE memiliki bentuk dasar:
UPDATE tabel SET field = data_baru WHERE field_acuan = data_acuan
Jika perintah WHERE dihapus, misalnya jadi seperti ini:
UPDATE tabel SET field = data_baru
Maka secara otomatis semua data pada field di dalam tabel tersebut akan diubah datanya dengan nilai atau data yang baru. Berdasarkan mekanisme ini maka seandainya bila data yang baru adalah nilai acak, maka tiap baris pada field tersebut akan memiliki nilai yang berbeda-beda (data acak). Misalnya perintah query yang dilakukan untuk mengupdate data pada field nilai dilakukan satu per satu seperti ini:
UPDATE data_nilai SET nilai = 99 WHERE nis = 1000 AND id_mapel = 1
UPDATE data_nilai SET nilai = 45 WHERE nis = 1001 AND id_mapel = 1
UPDATE data_nilai SET nilai = 36 WHERE nis = 1002 AND id_mapel = 1
UPDATE data_nilai SET nilai = 81 WHERE nis = 1003 AND id_mapel = 1
UPDATE data_nilai SET nilai = 10 WHERE nis = 1004 AND id_mapel = 1
. . . .
. . . .
UPDATE data_nilai SET nilai = 25 WHERE nis = 2000 AND id_mapel = 1
Tentu tidak praktis jika datanya ada ratusan bahkan ribuan kemudian data dimasukan satu per satu seperti perintah query di atas.

Solusinya jika data acak dipakai untuk keperluan ini maka dapat dibuat sebuah perintah query seperti berikut:
UPDATE data_nilai SET nilai = FLOOR(RAND() * 101)
Misal ada seribu buah data dari nomor induk siswa (nis) 1001-2000, maka perintah query di atas akan mengganti semua data pada field nilai dengan nilai acak 0 sampai 100.

Implementasi pada tiga tabel yang berelasi
Misalnya ada tiga tabel yang saling berkaitan yaitu tabel siswa dan tabel mata pelajaran (mapel) dan tabel nilai pelajaran per siswa (data_nilai). Untuk lebih jelasnya, berikut gambaran struktur tabelnya:


Struktur tabel siswa, mata pelajaran, dan nilai


Sekarang yang jadi fokus adalah tabel data_nilai yang menampung data siswa dan data mata pelajaran. Pada saat membuat tabelnya, field atau kolom nilai di set ke NULL sehingga data nilai bisa dikosongi dahulu. Setelah data pada field nis dan id_mapel dimasukan ke dalam tabel data_nilai ini, maka selanjutnya tinggal mengupdate data nilai yang masih bernilai NULL tersebut dengan data acak 0 - 100 menggunakan sebuah perintah query berikut:
UPDATE data_nilai SET nilai = FLOOR(RAND() * 101)
Perintah di atas akan membuat semua data pada field nilai di dalam tabel data_nilai bernilai bilangan bulat acak dari 0 - 100. Perubahan yang terjadi dapat dilihat pada gambar di bawah ini:


Perubahan data field nilai sebelum dan sesudah data acak dilakukan


Untuk melihat hasil keseluruhannya, perintah query INNER JOIN dapat digunakan untuk merelasikan ketiga tabel tersebut, contoh penggunaannya:
SELECT siswa.nis, siswa.nama, mapel.nama AS mapel, nilai FROM siswa 
  INNER JOIN data_nilai ON siswa.nis = data_nilai.nis 
  INNER JOIN mapel ON id = id_mapel 
  WHERE mapel.nama = 'Komputer';
Perintah di atas akan menghasilkan tampilan tabel berikut:


Data hasil relasi ketiga tabel setelah data acak dimasukan


Semoga bermanfaat... keep learning by doing...

© 2012 husnanlabs.blogspot.com

Tidak ada komentar:

Posting Komentar