Anda di halaman 1dari 23

LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER

UNIVERSITAS BRAWIJAYA

NAMA : MUHAMMAD ADZINUL HAKIM


NIM : 215150601111007
KELAS : PTI - A
BAB : IV – Database Object 2
ASISTEN : Muhammad Helmi Yahya & Rizka Saudah Yunida Putri

1. Langkah 1
1.1 Query
su - db2inst1
db2sampl -name SAMPLEDB

1.2 Screenshot

Membuat database SAMPLEDB

1.3 Penjelasan
Langkah pertama, buat database sample baru dalam linux CentOS dan berikan nama
SAMPLEDB.

2. Langkah 2
2.1 Query
-

2.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 1


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Membuat Connection database baru ke SAMPLEDB

2.3 Penjelasan
Kemudian, buka Data Studio dan akses database yang telah dibuat dengan membuat koneksi
baru pada database SAMPLEDB. Apabila berhasil akan muncul notifikasi connection success.

3. Langkah 3
3.1 Query
CREATE VIEW SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT
AS
SELECT D.DEPTNO, D.DEPTNAME, COUNT(E.EMPNO) TOTAL
FROM DB2INST1.EMPLOYEE E
RIGHT JOIN
DB2INST1.DEPARTMENT D
ON E.WORKDEPT = D.DEPTNO
GROUP BY D.DEPTNO, D.DEPTNAME;

3.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 2


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

History SQL Membuat view REKAPITULASI_EMPLOYEE_DEPARTEMENT

Status SQL Membuat view REKAPITULASI_EMPLOYEE_DEPARTEMENT

3.3 Penjelasan
Selanjutnya, kita membuat view dengan nama SUMMARY.REKAPITULASI_EMPLOYEE-
DEPARTEMENT yang bertujuan untuk menunjukkan dan menyajikan data dari DEPTNO,
DEPTNAME, dan TOTAL.

4. Langkah 4
4.1 Query
SELECT *
FROM SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT;

4.2 Screenshot

History SQL Mengakases Data View REKAPITULASI_EMPLOYEE_DEPARTMENT

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 3


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Mengakases Data View REKAPITULASI_EMPLOYEE_DEPARTMENT

Result SQL Mengakases Data View REKAPITULASI_EMPLOYEE_DEPARTMENT

4.3 Penjelasan
Pada Langkah ini, kita menampilkan Data dari View
SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT menggunakan SELECT yang
menunjukkan DEPTNO, DEPTNAME, dan TOTAL.

5. Langkah 5
5.1 Query
CREATE TABLE DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT
AS
(SELECT D.DEPTNO, D.DEPTNAME, COUNT(E.EMPNO) TOTAL
FROM DB2INST1.EMPLOYEE E
RIGHT JOIN
DB2INST1.DEPARTMENT D
ON E.WORKDEPT = D.DEPTNO
GROUP BY D.DEPTNO, D.DEPTNAME)
DATA INITIALLY DEFERRED
REFRESH DEFERRED
MAINTAINED BY SYSTEM
IN REG_HOT1
INDEX IN IDX_HOT1
LONG IN LOB_HOT1;

5.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 4


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

History SQL Result Membuat MQTs

Status SQL Result Membuat MQTs

5.3 Penjelasan
Langkah berikutnya, membuat MTQs atau Materialized query tables yang dibangun dari
DMLseperti pada View. Terdapat tanda warning setelah menjalankan query ini, akan tetapi
tabel tetap berhasil dibuat. Hal tersebut kemungkinan karena tidak digunakan untuk
mempercepat pemrosesan query.

6. Langkah 6
6.1 Query
REFRESH TABLE DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT;

SELECT *
FROM DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT;

6.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 5


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

History SQL Result Refresh Tabel pada MQTs dan Mengakses Data MQTs

Status SQL Result Refresh Tabel pada MQTs

Status SQL Result Mengakses Data MQTs

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 6


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Result SQL Mengakses Data MQTs

6.3 Penjelasan
Setelah membuat MQTs, Langkah selanjutnya melakukan proses REFRESH Table. Karena
MQTs berbeda dengan View, diperlukannya query ini untuk mengakses MQTs yang telah
dibuat. Dari sini dapat disimpulkan bahwa MQTs tidak dapat langsung diakses setelah dibuat.

