Sesuai dengan apa yang sudah diajarkan kepada anda dikelas,
silahkan pikirkan bagaimana cara untuk meng-create 10,000 transaction records.
Untuk permulaannya,
tantangannya adalah membuat 1000 record untuk transaksi
dengan waktu dari 1 Januari 2008 sampai dengan 31 Desember 2008
Gunakan fungsi random untuk mengcreatenya.
Buat yang pakai SQL Server, silahkan tulis di comment
apa nama fungsinya
Buat yang pakai Oracle, silahkan tulis juga di comment
apa nama fungsinya
Di postingan berikutnya saya akan tanyakan
bagaimana cara anda memasukkan data tersebut
Blogged with the Flock Browser
Tags: mssql server, online transaction system (oltp), oracle database






pak… mau nanya sedikit… beda nya random sama newid apa ya?
kok saya pake fungsi random ga jalan, tapi pake fungsi newid jalan…. >.<
mohon pencerahannya pak…
oh ya baru baca lagi…
untuk yang sql server nama fungsinya RAND()…
CMIIW….
untuk oracle nama fungsinya RANDOM(start end)
start = angka dimulai dari berapa
end = angka sampai berapa
bener ga??…c/o RANDOM(1 10)
berarti random antara 1 sampai 10
di oracle buat random pake DBMS_RANDOM.VALUE
coding di oracle.. tapi msh ada error-nya pak X(
//Kelompok Doraemon 06PBT
declare
tgl date:=sysdate;
tgl2 date:=’05-JUN-10′;
id,id2 number:=0;
counter number:=0;
a,b number;
counter2 number:=0;
cust varchar2(20);
brg varchar2(20);
begin
while tgl<tgl2
loop
while counter<floor(dbms_random.value(1,5))
loop
a=id;
id:=round(dbms_random.value(0,1),2);
if not id=a
if id<0.10 then
cust:=’Customer 1′;
elsif id<0.20 then
cust:=’Customer 2′;
elsif id<0.30 then
cust:=’Customer 3′;
elsif id<0.40 then
cust:=’Customer 4′;
elsif id<0.50 then
cust:=’Customer 5′;
elsif id<0.60 then
cust:=’Customer 6′;
elsif id<0.70 then
cust:=’Customer 7′;
elsif id<0.80 then
cust:=’Customer 8′;
elsif id<0.90 then
cust:=’Customer 9′;
elsif id<1.00 then
cust:=’Customer 10′;
end if;
while counter2<floor(dbms_random.value(1,4))
loop
b=id2;
id2:=round(dbms_random.value(0,1),2);
if not id2=b
if id2<0.25 then
brg:=’Cup240ml’;
elsif id2<0.50 then
brg:=’Botol600ml’;
elsif id2<0.75 then
brg:=’Botol1500ml’;
elsif id2<1.00 then
brg:=’Galon19liter’;
endif;
counter2:=counter2+1;
insert into MsTrans values (tgl,cust,brg,floor(dbms_random.value(1,5)));
endif;
end loop;
counter:=counter+1;
endif;
end loop;
tgl:=tgl+1;
end loop;
end;
Kel OracLe
import java.util.Random;
public class main {
private static String kode;
private static String nama;
private static String sales;
private static int harga;
private static int quantity;
public static void main(String[] args) {
for(int i=0;i<10000;i++){
System.out.println(“Insert into Transaksi values (T” + i + “, ” + genKdBarang() + “, ” + genNamaCust() + “, ” + genNamaSales() + “, ” + genQuantity() + “, ” + Total() + “)”);
}
System.out.println(“(KdTransaksi, KdBarang, Customer, Sales, Quantity, Total Harga”);
}
public static int genQuantity() {
Random rndm = new Random();
quantity = rndm.nextInt(100);
return quantity;
}
public static int Total() {
int tem = harga * quantity;
return tem;
}
public static String genKdBarang() {
Random rndm = new Random();
int r = rndm.nextInt(100);
if(r<=25){
kode = “B001 – Botol Aqua”;
harga = 1500;
}
else if(r<=50){
kode = “B002 – Aqua Gelas”;
harga = 500;
}
else if(r<=75){
kode = “B003 – Botol Aqua Kecil”;
harga = 1000;
}
else{
kode = “B004 – Galon Aqua”;
harga = 10000;
}
return kode;
}
public static String genNamaCust() {
Random rndm = new Random();
int r = rndm.nextInt(100);
if(r<=30){
nama = “Perusahaan 1″;
}
else if(r<=60) {
nama = “Perusahaan 2″;
}
else {
nama = “si acong”;
}
return nama;
}
public static String genNamaSales() {
Random rndm = new Random();
int r = rndm.nextInt(100);
if(r<=20) {
sales = “Karmila”;
}
else if(r<=40) {
sales = “Erika”;
}
else if(r<=60) {
sales = “O*J”;
}
else if(r<=80) {
sales = “Herry”;
}
else {
sales = “Ben Stiller”;
}
return sales;
}
}
*maaf pak, baru random angka saja…hehehe
Pak, saya langsung post di full-code nya ga apa2 kan?
thx..
/*Jawaban 1,000 random tanggal */
CREATE TABLE randomtgl
(
idRandomTgl NUMBER PRIMARY KEY,
tgl DATE
);
DECLARE
tglmin VARCHAR2(12) := ’01/01/2008′;
tglmax VARCHAR2(12) := ’31/12/2008′;
hasil VARCHAR2(25);
i NUMBER := 1;
BEGIN
LOOP
hasil := TO_DATE(ROUND(DBMS_RANDOM.VALUE(TO_CHAR(TO_DATE(tglmin, ‘dd/mm/yyyy’), ‘J’), TO_CHAR(TO_DATE(tglmax, ‘dd/mm/yyyy’), ‘J’))), ‘J’);
INSERT INTO randomtgl VALUES(i, hasil);
i := i + 1;
EXIT WHEN i > 10000;
END LOOP;
END;
/
pak, saya bingung…. Saya bisanya bt recordnya pke C++… maap pak, blom blajar lebih lanjut….
SET VERIFY OFF
SET SERVEROUTPUT ON
DECLARE
headerRow trheaderSO%ROWTYPE;
i NUMBER;
ctr NUMBER;
minDate VARCHAR2(50);
maxDate VARCHAR2(50);
kdCustRandom NUMBER;
kdSalesRandom NUMBER;
CURSOR custCur is
select kdCustomer from msCustomer;
CURSOR salesCur is
select kdsalesperson from mssalesperson;
TYPE recordCust IS RECORD
(
kdCust msCustomer.kdCustomer%TYPE
);
TYPE recordSales IS RECORD
(
kdSalesPerson mssalesperson.kdSalesPerson%TYPE
);
TYPE recordCustArr IS TABLE OF recordCust INDEX BY BINARY_INTEGER;
myCustArr recordCustArr;
TYPE recordSalesArr IS TABLE OF recordSales INDEX BY BINARY_INTEGER;
mySalesArr recordSalesArr;
cusNum NUMBER;
salesNum NUMBER;
BEGIN
i := 1;
cusNum := 0;
salesNum := 0;
OPEN custCur;
LOOP
FETCH custCur INTO myCustArr(cusNum).kdCust;
EXIT WHEN custCur%NOTFOUND;
–DBMS_OUTPUT.PUT_LINE(myCustArr(cusNum).kdCust);
cusNum := cusNum + 1;
END LOOP;
CLOSE custCur;
OPEN salesCur;
LOOP
FETCH salesCur INTO mySalesArr(salesNum).kdSalesPerson;
EXIT WHEN salesCur%NOTFOUND;
–DBMS_OUTPUT.PUT_LINE(mySalesArr(salesNum).kdSalesPerson);
salesNum := salesNum + 1;
END LOOP;
CLOSE salesCur;
LOOP
headerRow.noSO := ‘T’ || LPAD(i,4,’0′);
minDate := TO_CHAR(TO_DATE(’01/01/2009′,’MM/DD/YYYY’),’J');
maxDate := TO_CHAR(TO_DATE(’12/31/2009′,’MM/DD/YYYY’),’J');
headerRow.tglSO := TO_DATE(ROUND(DBMS_RANDOM.VALUE(minDate,maxDate)), ‘J’);
kdCustRandom := ROUND(DBMS_RANDOM.VALUE(0,cusNum-1));
kdSalesRandom := ROUND(DBMS_RANDOM.VALUE(0,salesNum-1));
–DBMS_OUTPUT.PUT_LINE(myCustArr(kdCustRandom).kdCust);
–DBMS_OUTPUT.PUT_LINE(mySalesArr(kdSalesRandom).kdSalesPerson);
INSERT INTO trheaderSO values(headerRow.noSO,headerRow.tglSO,myCustArr(kdCustRandom).kdCust,mySalesArr(kdSalesRandom).kdSalesPerson);
i := i + 1;
EXIT WHEN i > 15;
END LOOP;
END;
/