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 tglKembal
i 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.
The post Cara Mudah Membuat Data Dummy dengan Teknik Random di MySQL first appeared on Rosihan Ari’s Blog.