Pada artikel sebelumnya yang membahas tentang teknik random data MySQL, kita telah belajar bagaimana teknik dasar mengambil data secara random pada beberapa jenis bentuk data di MySQL, baik itu data berupa bilangan float, integer, data tanggal, dan juga data dari tabel.
Sedangkan pada artikel kali ini, kita akan menerapkan teknik random tersebut untuk mengenerate data dummy di MySQL. Keberadaan data dummy di sebuah database dapat dimanfaatkan untuk menguji performa sebuah aplikasi. Bagaimana performa aplikasi dalam memproses sejumlah data bisa dapat diketahui melalui data dummy tersebut.
Untuk memudahkan pembahasan pada artikel ini, akan diberikan sebuah studi kasus.
Studi kasus yang diberikan adalah sebagai berikut. Misalkan ada sebuah database untuk menyimpan data persewaan mobil, dengan struktur tabel seperti di bawah ini.
CREATE TABLE `mobil` (
`idMobil` char(3) NOT NULL,
`namaMobil` varchar(20),
PRIMARY KEY (`idMobil`)
);
CREATE TABLE `customer` (
`idCustomer` char(3) NOT NULL,
`namaCustomer` varchar(20),
PRIMARY KEY (`idCustomer`)
)
CREATE TABLE `rental` (
`idRental` int(11) NOT NULL AUTO_INCREMENT,
`idMobil` char(3),
`idCustomer` char(3),
`tglSewa` date,
`tglHarusKembali` date,
`tglKembali` date,
`terlambat` int(11),
PRIMARY KEY (`idRental`)
)
Database di atas terdiri dari tiga buah tabel, yaitu: mobil, customer, dan rental. Tabel mobil isinya adalah data-data mobil yang disewakan oleh rental mobil tersebut. Tabel customer berisi data customernya, dan tabel rental berisi data transaksi persewaannya.
Pada tabel rental, di situ terdapat field idMobil yang nantinya berisi data id mobil yang disewa, dan idCustomer berisi id customer si penyewa. Field tglSewa adalah tanggal kapan mobil tersebut disewa, tglHarusKembali adalah tanggal seharusnya mobil dikembalikan, atau dalam hal ini adalah batas tanggal maksimum penyewaan. Field tglKembali adalah tanggal mobil itu dikembalikan, serta field terlambat nantinya berisi jumlah hari keterlambatan.
Misalkan dalam kasus ini, terdapat ketentuan bahwa batas maksimum lama sewa adalah 4 hari. Sehingga untuk data pada field tglHarusKembali ini, nantinya secara otomatis akan terisi sebuah tanggal yang diperoleh dari tanggal mulai sewa ditambah 4 hari berikutnya. Selanjutnya, untuk data tanggal pengembalian yang ada di dalam field tglKembali, nantinya bisa terisi tanggal sebelum tanggal batas sewa maksimum selesai atau lebih dari batas tanggal sewa maksimum. Apabila tanggal kembalinya melebihi tanggal batas maksimum sewa maka ada jumlah hari keterlambatan yang dihitung dari jumlah hari selisih antara tanggal pengembalian dengan tanggal batas maksimum pengembalian.
Selanjutnya, misalkan kita telah memiliki data dummy untuk tabel mobil sebagai berikut.
dan untuk tabel customer seperti pada tampilan di bawah ini
Dari data dummy yang ada di dua tabel tersebut, kita akan mencoba mengenerate data dummy yang ada di tabel rental secara referensial dengan mengambil tabel mobil dan customer sebagai tabel utamanya. Dalam hal ini, untuk field idMobil di tabel rental datanya akan dipilih secara acak dari field idMobil yang ada di tabel mobil, dan field idCustomer di tabel rental akan dipilih random dari idCustomer di tabel customer. Adapun untuk field tglSewa misalkan akan dipilih tanggal secara random dari rentang waktu mulai tanggal 31 Desember 2021 sampai 30 hari ke belakang. Field tglHarusKembali diisi tanggal 4 hari setelah tglSewa. Field tglKembali juga diisi tanggal yang dipilih secara random dalam rentang interval 10 hari pasca tanggal sewa. Apabila tglKembali melebihi tglHarusKembali maka akan muncul jumlah hari keterlambatan di field terlambat. Namun jika tidak terlambat, maka field ini akan diisi dengan nol (0).
Sebagai bahan eksperimen, kita akan mencoba mengenerate data dummy sebanyak 1.000 record di tabel rental.
Untuk mengenerate data dummy dengan cepat, kita bisa menggunakan stored procedure, seperti perintah di bawah ini.
BEGIN
# deklarasi variabel dan tipe data yang diperlukan
DECLARE i, n, hariterlambat INT;
DECLARE mobil, customer CHAR(3);
DECLARE sewa, maxkembali, kembali DATE;
# inisialisasi nilai awal untuk increment i
SET i = 0;
# inisialisasi menyatakan banyaknya looping
SET n = 1000;
# looping 1000 kali
WHILE i < n DO
# merandom sebuah data idMobil di tabel mobil
SET mobil = (SELECT idMobil FROM mobil ORDER BY RAND() LIMIT 1);
# merandom sebuah data idCustomer dari tabel customer
SET customer = (SELECT idCustomer FROM customer ORDER BY RAND() LIMIT 1);
# merandom tanggal sewa mulai 31-12-2021 sampai 30 hari ke belakang
SET sewa = (SELECT '2021-12-31' - INTERVAL FLOOR(RAND() * 30) DAY);
# merandom tanggal kembali dalam rentang 10 hari dari tgl sewa
SET kembali = (SELECT sewa + INTERVAL FLOOR(RAND() * 10) DAY);
# mendapatkan tgl batas maksimum sewa, yaitu 4 hari dari tgl sewa
SET maxkembali = (SELECT sewa + INTERVAL 4 DAY);
# hitung selisih hari dari tgl kembali dan tgl batas kembali
SET hariterlambat = (SELECT DATEDIFF(kembali, maxkembali));
# jika selisih harinya tidak positif (tidak terlambat)
# maka set terlambatnya = 0
IF hariterlambat <= 0 THEN
SET hariterlambat = 0;
END IF;
# insert data dummy ke tabel rental
INSERT INTO rental (idMobil, idCustomer, tglSewa, tglHarusKembali, tglKembali, terlambat) VALUES (mobil, customer, sewa, maxkembali, kembali, hariterlambat);
# increment
SET i = i + 1;
END WHILE;
END
Apabila stored procedure (routine) di atas dijalankan, maka akan dihasilkan 1.000 buah record di tabel rental secara cepat dan otomatis seperti pada tampilan di bawah ini.
Mudah bukan membuatnya? 😀
Demikian artikel tentang cara membuat data dummy dengan menerapkan teknik random data di MySQL ini saya buat, semoga mudah dipahami dan bermanfaat. Jika ada pertanyaan tentang artikel ini, silakan ditanyakan di komentar.





