You are on page 1of 6

Skenario Lab3 TSBD

Data: X, Y, Z=2X 10 + 3X 9 Y + 4X 8 Y 2 + 5X 7 Y 3 + 6X 6 Y 4 + 7X 5 Y 5 + 6X 4 Y 6 + 5X 3 Y 7 + 4X 2 Y 8 + 3XY 9 + 2Y 10 1. Buat tabel XYZ1 dengan data berikut: TIPE NUMBER NUMBER NUMBER PANJANG NULLITY KETERANGAN NOT NULL PK NOT NULL NOT NULL

KOLOM ID X Y

CREATE TABLE XYZ1 ( ID NUMBER NOT NULL, X NUMBER NOT NULL, Y NUMBER NOT NULL, CONSTRAINT XYZ1_PK PRIMARY KEY (ID) );

2.

Generate data dummy!

BEGIN FOR I IN 1 .. 999999 LOOP INSERT INTO XYZ1 VALUES(I,MOD(I,9)+1,MOD(I,8)+1); END LOOP; END;

3.

Buat kode PHP pada file getSumZ.php yang menghitung jumlah Z, dan menampilkan waktu prosesnya. Jalankan melalui browser pada server lokal!

<?php

ini_set('max_execution_time',600); error_reporting(0); $username = "mtib"; $password = "tsbd"; $conn = oci_connect($username, $password); $start=time(); echo getSumZ1($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; $start=time(); echo getSumZ2($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; function getSumZ1($conn) { $stmt = oci_parse($conn, "SELECT X,Y FROM XYZ1"); oci_execute($stmt, OCI_DEFAULT); $sumZ = 0; while ($row = oci_fetch_assoc($stmt)) { $x = $row["X"]; $y = $row["Y"]; $z = 2 * pow($x,10) * pow($y,0) + 3 * pow($x,9) * pow($y,1) + 4 * pow($x,8) * pow($y,2) + 5 * pow($x,7) * pow($y,3) + 6 * pow($x,6) * pow($y,4) + 7 * pow($x,5) * pow($y,5) + 6 * pow($x,4) * pow($y,6) + 5 * pow($x,3) * pow($y,7) + 4 * pow($x,2) * pow($y,8) + 3 * pow($x,1) * pow($y,9) + 2 * pow($x,0) * pow($y,10); $sumZ += $z; } return $sumZ; } function getSumZ2($conn) { $stmt = oci_parse($conn, "SELECT SUM(

2*POWER(X,10)*POWER(Y,0) + 3*POWER(X,9)*POWER(Y,1) + 4*POWER(X,8)*POWER(Y,2) + 5*POWER(X,7)*POWER(Y,3) + 6*POWER(X,6)*POWER(Y,4) + 7*POWER(X,5)*POWER(Y,5) + 6*POWER(X,4)*POWER(Y,6) + 5*POWER(X,3)*POWER(Y,7) + 4*POWER(X,2)*POWER(Y,8) + 3*POWER(X,1)*POWER(Y,9) + 2*POWER(X,0)*POWER(Y,10) ) AS SUMZ2 FROM XYZ1"); oci_execute($stmt, OCI_DEFAULT); $row = oci_fetch_assoc($stmt); $sumZ = $row["SUMZ2"]; return $sumZ; } ?>

4.

Buat tabel XYZ2 dengan data berikut: TIPE NUMBER NUMBER NUMBER NUMBER PANJANG NULLITY KETERANGAN NOT NULL PK NOT NULL NOT NULL NOT NULL

KOLOM ID X Y Z

CREATE TABLE XYZ2 ( ID NUMBER NOT NULL, X NUMBER NOT NULL, Y NUMBER NOT NULL, Z NUMBER NOT NULL, CONSTRAINT XYZ2_PK PRIMARY KEY (ID) );

5.

Buat Trigger untuk set Z otomatis.

CREATE OR REPLACE TRIGGER "XYZ2_T1" BEFORE insert on "XYZ2" for each row begin :NEW.Z := 2*POWER(:NEW.X,10)*POWER(:NEW.Y,0) + 3*POWER(:NEW.X,9)*POWER(:NEW.Y,1) + 4*POWER(:NEW.X,8)*POWER(:NEW.Y,2) + 5*POWER(:NEW.X,7)*POWER(:NEW.Y,3) + 6*POWER(:NEW.X,6)*POWER(:NEW.Y,4) + 7*POWER(:NEW.X,5)*POWER(:NEW.Y,5) + 6*POWER(:NEW.X,4)*POWER(:NEW.Y,6) + 5*POWER(:NEW.X,3)*POWER(:NEW.Y,7) + 4*POWER(:NEW.X,2)*POWER(:NEW.Y,8) +

3*POWER(:NEW.X,1)*POWER(:NEW.Y,9) + 2*POWER(:NEW.X,0)*POWER(:NEW.Y,10); end;

6.

Generate data dummy

BEGIN FOR I IN 1 .. 999999 LOOP INSERT INTO XYZ2

VALUES(I,MOD(I,9)+1,MOD(I,8)+1,NULL); END LOOP; END;

7.

Tambahkan code berikut pada file getSumZ.php dan refresh file tersebut di browser.

$start=time(); echo getSumZ3($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; function getSumZ3($conn) { $stmt = oci_parse($conn, "SELECT SUM(Z) AS SUMZ3 FROM XYZ2"); oci_execute($stmt, OCI_DEFAULT);

$row = oci_fetch_assoc($stmt); $sumZ = $row["SUMZ3"]; return $sumZ; }

8.

Coba jalankan query pada fungsi getSumZ2 dan getSumZ3 pada oracle web interface dan perhatikan waktu responsnya!

9.

Kesimpulan apa yang bisa diambil dari langkah-langkah di atas?

You might also like