7. Langkah 7
7.1 Query
SELECT 'VIEW' SUMBER, DEPTNO, DEPTNAME, TOTAL
FROM SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT
UNION ALL
SELECT 'MQT', DEPTNO, DEPTNAME, TOTAL
FROM DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT
ORDER BY DEPTNO;

7.2 Screenshot

History SQL Result Mengakses Data Perbandingan View dan MQTs

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 7


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Mengakses Data Perbandingan View dan MQTs

Result SQL Mengakses Data Perbandingan View dan MQTs

7.3 Penjelasan
Untuk membandingkan data yang ditampilkan antara view dan MQTs, terlihat bahwa hasil
data yang ditampilkan masih sama. Hal ini disebabkan bahwa view selalu mengikuti
perubahan data dari tabel asalnya, sedangkan MQTs perlu direfresh terlebih dahulu agar dapat
mengikuti perubahan tabel asalnya. Dalam percobaan ini, proses REFRESH telah dijalankan
sehingga data yang ditampilkan pada sama.

8. Langkah 8
8.1 Query
UPDATE DB2INST1.EMPLOYEE
SET WORKDEPT = 'A00'
WHERE EMPNO = '000020' ; --WORKDEPTASAL = B01

SELECT 'VIEW' SUMBER, DEPTNO, DEPTNAME, TOTAL


FROM SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT
UNION ALL
SELECT 'MQT', DEPTNO, DEPTNAME, TOTAL
FROM DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT
ORDER BY DEPTNO;

8.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 8


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

History SQL Result Update Tabel EMPLOYEE dan Mengakses Data


Perbandingan View dan MQTs

Status SQL Result Update Tabel EMPLOYEE

Status SQL Result Mengakses Data Perbandingan View dan MQTs

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 9


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Result SQL Mengakses Data Perbandingan View dan MQTs

8.3 Penjelasan
Pada Langkah ini, kita menjalankan Update pada tabel EMPLOYEE dengan mengganti
WORKDEPT dari salah satu pegawai. Apabila sumber tabel yang ditampilkan berasal dari
sumber VIEW, tabel akan otomatis ter-update. Dapat dilihat dari data no. 4 dengan DEPTNO
B01 bahwa kolom TOTAL berkurang menjadi 0, dan pada data no. 2 dengan DEPTNO A00
kolom total bertambah menjadi 6. Sedangkan, pada data no. 1 dan no. 3 yang berasal dari
sumber MQT dengan DEPTNO B01 dan A00, kolom TOTAL belum ter-update karena
penggunaan MQTs memerlukan proses refresh terlebih dahulu.

9. Langkah 9
9.1 Query
REFRESH TABLE DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT;

SELECT 'VIEW' SUMBER, DEPTNO, DEPTNAME, TOTAL


FROM SUMMARY.REKAPITULASI_EMPLOYEE_DEPARTMENT
UNION ALL
SELECT 'MQT', DEPTNO, DEPTNAME, TOTAL
FROM DB2INST1.MQT_REKAPITULASI_EMPLOYEE_DEPARTMENT
ORDER BY DEPTNO;

9.2 Screenshot

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 10


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

History SQL Result Refresh Tabel pada MQTS dan Mengakses Data
Perbandingan View dan MQTs

Status SQL Result Refresh Tabel pada MQTS

Status SQL Result Mengakses Data Perbandingan View dan MQTs

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 11


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Result SQL Mengakses Data Perbandingan View dan MQTs

9.3 Penjelasan
Pada Langkah ini, dapat dilihat bahwa proses REFRESH telah berhasil dilakukan, sehingga
data yang ditampilkan telah ter-update sesuai dengan tabel asalnya. Dalam gambar diatas,
data pada nomor 1 dan 3 bagian kolom TOTAL yang sebelumnya belum berubah telah ter-
update.

10. Langkah 10
10.1 Query
ALTER TABLE DB2INST1.EMPLOYEE
ADD COLUMN SYSTEM_START_TIME1 TIMESTAMP(12)
NOT NULL GENERATED ALWAYS AS ROW BEGIN
ADD COLUMN SYSTEM_END_TIME1 TIMESTAMP(12) NOT NULL
GENERATED ALWAYS AS ROW END
ADD COLUMN TRANS_ID1 TIMESTAMP(12)
GENERATED ALWAYS AS TRANSACTION START ID;

ALTER TABLE DB2INST1.EMPLOYEE


ADD PERIOD SYSTEM_TIME (SYSTEM_START_TIME1, SYSTEM_END_TIME1);

CREATE TABLESPACE USERSPACE1_HIST;

CREATE TABLE DB2INST1_HIST.EMPLOYEE_HIST1


(
EMPNO CHAR(6 OCTETS) NOT NULL,
FIRSTNME VARCHAR(12 OCTETS) NOT NULL,
MIDINIT CHAR(1 OCTETS),
LASTNAME VARCHAR(15 OCTETS) NOT NULL,
WORKDEPT CHAR(3 OCTETS),
PHONENO CHAR(4 OCTETS),
HIREDATE DATE,
JOB CHAR(8 OCTETS),
EDLEVEL SMALLINT NOT NULL,
SEX CHAR(1 OCTETS),
BIRTHDATE DATE,

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 12


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

SALARY DECIMAL(9,2),
BONUS DECIMAL(9,2),
COMM DECIMAL(9,2),
SYSTEM_START_TIME1 TIMESTAMP(12) NOT NULL,
SYSTEM_END_TIME1 TIMESTAMP(12) NOT NULL,
TRANS_ID1 TIMESTAMP(12)
) IN USERSPACE1_HIST;

ALTER TABLE DB2INST1.EMPLOYEE


ADD VERSIONING USE HISTORY TABLE
DB2INST1_HIST.EMPLOYEE_HIST1;

10.2 Screenshot

History SQL Result Perubahan Kolom pada Tabel EMPLOYEE dan Pembuatan
History Tabel

Status SQL Result Perubahan Kolom pada Tabel EMPLOYEE menambah 3 kolom

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 13


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Perubahan Kolom pada Tabel EMPLOYEE menjadi system period
temporal table

Status SQL Result Membuat Tablespace

Status SQL Result Membuat Tabel History

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 14


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Menghubungkan tabel utama dengan history table

10.3 Penjelasan
Sebelum membuat sebuah history table, Langkah pertama yang dilakukan yakni
menambahkan kolom SYSTEM_START_TIME1,
SYSTEM_END_TIME1, TRANS_ID1 pada tabel EMPLOYEE untuk menampung data
historis. Selanjutnya, perubahan dilakukan pada tabel EMPLOYEE untuk mengubahnya
menjadi system-period temporal table. Setelah itu, perlu juga membuat sebuah tablespace
untuk menyimpan data historis. Kemudian, history table dapat dibuat dengan menggunakan
tablespace dan tabel utama yang hubungkan dengan history table.

11. Langkah 11
11.1 Query
INSERT INTO "DB2INST1".EMPLOYEE(
EMPNO, FIRSTNME , MIDINIT , LASTNAME, WORKDEPT ,
PHONENO , HIREDATE , JOB , EDLEVEL , SEX , BIRTHDATE ,
BONUS , COMM
)
VALUES (
'000099' , 'Adzinul' , 'A',
'Hakim' , 'A00' , '3978' ,
'1995-01-01', 'PRES', 18,
'M', '1963-08-24', 0, 4220.00);

SELECT *
FROM DB2INST1_HIST.EMPLOYEE_HIST1;

UPDATE "DB2INST1".EMPLOYEE
SET LASTNAME = 'M'
WHERE EMPNO = '000099';

DELETE
FROM "DB2INST1".EMPLOYEE
WHERE EMPNO = '000099';

SELECT *

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 15


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

FROM DB2INST1_HIST.EMPLOYEE_HIST1;

11.2 Screenshot

History SQL Result Memasukkan Data dan Mengakses Data Tabel History

Status SQL Result Memasukkan Data pada Tabel EMPLOYEE

Status SQL Result Mengakses Data Tabel History

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 16


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Result SQL Mengakses Data Tabel History

Status SQL Result Update Data Tabel EMPLOYEE

Status SQL Result Delete Data pada Tabel EMPLOYEE

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 17


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Mengakses Data Tabel History

Result SQL Mengakses Data Tabel History

11.3 Penjelasan
Pada Langkah ini, kita mencoba untuk memasukkan data ke dalam tabel EMPLOYEE.
Namun, ketika tabel tersebut ditampilkan, data yang telah dimasukkan tidak tercatat di tabel
history karena masih memerlukan proses update. Kemudian, lakukan proses update tabel
EMPLOYEE. Meski begitu, ketika diperiksa pada tabel history, data yang ditampilkan adalah
data sebelum proses update dilakukan. Selanjutnya, lakukan proses delete yang mana jika data
ditampilkan, terdapat data sebelum proses delete dilakukan. Hal ini disebabkan oleh proses
update tabel yang memiliki tabel history akan mencatat proses pembaruan yang terjadi dengan
menyimpan nilai sebelum proses pembaruan dilakukan ke dalam tabel history.

12. Langkah 12
12.1 Query
SELECT *
FROM "DB2INST1".EMPLOYEE
FOR SYSTEM_TIME AS OF '2017-03-27 09:20:10';

SELECT *
FROM "DB2INST1".EMPLOYEE
FOR SYSTEM_TIME AS OF CURRENT TIMESTAMP - 1 SECOND;

SELECT *
FROM "DB2INST1".EMPLOYEE
FOR SYSTEM_TIME AS OF CURRENT TIMESTAMP - 20 MINUTE;

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 18


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

SELECT *
FROM "DB2INST1".EMPLOYEE
FOR SYSTEM_TIME AS OF CURRENT TIMESTAMP - 1 HOUR;

SELECT *
FROM "DB2INST1".EMPLOYEE
FOR SYSTEM_TIME FROM CURRENT TIMESTAMP - 1 HOUR TO CURRENT
TIMESTAMP

12.2 Screenshot

History SQL Result Menampilkan kondisi Tabel dengan Time Travelling Query

Status SQL Result Menampilkan kondisi Tabel pada waktu ‘2017-03-27 09:20:10’

Result SQL Menampilkan kondisi Tabel pada waktu ‘2017-03-27 09:20:10’

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 19


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 Detik

Result SQL Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 Detik

Status SQL Result Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 20 menit

Result SQL Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 20 menit

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 20


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Status SQL Result Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 jam

Result SQL Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 jam

Status SQL Result Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 jam
sampai saat ini

Result SQL Menampilkan Kondisi Tabel pada Waktu Sekarang Dikurangi 1 jam sampai saat
ini

12.3 Penjelasan

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 21


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

Langkah terakhir adalah memasukkan Time Trabelling query yang merupakan query untuk
menampilkan kondisi tabel sesuai dengan waktu yang di inginkan. Dari percobaan diatas,
terdapat 5 query untuk menampilkan kondisi tabel yang berbeda. Query pertama
menampilkan kondisi tabel pada waktu 2017-03-27 09:20:10. Query kedua menampilkan
kondisi tabel pada waktu sekarang dikurangi 1 detik. Query ketiga menampilkan kondisi tabel
pada waktu sekarang dikurangi 20 menit. Query keempat menampilkan kondisi tabel pada
waktu sekarang dikurangi 1 jam. Query kelima menampilkan kondisi pada waktu sekarang
dikurangi 1 jam sampai saat ini.

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 22


LABORATORIUM BASIS DATA FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

KESIMPULAN

Dari praktikum modul 4 ini, dapat diambil kesimpulan untuk memahami dan
mengimplementasikan View, MTQs, dan History. View merupakan tabel turunan yang
dibagun dari tabel atau view-view yang lain, sedangkan MTQs (Materialized Query Tables)
merupakan sebuah tabel yang dibuat dari DML yang hampir sama dengan VIEW, yang salah
satu perbedaannya adalah MQTs dapat memiliki data sendiri sehingga dapat diasosiasikan
dengan tablespace yang ada seperti halnya regular table. MQTs dibuat dengan tujuan utama
untuk meningkatkan kinerja query. MQTs pada dasarnya tidak dapat langsung di akses
apabila belum dilakukan proses Refresh Table. Kemudian yang terakhir History yang
merupakan sebuah proses dalam tabel untuk mencatat proses update yang terjadi dengan
menyimpan nilai sebelum proses update dilakukan ke dalam tabel history. Tak lupa mengenai
Time Travelling Query yang digunakan untuk menampilkan kondisi tabel berdasarkan waktu
yang di tentukan.

Praktikum Administrasi Basis Data – MUHAMMAD ADZINUL HAKIM – 215150601111007 23

Anda mungkin juga menyukai