Anda di halaman 1dari 298

1001 Cara Bermain Basis Data

1001 cara
Bermain
Basis Data

Reza Gusty Erlangga


Rengga Asmara

EEPIS PRESS®

i
1001 Cara Bermain Basis Data

1001 Cara Bermain Basis Data

Reza Gusty Erlangga


Rengga Asmara
Copyright © 2018 by Reza Gusty Erlangga

Diterbitkan oleh :
EEPIS Press
Kampus Politeknik Elektronika Negeri
Surabaya,
Jalan Raya ITS, Keputih, Sukolilo, Surabaya,
60111
Telepon: +62 31 594 7280
Fax: +62 31 594 6114
Email: humas@pens.ac.id
Website: www.pens.ac.id

Penyunting :
Reza Gusty Erlangga

Terbit : Januari 2018


ISBN :

Hak Cipta dilindungi undang-undang


Dilarang memperbanyak sebagian atau
seluruh isi dengan cara apapun tanpa ijin
penerbit.

ii
1001 Cara Bermain Basis Data

Kata Pengantar

Puji syukur penulis panjatkan kepada


Tuhan Yang Maha Esa, karena atas tuntunan
dan kasih-Nya penulis mampu menyelesaikan
buku dengan judul Penggunaan Basis Data
Implementasi Basis Data Bagi Pemula.
Buku ini ditulis dengan tujuan untuk
memberikan pengetahuan untuk dapat
mempelajari, memahami dan mencoba
aplikasi Oracle Database secara mudah dan
sesuai kebutuhan. Dalam buku ini penulis
berusaha memberikan materi secara lengkap,
sederhana dan mudah untuk diaplikasikan.
Ada pepatah bahwa tidak ada gading
yang tak retak maka buku ini pun tidak lepas
dari kekurangan baik dari segi teknis maupun
segi materi.
Akhir kata penulis ingin mengucapkan
terima kasih kepada para pembaca yang telah
menyempatkan waktu untuk membacanya dan
selamat mencoba.

Surabaya, 21 Desember 2017


Penulis

Reza Gusty Erlangga

iii
1001 Cara Bermain Basis Data

Daftar Isi
HALAMAN JUDUL............................................ i
KATA PENGANTAR ....................................... iii
DAFTAR ISI...................................................... iv

Bab 1 REVIEW DATABASE 1 .......................... 1


1.1 PENDAHULUAN .................................. 1
1.2 ER-MODEL ........................................... 2
1.3 MODEL RELASIONAL ........................ 3
1.4 STRUCTURED QUERY LANGUAGE . 5
1.5 NORMALISASI ..................................... 7

Bab 2 DESAIN BASIS DATA ......................... 19


2.1 PENDAHULUAN ............................... 19
2.2 ATURAN SISTEM INFORMASI
DALAM ORGANISASI ...................... 19
2.3 PROSES DESAIN BASIS DATA ....... 21

Bab 3 QUERY LANJUTAN ............................. 44


3.1 TABEL YANG DIGUNAKAN PADA
PEMBAHASAN .................................. 44
3.2. APA ITU SUBQUERY ? .................... 45
3.3 PENGGUNAAN SUBQUERY ............ 46
3.4 SUBQUERY BANYAK KOLOM ....... 47
3.5 PEMBANDINGAN KOLOM .............. 48
3.6 PENGGUNAAN QUERY DALAM
KLAUSA FROM ................................. 49
3.7 EKSPRESI SCALAR SUBQUERY .... 50
3.8 KORELASI SUBQUERY.................... 52
3.9 PENGGUNAAN OPERATOR EXIST
DAN NOT EXIST ............................... 55

iv
1001 Cara Bermain Basis Data

3.10 PENGGUNAAN KLAUSA WITH .... 57

Bab 4 CONSTRAINT ....................................... 71


4.1 DEFINISI CONSTRAINT ................... 71
4.2 CONSTRAINT NOT NULL ................ 72
4.3 CONSTRAINT UNIQUE .................... 73
4.4 CONSTRAINT PRIMARY KEY ........ 74
4.5 CONSTRAINT FOREIGN KEY ......... 75
4.6 KEYWORD DARI CONSTRAINT
FOREIGN KEY ................................... 77
4.7 CONSTRAINT CHECK ...................... 77
4.8 MENAMBAHKAN SUATU
CONSTRAINT .................................... 78
4.9 MENAMBAHKAN CONSTRAINT ... 78
4.10 MENGHAPUS CONSTRAINT ......... 79
4.11 MEN-DISABLE CONSTRAINT ....... 80
4.12 MENG-ENABLE CONSTRAINT...... 80
4.13 CASCADING CONSTRAINT ........... 80
4.14 MENAMPILKAN CONSTRAINT .... 81
4.15 MENAMPILKAN KOLOM YANG
BERASOSIASI DENGAN SUATU
CONSTRAINT .................................... 82

Bab 5 EXPORT DAN IMPORT DATABASE


ORACLE .......................................................... 85
5.1 EXPORT DAN IMPORT – URAIAN . 85
5.2 EXPORT DAN IMPORT – SCHEMA 85
5.3 EXPORT DAN IMPORT – CARA
EXPORT .............................................. 86
5.4 EXPORT DAN IMPORT – CARA
IMPORT .............................................. 87

Bab 6 OPTIMASI QUERY ............................... 89

v
1001 Cara Bermain Basis Data

6.1 PENDAHULUAN ............................... 89


6.2 OPTIMASI PADA PERINTAH SQL .. 89
6.3 PERENCANAAN EKSEKUSI ............ 92
6.4 FAKTOR LAIN YANG
BERPENGARUH TERHADAP
KECEPATAN AKSES DATA............. 95

Bab 7 BASIS DATA CLIENT / SERVER ...... 105


7.1 PENDAHULUAN ............................. 105
7.2 ARSITEKTUR CLIENT-SERVER ... 105
7.3 PENGAKSESAN QUERY PADA
BASIS DATA CLIENT-SERVER ..... 107

Bab 8 BASIS DATA TERDISTRIBUSI ......... 115


8.1 PENDAHULUAN ............................. 115
8.2 TIPE BASIS DATA
TERDISTRIBUSI .............................. 116
8.3 ARSITEKTUR BASIS DATA
TERDISTRIBUSI .............................. 117
8.4 PENYIMPANAN DATA PADA
SISTEM TERDISTRIBUSI ............... 120
8.5 MANAJEMEN KATALOG
TERDISTRIBUSI .............................. 124
8.6 QUERY TERDISTRIBUSI ................ 125
8.7 JOINS PADA DBMS
TERDISTRIBUSI .............................. 126
8.8 OPTIMASI QUERY PADA DBMS
TERDISTRIBUSI .............................. 129
8.9 MENGUBAH DATA
TERDISTRIBUSI .............................. 130
8.10 LOCKING PADA SISTEM
TERDISTRIBUSI .............................. 136
8.11 DISTRIBUTED RECOVERY .......... 137

vi
1001 Cara Bermain Basis Data

Bab 9 BASIS DATA INTERNET................... 157


9.1 WORLD WIDE WORLD .................. 157
9.2 HIPERTEXT MARKUP LANGUAGE
(HTML) ............................................. 159
9.3 BASIS DATA DAN WEB ................. 160
9.4 ARSITEKTUR APPLICATION
SERVER DAN SERVER SIDE
JAVA ................................................. 160
9.5 PENDAHULUAN XML .................... 162
9.6 XML : DTDs ...................................... 163
9.7 SPESIFIKASI DOMAIN PADA
DTDs.................................................. 164
9.8 MELAKUKAN QUERY DATA XML
(XML-QL) ......................................... 165
9.9 MODEL DATA SEMI
TERSTRUKTUR ............................... 166

Bab 10 DATA WEREHOUSING DAN


DECISION SUPPORT ............................. 180
10.1 PENDAHULUAN ............................ 180
10.2 DARI DATA WEREHOUSE KE
DECISION SUPPORT....................... 181
10.3 MODEL DATA
MULTIDIMENSIONAL ................... 181
10.4 ONLINE ANALYTICAL
PROCESSING (OLAP) ..................... 183
10.5 ARSITEKTUR DATA
WEREHOUSE ................................... 186
10.6 IMPLEMENTASI DATA
WEREHOUSE ................................... 188
10.7 VIEW DAN DECISION SUPPORT 190

vii
1001 Cara Bermain Basis Data

Bab 11 DATA MINING ................................. 198


11.1 PENDAHULUAN ............................ 198
11.2 MODEL DATA MINING ................ 200
11.3 KEBUTUHAN DAN TANTANGAN
DALAM DATA MINING ................. 204
11.4 TAHAPAN DALAM DATA
MINING............................................. 209
11.5 FUNGSIONALITAS DALAM DATA
MINING............................................. 214
11.6 TEKNIK-TEKNIK DATA MINING 223

Bab 12 DATABASE TRIGGER ..................... 267


12.1 PENDAHULUAN ............................ 267
12.2 PENGGUNAAN TRIGGER ............ 267
12.3 KOMPONEN TRIGGER ................. 270
12.4 CONTOH PEMBUATAN
TRIGGER ........................................ 272
12.5 DML STATEMENT TRIGGER ....... 273
12.6 MENGKONFIRMASIKAN EVENT
PADA TRIGGER ............................ 274
12.7 ROW TRIGGER............................... 275
12.8 MENGGUNAKAN OLD DAN NEW
QUALIFIERS .................................. 277
12.9 PENGGUNAAN KLAUSA WHEN
PADA TRIGGER ............................ 278
12.10 PERINTAH UMUM ....................... 280

DAFTAR PUSTAKA ........................................ ix


BIODATA PENULIS ......................................... x

viii
1001 Cara Bermain Basis Data

BAB 1
REVIEW DATABASE 1

1.1 PENDAHULUAN
Basis data adalah kumpulan data yang
dapat digambarkan sebagai aktifitas dari
satu atau lebih organisasi yang berelasi.
Sebagai contoh, basis data universitas
berisi informasi mengenai :
 Entiti, semisal mahasiswa, fakultas,
mata kuliah, dan ruang kelas.
 Relasi diantara entitas, seperti
pengambilan kuliah yang dilakukan
oleh mahasiswa, staf pengajar di
fakultas, dan penggunaan ruang
perkuliahan.
Manajemen Sistem Basis Data
(Database Management System – DBMS)
adalah perangkat lunak yang didesain
untuk membantu dalam hal pemeliharaan
dan utilitas kumpulan data dalam jumlah
besar.
Agar bisa menggunakan DBMS
dengan baik, perlu diketahui cara kerja
dari DBMS tersebut. Pendekatan yang
dilakukan untuk menggunakan DMBS
secara baik, meliputi implementasi DBMS

1
1001 Cara Bermain Basis Data

dan arsitektur secara mendetail untuk


dapat memahami desain dari suatu basis
data.

1.2 ER-MODEL
ER model menyediakan suatu konsep
yang bermanfaat yang dapat mengubah
deskripsi informal dari apa yang
diinginkan oleh user menjadi hal yang
lebih detail, presisi, dan deskripsi detail
tersebut dapat diimplementasikan ke
dalam DBMS.
Komponen-komponen ER-Model :
 Entiti: obyek dunia nyata yang dapat
dibedakan dari obyek yang lain.
 Atribut: informasi lebih rinci tentang
jenis entitas.
 Relasi: hubungan antara dua atau lebih
dari jenis entitas.
 Key constraint: yaitu Primary Key,
Foreign Key, Unique, Not Null, Check.
 Batasan Partisipasi
- Relasi Partial: Jika tidak terdapat
mandatory di antara entitas yang
berelasi.

2
1001 Cara Bermain Basis Data

- Relasi full: Jika terdapat


mandatory di antara entitas yang
berelasi.
 Entitas Lemah: dapat diidentifikasi
secara unik jika terdapat peran kunci
utama (primary key) yang berasal dari
atau dimiliki oleh entity yang lain
(owner).
 Hirarki Klas
- Overlap constraints: suatu entiti
mungkin merupakan anggota dari
lebih dari satu subclass.
- Covering constraints: suatu entiti
merupakan anggota dari salah satu
subclass.
 Aggregasi : membolehkan kita untuk
memperlakukan suatu himpunan relasi
sebagai himpunan entity untuk tujuan
partisipasi dalam relasi yang lain.

1.3 MODEL RELASIONAL


Basis Data Relasional adalah
himpunan relasi. Suatu relasi adalah
himpunan kolom atau tupel (semua
barisnya bersifat distinct/unik).
Sedangkan relasi itu sendiri terdiri dari dua
bagian yaitu :

3
1001 Cara Bermain Basis Data

 Instance : table dengan baris dan


kolom
#baris = kardinalitas, #kolom/fields =
degree/arity.
 Skema : menentukan nama relasi, plus
nama dan tipe kolom
Contoh relasi misal :
Students(sid : string, name : string,
login : string, age : integer, gpa : real).

Kekuatan utama dari model relasional


adalah kesederhanaannya, dan
kelebihannya adalah dalam melakukan
query atas data. Query dapat ditulis secara
intuitif, dan DBMS bertanggungjawab
untuk mengevaluasinya secara efisien.
Kita dapat melakukan query pada
beberapa table yang saling berelasi.
Contoh:
Pada table berikut jika terdapat table
Enrolled yang berelasi dengan table
Students sebelumnya dengan key field sid.

4
1001 Cara Bermain Basis Data

Kemudian diberikan query :

SELECT S.name, E.cid


FROM Students S, Enrolled E
WHERE S.sid=E.sid and E.grade=”A”

Maka table yang dihasilkan dari query


tersebut adalah :

Yaitu mencari data Students (nama


Students dan mata kuliah yang
diikutinya) yang mendapat nilai “A”.

1.4 STRUCTURED QUERY LANGUAGE


Structured Query Language (SQL)
adalah bahasa database relasional yang
dibuat berdasarkan suatu standart. Setiap
query dalam SQL harus memiliki:

5
1001 Cara Bermain Basis Data

- Klausa SELECT, yang menentukan


kolom yang akan ditampilkan pada
hasil.
- Klausa FROM yang menentukan cross
product table.
- Klausa optional WHERE menentukan
syarat-syarat seleksi pada table yang
ditunjukkan oleh FROM.
Operasi set yang disediakan oleh SQL :
- UNION.
- INTERSECT.
- EXCEPT.
- IN (untuk memeriksa apakah elemen
telah berada pada set yang ditentukan).
- ANY dan ALL (untuk
membandingkan suatu nilai dengan
elemen pada set tertentu).
- EXISTS (untuk memeriksa apakah
suatu set kosong atau isi).
*Operator IN dan EXISTS dapat diawali
dengan NOT.
Operasi aggregat yang didukung SQL
yaitu :
- COUNT : untuk menghitung cacah.
- SUM : menghitung jumlah seluruh
nilai.
- AVG : menghitung rata-rata nilai.

6
1001 Cara Bermain Basis Data

- MAX : mencari nilai paling besar.


- MIN : mencari nilai paling kecil.

1.5 NORMALISASI
Normalisasi adalah perbaikan skema
database. Latar belakang diperlukannya
normalisasi adalah karena adanya
penyimpanan informasi yang redundan.
1. Bentuk Normal Pertama (1NF)
Suatu relasi dikatakan dalam bentuk
normal pertama jika dan hanya jika setiap
atribut bernilai tunggal untuk setiap atribut
bernilai tunggal untuk setiap baris.
Contoh:

Tabel 1. Sebelum bentuk normal


pertama

Tabel 2. Yang sudah dalam bentuk


normal pertama

7
1001 Cara Bermain Basis Data

2. Bentuk Normal Kedua (2NF)


Suatu relasi dikatakan dalam bentuk
normal kedua jika berada dalam normal
pertama dan setiap atribut bukan kunci
memiliki ketergantungan sepenuhnya
terhadap kunci primer, contoh :

Tabel 3. Sebelum bentuk normal kedua

Tabel 4. Yang sudah dalam bentuk


normal kedua

8
1001 Cara Bermain Basis Data

Table 5. Yang sudah dalam bentuk


normal kedua juga

3. Bentuk Normal Ketiga (3NF)


Suatu relasi dikatakan dalam bentuk
normal ketiga jika berada dalam normal
kedua dan setiap atribut bukan kunci tidak
memiliki ketergantungan transitif terhadap
kunci primer contoh :

Tabel 6. Sebelum bentuk normal ketiga

9
1001 Cara Bermain Basis Data

Tabel 7. Yang sudah dalam bentuk


normal ketiga

Table 8. Yang sudah dalam bentuk


normal ketiga juga

LATIHAN SOAL :
1. Gambarlah sebuah diagram ER yang
mengungkapkan informasi ini.
Perusahaan rekaman Notown
memutuskan untuk menyimpan semua
informasi mengenai musisi yang
mengerjakan albumnya (seperti halnya
data perusahaan lain) dalam sebuah
database. Pihak perusahaan menyewa
anda sebagai desainer database (dengan
biaya konsultasi sebesar $2.500 / hari).

10
1001 Cara Bermain Basis Data

 Tiap musisi yang melakukan rekaman


di Notown mempunyai SSN, nama,
alamat dan nomer telpon. Para musisi
yang dibayar lebih rendah akan
mendapatkan alamat yang sama
dengan musisi lain, dan satu alamat
mempunyai satu nomer telpon.
 Tiap instrumen yang digunakan untuk
merekam berbagai macam lagu di
Notown mempunyai nama (contoh :
gitar, sinthesizer, flute) dan kunci
musik (contoh : C, B-flat, E-flat).
 Tiap album yang dicatata di Notown
mempunyai judul rekaman, tanggal
copyright, format (contoh : CD atau
MC) DAN SEBUAH
INDENTIFIKASI ALBUM.
 Tiap lagu yang di catat di Notown
mempunyai judul dan pengarang lagu.
 Tiap musisi mungkin memainkan
beberapa instrumen, dan tiap
instrumen dapat dimainkan oleh
beberapa musisi.
 Tiap album mempunyai beberapa lagu
di dalamnya tapi tidak ada lagu yang
muncul bersamaan dalam satu album.

11
1001 Cara Bermain Basis Data

 Tiap lagu dibawakan oleh satu atau


lebih musisi dan seorang musisi bisa
membawakan beberapa lagu.
 Tiap album dibawakan seorang musisi
yang berperan sebagai produser.
Seorang musisi bisa menghasilkan
beberapa album.

2. Perhatikan skema relasional berikut ini :


- Emp(eid:integer, ename : string, age :
integer, salary: real).
- Works(eid:integer, did:integer,
pct_time: integer).

12
1001 Cara Bermain Basis Data

- Dept(did:integer, dname: string,


budget: real, managerid: integer)
Berikan contoh constraint foreign key
yang melibatkan relasi Dept!

FOREIGN KEY (managerid) REFERENCES


Emp(eid));
FOREIGN KEY (did) REFERENCES
Works(did));
FOREIGN KEY (eid) REFERENCES
Emp(eid));

Apa saja pilihan yang ada untuk


melaksanakan constraint ini pada saat user
berusaha untuk menghapus record pada
Dept?

Constraint On Delete Foreign Key berikut


yang umum digunakan dalam SQL:
 CASCADE: Menghapus atau
memperbarui baris dari tabel induk, dan
secara otomatis menghapus atau
memperbarui baris yang cocok di tabel
anak. Baik ON DELETE CASCADE
maupun ON UPDATE CASCADE
didukung. Antara dua tabel, tidak
mendefinisikan beberapa klausa ON
UPDATE CASCADE yang bekerja

13
1001 Cara Bermain Basis Data

pada kolom yang sama di tabel induk


atau tabel anak.
Catatan
Tindakan kunci asing yang tidak
digerakkan tidak mengaktifkan pemicu.

 SET NULL: Hapus atau perbarui baris


dari tabel induk, dan atur kolom kunci
asing atau kolom di tabel anak ke
NULL. Baik ON DELETE SET NULL
dan ON UPDATE SET NULL clauses
didukung.
Jika Anda menentukan tindakan SET
NULL, pastikan Anda belum
mendeklarasikan kolom di tabel anak
sebagai NOT NULL.

 RESTRICT: Menolak operasi hapus


atau update untuk tabel induk.
Menentukan PEMBATASAN (atau
TIDAK ADA) sama dengan
menghilangkan klausa ON DELETE
atau ON UPDATE.

 NO ACTION: Kata kunci dari SQL


standar. Di MySQL, setara dengan
RESTRICT. Server MySQL menolak
operasi hapus atau update untuk tabel

14
1001 Cara Bermain Basis Data

induk jika ada nilai foreign key terkait


dalam tabel yang direferensikan.
Beberapa sistem database memiliki cek
yang ditunda, dan NO ACTION adalah
cek yang ditunda. Di MySQL, batasan
kunci asing segera diperiksa, jadi NO
ACTION sama dengan RESTRICT.

 SET DEFAULT: Tindakan ini dikenali


oleh parser MySQL, namun kedua
definisi tabel InnoDB dan NDB
menolak klausa ON DELETE SET
DEFAULT atau ON UPDATE SET
DEFAULT.

Untuk ON DELETE atau ON UPDATE


yang tidak ditentukan, tindakan default
selalu RESTRICT.

3. Untuk skema relasional pada nomer 2,


definisikan relasi Dept pada SQL sehingga
setiap department dipastikan memiliki
seorang manajer.

15
1001 Cara Bermain Basis Data

CREATE TABLE Dept (


did int NOT NULL,
dname String NOT NULL,
budget real,
PRIMARY KEY (did),
FOREIGN KEY (managerid)
REFERENCES Emp(eid)
);

4. Untuk skema relasional pada nomer 2,


tuliskan pernyataan SQL untuk
menampilkan karyawan yang bekerja di
department ‘IT’.

SELECT e.ENAME
FROM EMP e, WORKS w, DEPT d
WHERE e.EID = w.EID and w.DID = d.DID
and d.DNAME = ‘IT’;

5. Untuk skema relasional pada nomer 2,


tuliskan pernyataan SQL untuk
menampilkan karyawan yang bekerja di
department ‘IT’ dan memiliki usia yang

16
1001 Cara Bermain Basis Data

lebih dari usia rata-rata orang-orang yang


bekerja di department ‘IT’.

SELECT e.ENAME
FROM EMP e, WORKS w, DEPT d
WHERE w.EID=e.EID and w.DID=d.DID
and d.DNAME=’IT’ and
e.AGE>(SELECT AVG(AGE) FROM EMP
e, WORKS w, DEPT d
WHERE w.EID=e.EID and w.DID=d.DID
and d.DNAME=’IT’);

6. Lakukan normalisasi data pada tabel


Kuliah yang memiliki atribut: kode kuliah,
nama kuliah, sks, semester, nama dosen,
waktu kuliah, ruang.

Tabel Kuliah - Sebelum bentuk normal


pertama
Kode Nama Nama Waktu
SKS Semester Ruang
kuliah kuliah Dosen Kuliah

Bentuk Normal Pertama (1NF)

Tabel Dosen
NIP Nama Dosen

17
1001 Cara Bermain Basis Data

Tabel Mata Kuliah


Kode Nama
SKS Semester
Matkul Kuliah

Tabel Kuliah
Kode Waktu
Ruang
Kuliah Kuliah

18
1001 Cara Bermain Basis Data

BAB 2
DESAIN BASIS DATA

2.1 PENDAHULUAN
Aktifitas desain basis data
menggunakan proses yang sistematis yang
disebut metodologi desain, dimana target
basis data diatur dengan RDBMS,
ORDBMS atau ODBMS.
Metodologi desain menggunakan alat
Bantu seperti Designer 2000 dari Oracle,
ERWin, BPWin dan Paradigm Plus oleh
Platinum Technology dan lain sebagainya.

2.2 ATURAN SISTEM INFORMASI


DALAM ORGANISASI

1. Organizational Context untuk


Penggunaan Sistem Basis Data
Sistem basis data menjadi bagian
dari sistem informasi dari beberapa
organisasi. Tahun 1960 an sistem
informasi didominasi dengan sistem
file, tetapi sejak awal 1970 an
organisasi mulai berpindah ke sistem
basis data. Untuk mengakomodasi
sistem, beberapa organisasi menbuat

19
1001 Cara Bermain Basis Data

posisi administrator basisi data (DBA)


auntuk mengontrol aktifitas basis data.

2. Siklus Sistem Informasi


Siklus sistem informasi disebut
siklus makro, dimana siklus sistem
basis data dirujuk ke siklus mikro.
Siklus makro meliputi beberapa tahap
yaitu :
1. Feasibility analysis.
2. Requirement collection and
analysis.
3. Desain.
4. Implementasi.
5. Validation and acceptance.
6. Deployment, operation and
maintenance.
3. Siklus Sistem Aplikasi Basis Data
Aktifitas yang berhubungan
dengan siklus sistem aplikasi basis
data meliputi tahap berikut :
1. System definition.
2. Database design.
3. Database implementation.
4. Loading or data conversion.
5. Application conversion.
6. Testing and validation.

20
1001 Cara Bermain Basis Data

7. Operation.
8. Monitoring and maintenance.

2.3 PROSES DESAIN BASIS DATA


Tujuan desain basis data adalah :
 Memenuhi kebutuhan isi informasi
dari pemakai dan aplikasi tertentu.
 Menyediakan struktur informasi alami
dan mudah dipahami.
 Mendukung kebutuhan pemrosesan
dan performansi obyektif seperti
response time, processing time dan
storage space.
Tahap utama pada proses desain basis
data yaitu :
1. Koleksi dan analisa kebutuhan.
2. Desain basis data konseptual.
3. Pemilihan DBMS.
4. Pemetaan model data (disebut juga
desain basis data logika).
5. Desain basis data fisik.
6. Implementasi dan tuning sistem basis
data.

21
1001 Cara Bermain Basis Data

Gambar 2-1: Tahap perancangan basis data


untuk basis data besar

1. Koleksi dan Analisa Kebutuhan


Aktifitas yang merupakan bagian
dari tahap ini adalah :
a. Area aplikasi mayor dan kelompok
pemakai yang akan menggunakan

22
1001 Cara Bermain Basis Data

basis data atau pekerjaan apa yang


akan diakibatkan diidentifikasi.
b. Dokumen yang sudah ada yang
berhubungan dengan aplikasi
dipelajari dan dianalisa.
c. Lingkungan operasi saat ini dan
rencana penggunaan informasi
dipelajari.
d. Penulisan respon untuk
menentukan pertanyaan terkadang
dikelompokkan dari pemakai basis
data potensial atau kelompok
pemakai.

2. Desain Basis Data Konseptual


a. Desain Skema Konseptual
Pada tahap desain basis data,
perlu menggunakan model data
konseptual level tinggi dengan
karakteristik :
 Expressiveness.
 Simplicity and
understandability.
 Minimality.
 Diagrammatic representation.
 Formality.

23
1001 Cara Bermain Basis Data

Strategi untuk Desain Skema


Terdapat beberapa stategi untuk
merancang skema, yaitu :
 Top-down strategy.
 Bottom-up strategy.
 Inside-out strategy.
 Mixed strategy.

Gambar 2-2: Strategi top-down.

24
1001 Cara Bermain Basis Data

(a) membangkitkan tipe entiti baru.


(b) dekomposisi tipe entiti ke dalam dua tipe
entiti dan relasi

Gambar 2-2(a) menunjukkan


COURSE dibagi dalam COURSE dan
SEMINAR, dan relasi TEACHES
dihubungkan terpisah dalam TEACHES
dan OFFERS.
Gambar 2-2(b) terlihat tipe entiti
COURSE_OFFERING dibagi dalam dua
tipe entiti COURSE dan INSTRUCTOR
dan relasi antar keduanya.

Gambar 2-3: Contoh strategi bottom-up.


(a) menemukan dan menambah relasi baru.

25
1001 Cara Bermain Basis Data

(b) menemukan katagori baru (tipe union)


dan menghubungkannya.

Gambar 2-3(a) memperlihatkan


bottom-up strategy dari generalisasi relasi
baru diantara tipe entiti. Bottom-up
menggunakan kategory (tipe union) yang
diilustrasikan pada Gambar 2-3(b) dimana
konsep baru VEHICLE_OWNER
ditemukan dari tipe entiti yang sudah ada
yaitu FACULTY, STAFF dan STUDENT.

b. Desain Transaksi
Tujuan dari tahap 2b, dimana
proses dilakukan paralel dengan tahap
2°, untuk mendesain karaktersitik
transaksi basis data yang diketahui
(aplikasi) dengan cara DBMS-
independent. Jika suatu sistem basis
data dirancang, perancang sadar
beberapa aplikasi yang diketahui (atau
transaksi) yang akan dijalankan dalam
basis data diimplementasikan. Bagian
terpenting dari perancangan basis data
adalah menentukan karakteristik
fungsi transaksi tersebut sebelumnya
dalam proses perancangan. Hal ini

26
1001 Cara Bermain Basis Data

menjamin skema basis data akan


memasukan semua informasi yang
dibutuhkan oleh transaksi tersebut.

Gambar 2-4: Skema terintegrasi setelah


menggabungkan view 1 dan view 2.

27
1001 Cara Bermain Basis Data

Gambar 2-5: Modifikasi view untuk


konfirmasi sebelum integrasi.

28
1001 Cara Bermain Basis Data

3. Pemilihan DBMS
Hal-hal yang harus
dipertimbangkan secara ekonomi dan
faktor organisasi adalah :
1. Software acquisiton cost.
2. Maintenance cost.
3. Hardware acquisition cost.
4. Database creation and conversion
cost.
5. Personal cost.
6. Training cost.
7. Operating cost.

4. Pemetaan Model Data (Desain Basis


Data Logika)
Proses pemetaan dalam dua bentuk
:
1. System-independet mapping :
Pada bentuk ini, pemetaan tidak
mempertimbangkan karakteristik
khusus datau kasus khusus yang
diaplikasikan ke implementasi
DBMS dari model data.
2. Tailoring the schemas to aspecific
DBMS : DBMS yang berbeda
mengimplementasikan model data

29
1001 Cara Bermain Basis Data

dengan menggunakan pemodelah


khusus.

5. Desain Basis Data Fisik


Perancangan basis data fisik
adalah proses memilih struktur
penyimpan khusus dan mengakses
path untuk file basis data untuk
mendapatkan performansi yang baik
pada aplikasi basis data. Kriteria
berikut biasanya digunakan untuk
menuntun pemilihan rancangan basis
data fisik :
1. Waktu respon.
2. Utilitas ruang penyimpan.
3. Transaction throughput.
4. Implementasi Basis Data dan
Tuning.
Setelah rancangan logika dan fisik
selesai, kita dapat
mengimplementasikan sistem basis
data. Hal ini merupakan tanggung
jawab DBA bersama desainer basis
data.

30
1001 Cara Bermain Basis Data

RINGKASAN :

 Terdapat aturan system informasi dalam


organisasi, system basis data dilihat
sebagai bagian system informasi dalam
aplikasi berskala besar.
 Basis data sebagai manajemen resourse
informasi dalam organisasi dan
kelangsungan hidupnya harus tetap
berjalan.
 Terdapat 6 tahap dalam proses
perancangan. Tiga tahap yang umum
dalam rancangan basis data adalah
rancangan konseptual, rancangan logika
(pemetaan model data) dan rancangan
fisik. Sedangkan tahap inisial adalah
koleksi dan analisa kebutuhan yang
biasanya termasuk dalam tahap pra desain.
 Ada beberapa criteria organisasi dalam
pemilihan DBMS.
 Jika permasalahan performansi terdeteksi
dan aplikasi baru diaplikasikan, rancangan
harus dimodifikasi.
 Pada basis data relasional, factor yang
berakibat pada keputusan rancangan basis
data fisik dan mnyediakan tuntunan
pemilihan alternative rancangan desain.

31
1001 Cara Bermain Basis Data

LATIHAN SOAL :

1. Sebutkan 6 tahap perancangan basis data!


Jawab :
a. Koleksi dan analisa kebutuhan
b. Desain basis data konseptual
c. Pemilihan DBMS
d. Pemetaan model data (disebut juga
desain basis data logika)
e. Desain basis data fisik.
f. Implementasi dan tuning sistem basis
data

2. Manakah dari 6 tahap tersebut sebagai


aktifitas utama dalam proses perancangan
basis data? Mengapa?
Jawab :
 Desain basis data konseptual.
 Pemetaan model data (disebut juga
desain basis data logika).
 Desain basis data fisik.
Karena suatu database yang
merupakan hasil dari tahap 1 dan
menghasilkan sebuah conceptual database
schema pada DBMS-independent model
data tingkat tinggi seperti EER (Enhanced

32
1001 Cara Bermain Basis Data

Entity Relationship) model.setelah itu


skema konseptual ditransformasikan dari
model data tingkat tinggi yang digunakan
pada tahap 2 ke dalam model data dari
model data dari DBMS yang dipilih pada
tahap 3.

3. Mengapa perancangan skema dan aplikasi


dilakukan secara parallel?
Jawab :
Karena aktifitas pertama yaitu desain
skema konseptual, menentukan kebutuhan
data yang dihasilkan pada tahap 1 dan
menghasilkan skema basis data
konseptual. Aktifitaskedua, desain
transaksi dan aplikasi, menentukan analisa
aplikasi basis data pada tahap1 dan
menghasilkan spesifikasi level tinggi
untuk aplikasi tersebut.

4. Mengapa digunakan model data


implementation-independent selama
perancangan skema konseptual?
Jawab :
Skema konseptual tidak tersedia
sebagai deskripsi stabil dari isi basis data.
Pemilihan DBMS dan keputusan desain

33
1001 Cara Bermain Basis Data

dapat berubah tanpa mengubah skema


konseptual DBMS-independent.

5. Mengapa diperlukan koleksi dan analisa


kebutuhan ?
Jawab :
Karena ini suatu tahap dimana kita
melakukan proses indentifikasi dan
analisa kebutuhan-kebutuhan data dan ini
disebut pengumpulan data dan analisa.
Untuk menentukan kebutuhan-kebutuhan
suatu sistem database, kita harus mengenal
terlebih dahulu bagian-bagian lain dari
sistem informasi yang akan berinteraksi
dengan sistem database, termasuk para
user yang ada dan para useryang baru
beserta aplikasi-aplikasinya. Kebutuhan-
kebutuhan dari para user dan aplikasi-
aplikasi inilah yang kemudian
dikumpulkan dan dianalisa.

6. Buatlah aplikasi actual dari suatu system


basis data. Tentukan kebutuhan dari level
pemakai yang berbeda dalam hal
kebutuhan data, tipe query dan transaksi
yang diproses.
Jawab :

34
1001 Cara Bermain Basis Data

Analisis kebutuhan sistem dan hak


akses internal
Dalam sistem ini ada beberapa
transaksi yang dilakukan antara lain :
Pengunjung hanya dapat melakukan
proses lihat buku dan cari buku, sedangkan
operator dapat melakukaan proses
pendataan buku, peminjaman buku,
pengembalian buku, perpanjangan buku,
informasi denda, pengelolaan anggota dan
login. Untuk admin sendiri dapat

35
1001 Cara Bermain Basis Data

melakukan proses pendataan buku dan


pengelolaan operator.
Dan dibawah ini adalah table-tabel yang
dibutuhkan dalam perancangan database.

Tabel Relasi Buku


Nama kolom Type data Keterangan
Id_buku Varchar(5) Primary key
Id_penerbit Varchar(5) Foreign key
Judul Varchar(250) Not null
Pengarang Varchar(250) Not null
Tahun Varchar(4) Not null
stok Int(3) Not null

Tabel Penerbit
Nama Kolom Type data Keterangan
Id_penerbit Varchar(5) Primary key
Nama_penerbit Varchar(5) Not null

Tabel Operator
Nama Kolom Type Data Keterangan
Id_Operator Varchar(8) Primary key
Username Varchar(50) Not null
Password Varchar(50) Not null
Nama Varchar(250) Not null
Email Varchar(250) Not null
alamat Text Not null

36
1001 Cara Bermain Basis Data

status Int(1) Not null

Tabel Anggota
Nama Kolom Type data Keterangan
Id_anggota Varchar(8) Primary key
Nama Varchar(250) Not null
Alamat Text Not null
Email Varchar(250) Not null
No_telp Varchar(12) Not null

Tabel Peminjaman
Nama Kolom Type data Keterangan
Id_peminjaman Varchar(5) Primary key
Id_buku Varchar(5) Foreign key
Id_operator Varchar(8) Foreign key
Id_anggota Varchar(8) Foreign key
Id_pinjam datetime Not null
Id_habispinjam datetime Not null
Id_tgl_kembali datetime
status Int(1) Not null

37
1001 Cara Bermain Basis Data

Tabel Denda
Nama Kolom Type data Keterangan
Id_denda Varchar(5) Primary key
Id_peminjaman Varchar(5) Foreign key
Keterlambatan Varchar(10) Not null
Denda Int(10) Not null

7. Bagaimana karakteristik dari model data


untuk rancangan skema konseptual harus
diproses ?
Jawab :
Karakteristik Model data :
1) Expressiveness : model data cukup
ekspresif untuk membedakan perbedaan
tipedata, relationship dan constraint.
2) Simplicity and understandability :
model cukup sederhana untuk pemakai
yang tidak mengerti dan menggunakan
konsep tersebut.
3) Minimality : model mempunyai
sejumlah kecil konsep dasar yang berbeda
dan tidak overlapping.
4) Diagrammatic representation : model
dalam bentuk notasi diagram untuk
menampilkan skema konseptual yang
mudah diintepretasikan.

38
1001 Cara Bermain Basis Data

5) Formality:skema konseptual
ditampilkan dalam model data aharus
merepesentasikan spesifikasi formal data.
Sehingga, konsep model harus ditentukan
secara akurat dan tidak berganda.

8. Apa perbedaan dua pendekatan utama


dalam rancangan skema konseptual?
Jawab :
Perbedaan kedua pendekatan terletak
pada tujuan dimana banyak view atau
kebutuhan dari banyak pemakai dan
aplikasi digabungkan. Pada pendekatan
terpusat, rekonsiliasi dilakukan secara
manual oleh DBA. Hal ini dapat
mengakibatkan terjadi konflik pada staff
DBA. Permasalahan ini dipecahkan
dengan menggunakan konsultan luar. Pada
pendekatan view integration, setiap
kelompok pemakai merancang skema
konseptual (EER) masing-masing.
Kemudian proses integrasi diaplikasikan
pada skema ini (view) oleh DBA untuk
membentuk skema integrasi global

39
1001 Cara Bermain Basis Data

9. Strategi apa yang digunakan untuk


merancang skema konseptual dari
kebutuhan?
Jawab :
Strategi- strategi untuk merancang Skema:
1. Top-down strategy : Dimulai dengan
skema yang berisi abstraksi level
tinggi dan kemudian mengaplikasikan
ketentuan top-down. Sebagai contoh,
tentukan hanya beberapa tipe entiti
level tinggi dan kemudian lakukan
pembagian ke dalam tipe entiti level
lebih rendah dan relationship.
2. Bottom-up strategy : Mulai dengan
skema yang berisi abstraksi dasar dan
kemudian kombinasikan atau
tambahkan abstraksi tersebut. Sebagai
contoh, mulai dengan atribut dan
kelompok ke dalam tipe entiti dan
relationship. Tambahkan relasi baru
pada tipe entiti selama proses
perancangan.
3. Inside-out strategy : Merupakan kasus
khusus dari bottom-up strategi, dimana
atensi difokuskan pada himpunan
konsep terpusat yang lebih nyata.
Model kemudian diisi dengan konsep

40
1001 Cara Bermain Basis Data

baru pada konsep yang sudah ada. Kita


dapat tentukan beberapa tipe entiti
nyata dalam skema dan dilanjutkan
dengan menambah tipe entiti dan relasi
yang berhubungan.
4. Mixed strategy : Kebutuhan dibagi
berdasarkan top-down strategy, bagian
skema dirancang untuk setiap partisi
berdasarkan bottom-up strategy. Jadi
strategi ini mengkombinasikan
beberapa skema.

10. Sebutkan langkah-langkah view


integration ke rancangan skema
konseptual.
Jawab :
Langkah Langkah View Integration ke
rancangan Skema Konseptual:
1. Indentifikasi korespondensi dan
konflik diantara skema.
2. Modifikasi view untuk kesesuaian
dengan lainnya.
3. Menggabungkan view.
4. Restrukturisasi : sebagai langkah
akhir, skema global dianalisa dan
direstrukturisasi untuk memindahkan

41
1001 Cara Bermain Basis Data

redundansi dan konpleksitas yang


tidak perlu.

11. Sebutkan factor untuk memperlancar


pemilihan paket DBMS untuk system
informasi dalam organisasi.
Jawab :
Pemilihan DBMS berdasarkan beberapa
faktor, beberapa hal teknis, ekonomi dan
kebijakan organisasi. Faktor teknis
berhubungan dengan ketepatan DBMS
yang dipilih. Hal-hal yang harus
dipertimbangkan secara ekonomi dan
factor organisasi adalah :
1. Software acquisiton cost.
2. Maintenance cost.
3. Hardware acquisition cost.
4. Database creation and conversion.
5. Personal cost.
6. Training cost.
7. Operating cost.
Beberapa faktor ekonomi dan organisasi
yang berakibat pemilihan suatu DBMS:
a. Organization-wide adoption of a
certain
b. Familiarity of personnel with the
c. Availability of vendor service

42
1001 Cara Bermain Basis Data

12. Apa yang dimaksud pemetaan data model


system-independent? Apa perbedaannya
dengan system-dependent?
Jawab:
Pemetaan System-independet merupakan
pemetaan yang tidak mempertimbangkan
karakteristik khusus datau kasus khusus
yang diaplikasikan ke implementasi
DBMS dari model data. Perbedaan antara
System independent dan system
dependent adalah pada fase
perancangannya. Model system
independent dirancang pada tahap
perancangan konseptual dan model system
dependent dirancang pada tahap
perancangan logika dan fisik.

43
1001 Cara Bermain Basis Data

BAB 3
QUERY LANJUTAN

3.1 TABEL YANG DIGUNAKAN PADA


PEMBAHASAN
Bagian ini menjelaskan mengenai
tabel yang digunakan pada pembahasan
bab ’Query Lanjutan’. Ada 3 buah tabel
yang digunakan masing-masing memiliki
struktur sebagai berikut :
1. Tabel DEPARTMENTS

2. Tabel EMPLOYEES

44
1001 Cara Bermain Basis Data

3. Tabel JOB_HISTORY

3.2. APA ITU SUBQUERY ?


Bagian ini membahas tentang
penggunaan subquery dalam Query
Lanjutan. Apa yang disebut dengan
SubQuery ? Subquery adalah statement
SELECT yang dilampirkan sebagai klausa
dalam SQL Statement yang lain.

45
1001 Cara Bermain Basis Data

Pada gambar diatas, subquery (inner


query) dijalankan sekali sebelum main
query. Kemudian hasil dari subquery
digunakan oleh main query (outer query).
Berikut posisi penulisan subquery dalam
SQL command :

3.3 PENGGUNAAN SUBQUERY


Subquery mengembalikan nilai ke
main query. Subquery digunakan untuk
menyelesaikan persoalan dimana terdapat
suatu nilai yang tidak diketahui (unknown
values). Berikut ini diberikan contoh
penggunaan subquery.

46
1001 Cara Bermain Basis Data

Query diatas akan menampilkan nama


pegawai yang gajinya lebih dari pegawai
dengan nomer pegawai 149. Sebelumnya,
gaji dari pegawai dengan nomer pegawai
149 tidak diketahui, untuk itu kita
tempatkan sebagai subquery agar nilai
yang tidak diketahui tersebut dapat
diketahui dan pada ilustrasi gambar diatas
nilai gaji dari pegawai 149 adalah 10500.

3.4 SUBQUERY BANYAK KOLOM


Pada subquery dengan banyak kolom,
tiap baris dari main query dibandingkan
dengan nilai dari subquery multiple-row
dan multiple-column. Berikut ini contoh
pembandingan dengan banyak kolom dan
baris :

47
1001 Cara Bermain Basis Data

3.5 PEMBANDINGAN KOLOM


Pembandingan kolom dalam subquery
banyak kolom dapat berupa :
 Pembandingan berpasangan (Pairwise
Comparison SubQuery).
 Pembandingan tidak berpasangan
(NonPairwise Comparison SubQuery).

A. PAIRWISE COMPARISON
SUBQUERY
Berikut contoh pembandingan
berpasangan untuk menampilkan detail
dari data pegawai yang dimanajeri oleh
manajer dan department yang sama
dengan yang dimiliki oleh nomer pegawai
178

48
1001 Cara Bermain Basis Data

B. NONPAIRWISE COMPARISON
SUBQUERY
Berikut contoh pembandingan tidak
berpasangan untuk menampilkan detail
dari data pegawai yang dimanajeri oleh
manager yang sama dengan pegawai
dengan nomer pegawai 174 atau 141 dan
bekerja dalam departement yang sama
dengan pegawai yang memiliki nomer
pegawai 174 atau 141.

3.6 PENGGUNAAN QUERY DALAM


KLAUSA FROM
Query bisa diletakkan di dalam klausa
FROM untuk membentuk tabel temporer.

49
1001 Cara Bermain Basis Data

Query semacam ini dikenal juga dengan


istilah inline view, karena tidak
membentuk object database. Berikut ini
contoh penggunaan Query dalam klausa
FROM.

Query diatas menampilkan nama dan


gaji dari pegawai yang gajinya lebih besar
dari rata-rata gaji pegawai pada
departemen tempat dia bekerja.

3.7 EKSPRESI SCALAR SUBQUERY


Ekspresi scalar subquery adalah
subquery yang mengembalikan hanya satu
nilai kolom dari satu baris. Scalar

50
1001 Cara Bermain Basis Data

subquery pada standart SQL-92 hanya


terbatas pada :
 SELECT Statement (klausa FROM
dan WHERE saja)
 Daftar VALUE dari statement
INSERT
Pada standart SQL-99, scalar
subqueries dapat diguanakan dalam :
 Kondisi dan ekspresi sebagai bagian
dari perintah DECODE dan CASE.
 Semua klausa dari SELECT Statement
kecuali GROUP BY.
Berikut ini contoh penggunaan scalar
subquery dalam ekspresi CASE :

Berikut ini contoh penggunaan scalar


subquery dalam klausa ORDER BY :

51
1001 Cara Bermain Basis Data

3.8 KORELASI SUBQUERY


Korelasi SubQuery digunakan untuk
pemrosesan baris per baris. Tiap-tiap
subquery dijalankan sekali untuk setiap
baris dari outer query. Prosesnya sebagai
berikut :

Pada gambar 3-2, proses korelasi


dimulai dengan mengambil baris dari
outer query, kemudian inner query
dijalankan dengan menggunakan nilai
baris kandidat, kemudian nilai dari inner
query digunakan untuk melakukan
kualifikasi atau mendiskualifikasi baris
kandidat.
Berikut ini cara penulisan dari
Korelasi SubQuery :

52
1001 Cara Bermain Basis Data

Pada gambar diatas, subquery merefer


ke kolom dari tabel yang ada pada parent
atau outer query.
Berikut ini contoh penggunaan
korelasi subquery untuk mencari pegawai
yang penghasilannya melebihi rata-rata
penghasilan pada departemen tempat
mereka bekerja.

Berikut ini contoh yang lain dari


korelasi subquery yaitu untuk
menampilkan pegawai yang pernah
berganti job sedikitnya dua kali.

53
1001 Cara Bermain Basis Data

Korelasi Subquery juga dapat


digunakan untuk meng-update baris pada
satu table berdasarkan pada baris dari table
yang lain, korelasi seperti itu dinamakan
dengan Korelasi Update. Berikut cara
penulisan Korelasi Update :

Lakukan denormalisasi pada table


EMPLOYEES dengan menambahkan satu
kolom pada tabel EMPLOYEES untuk
menyimpan nama departemen.

Kemudian isi dari kolom nama


departemen didapatkan dari table
DEPARTMENTS dengan menggunakan
Korelasi Update :

54
1001 Cara Bermain Basis Data

Korelasi Subquery juga dapat


digunakan untuk menghapus baris pada satu
table berdasarkan pada baris dari table yang
lain, korelasi seperti itu dinamakan dengan
Korelasi Delete.
Berikut cara penulisan Korelasi Delete
:

Berikut contoh penggunaan Korelasi


DELETE untuk menghapus baris-baris
dari tabel EMPLOYEES yang juga
terdapat pada tabel EMP_HISTORY.

3.9 PENGGUNAAN OPERATOR EXIST


DAN NOT EXIST
Operator EXISTS dan NOT EXIST
digunakan untuk menguji keberadaan dari

55
1001 Cara Bermain Basis Data

baris dalam himpunan hasil dari subquery.


Jika ditemukan, maka :
 pencarian tidak dilanjutkan dalam
inner query dan kondisi ditandai
TRUE.
Jika tidak ditemukan, maka :
 Kondisi ditandai FALSE dan kondisi
pencarian dilanjutkan dalam inner
query.
Berikut penggunaan operator EXISTS
untuk mencari pegawai yang memiliki
sedikitnya satu orang bawahan.

Berikut contoh penggunaan operator


NOT EXIST untuk menampilkan semua
departemen yang tidak mempunyai
pegawai.

56
1001 Cara Bermain Basis Data

3.10 PENGGUNAAN KLAUSA WITH


Dengan menggunakan klausa WITH,
kita dapat menggunakan blok query yang
sama dalam statement SELECT pada saat
terjadi lebih dari sekali dalam complex
query. Klausa WITH mendapatkan hasil
dari blok query dan menyimpannya dalam
tablespace temporer kepunyaan user.
Klausa WITH dapat meningkatkan
performansi. Berikut ini contoh
penggunaan klausa WITH :

57
1001 Cara Bermain Basis Data

Contoh penggunaan klausa WITH


diatas digunakan untuk menampilkan
nama departemen dan total gaji untuk tiap
departemen yang memiliki total gaji lebih
besar dari gaji rata-rata pada sembarang
department.

RINGKASAN :
 Subquery digunakan untuk menyelesaikan
persoalan dimana terdapat suatu nilai yang
tidak diketahui (unknown values).
 Pada subquery dengan banyak kolom, tiap
baris dari main query dibandingkan
dengan nilai dari subquery multiple-row
dan multiple-column.
 Pembandingan kolom dalam subquery
banyak kolom dapat berupa
pembandingan berpasangan (pairwise
comparison) dan tidak berpasangan
(nonpairwise comparison).
 Query bisa diletakkan di dalam klausa
FROM untuk membentuk tabel temporer,
dan dikenal juga dengan istilah inline
view.
 Korelasi SubQuery digunakan untuk
pemrosesan baris per baris.
 Klausa WITH dapat menggunakan blok

58
1001 Cara Bermain Basis Data

query yang sama dalam statement


SELECT pada saat terjadi lebih dari sekali
dalam complex query.

LATIHAN SOAL :
1) Buat query untuk menampilkan nama,
nomer departemen, dan gaji dari pegawai
yang yang memiliki nomer departemen
dan gaji yang sama dengan nomer
departemen dan gaji dari pegawai yang
memiliki komisi.
2) Buat query untuk menampilkan nama
pegawai, nama departemen, dan gaji dari
pegawai yang memiliki gaji dan komisi
yang sama dengan gaji dan komisi dari
pegawai yang memiliki location ID 1700.
3) Buat query untuk menampilkan nama
pegawai, tanggal mulai masuk kerja (hire
date), dan gaji untuk semua pegawai yang
memiliki gaji dan komisi seperti yang
dimiliki oleh pegawai yang bernama
Kochhar. Note: Data Kochhar tidak
ditampilkan dalam hasil query.
4) Buat query untuk menampilkan detail dari
nomer pegawai, nama pegawai dan nomer
pegawai yang pegawai yang bertempat
tinggal di kota yang nama kotanya diawali

59
1001 Cara Bermain Basis Data

dengan huruf T.
5) Buat query untuk menampilkan data
semua pegawai yang memiliki gaji yang
lebih dari rata-rata gaji pada departemen
tempat mereka bekerja. Data yang
ditampilkan yaitu nama pegawai, gaji,
nomer departemen, dan rata-rata gaji pada
departemen tempat mereka bekerja.
Urutkan berdasarkan rata-rata gaji.
6) Tampilkan semua pegawai yang tidak
memiliki supervisor.
a. Cara pertama gunakan operator NOT
EXISTS.
b. Apakah persoalan dapat dipecahkan
dengan menggunakan operator NOT
IN? Jika bisa bagaimana caranya, dan
jika tidak bisa mengapa ?
7) Buat query untuk menampilkan nama
pegawai yang gajinya kurang dari rata-rata
gaji pada departemen tempat dia bekerja.
8) Buat query untuk menampilkan nama dari
pegawai yang memiliki satu atau lebih
kolega (teman satu departemen) dimana
kolega tersebut masuk lebih akhir tapi
memiliki gaji lebih tinggi.
9) Buat query untuk menampilkan nomer
pegawai, nama pegawai dan nama

60
1001 Cara Bermain Basis Data

departemen dari semua pegawai yang ada.


Note: Gunakan scalar subquery untuk
mendapatkan nama departemen dalam
statemen SELECT.
10) Buat query untuk menampilkan nama
departemen dari tiap departemen yang
memiliki total gaji diatas 1/8 dari total gaji
keseluruhan pada perusahaan. Gunakan
klausa WITH untuk menulis query
tersebut. Beri nama SUMMARY.
11) Buat query untuk menampilkan peagwai
yang memiliki gaji yang lebih tinggi dari
gaji semua sales managers (JOB_ID =
'SA_MAN'). Urutkan berdasarkan jumlah
gaji dari tinggi ke rendah.

JAWABAN :
1. select last_name, department_id, salary,
commission_pct
from employees
where department_id in (select
department_id from employees where
commission_pct is not null)
and salary in (select salary from
employees where commission_pct is not
null);

61
1001 Cara Bermain Basis Data

2. select e.last_name, d.department_name,


e.salary
from employees e, departments d
where e.salary in (select a.salary from
employees a, departments b where
a.department_id = b.department_id and
b.location_id = 1700) and e.department_id
= d.department_id;

62
1001 Cara Bermain Basis Data

3. select last_name, hire_date, salary


from employees
where salary = (select salary from
employees where last_name = 'Kochhar')
and last_name <> 'Kochhar';

4. select employee_id, last_name,


department_id
from employees
where department_id in (select
d.department_id from departments d,
locations l where d.location_id =
l.location_id and l.city like 'T%');

63
1001 Cara Bermain Basis Data

5. SELECT
e.last_name,e.salary,e.department_id,
(SELECT avg(salary)
FROM employees e2
where e2.department_id =
e.department_id) as average FROM
employees e
where salary > (SELECT avg(salary)
FROM employees e2
where e2.department_id =
e.department_id) order by average

64
1001 Cara Bermain Basis Data

65
1001 Cara Bermain Basis Data

6. Tampilkan semua pegawai yang tidak


memiliki supervisor
a. Dengan operator NOT EXISTS
select * from employees outer where
not exists (select 'X' from employees
where manager_id =
outer.manager_id);

b. Persoalan tidak bisa diselesaikan


dengan operator NOT IN karena yang
dicari adalah pegawai yang tidak
memiliki supervisor. Operator yang
lebih tepat digunakan adalah IS NULL
yang diterapkan pada kolom
MANAGER_ID.

7. select first_name from employees outer


where salary < (select avg(salary) from
employees where department_id =
outer.department_id);

66
1001 Cara Bermain Basis Data

8. select first_name from employees outer


where exists (select salary from employees
where hire_date > outer.hire_date) and
salary > outer.salary;

67
1001 Cara Bermain Basis Data

9. select employee_id, first_name, (select


department_name from departments
where employees.department_id =
departments.department_id) from
employees;

68
1001 Cara Bermain Basis Data

69
1001 Cara Bermain Basis Data

10. with dept_sal as(


select d.department_name as
dept_name,sum(e.salary) as dept_total
from employees e,departments d
where e.department_id=d.department_id
group by d.department_name)
select dept_name as SUMMARY
from dept_sal
where dept_total>(select
sum(dept_total)*1/8 from dept_sal)

11. select first_name, salary from employees


where salary > (select max(salary) from
employees where job_id='SA_MAN');

70
1001 Cara Bermain Basis Data

BAB 4
CONSTRAINT

4.1 DEFINISI CONSTRAINT


Constraint adalah batasan atau aturan
yang ada pada table. Constraint mencegah
penghapusan data dari suatu table yang
mempunyai keterkaitan dengan table yang
lain. Misal terdapat keterkaitan antara
table department dengan table pegawai.
Dimana pada table pegawai menyimpan
informasi kolom nomer department yang
juga terdapat pada table department. Jika
baris dengan nomer department '10' akan
dihapus dari table department, sedangkan
terdapat data pegawai yang bekerja pada
department tersebut, maka dengan adanya
constraint antara dua table, penghapusan
tersebut tidak bisa dilakukan. Oracle
menyediakan beberapa tipe constraint
berikut :
 NOT NULL, UNIQUE, PRIMARY
KEY, FOREIGN KEY, CHECK

Sintak penulisan Constraint :


CREATE TABLE [schema.]table
(column datatype
[DEFAULT expr]
[column_constraint],
...
71[table_constraint][,...]);
1001 Cara Bermain Basis Data

Contoh penulisan Constraint :


CREATE TABLE employees(
employee_id NUMBER(6),
first_name VARCHAR2(20),
...
job_id VARCHAR2(10) NOT
NULL,
CONSTRAINT
emp_emp_id_pk
PRIMARY KEY
(EMPLOYEE_ID));

4.2 CONSTRAINT NOT NULL


Suatu kolom yang didefinisikan
dengan constraint NOT NULL tidak boleh
berisi nilai NULL. Kolom yang befungsi
sebagai kunci primer (primary key)
otomatis tidak boleh NULL.

72
1001 Cara Bermain Basis Data

Contoh penggunaan Constraint NOT


NULL :

4.3 CONSTRAINT UNIQUE


Constraint UNIQUE mendefinisikan
suatu kolom menjadi bersifat unik.

73
1001 Cara Bermain Basis Data

Ilustrasi penggunaan Constraint UNIQUE


:
Perintah pembuatan tabel untuk
ilustrasi diatas :

4.4 CONSTRAINT PRIMARY KEY


Constraint PRIMARY KEY
membentuk key yang unik untuk suatu
table. Kolom yang didefinisikan sebagai
PRIMARY KEY akan mengidentifikasi
suatu baris data menjadi unik. Contoh
penggunaan Constraint PRIMARY KEY :

74
1001 Cara Bermain Basis Data

Ilustrasi penggunaan Constraint


PRIMARY KEY :

4.5 CONSTRAINT FOREIGN KEY


FOREIGN KEY constraint
didefinisikan pada suatu kolom yang ada
pada suatu tabel, dimana kolom tersebut
juga dimiliki oleh table yang lain sebagai
suatu PRIMARY KEY. Ilustrasi
penggunaan Constraint FOREIGN KEY :

75
1001 Cara Bermain Basis Data

Perintah pembuatan tabel untuk ilustrasi


diatas :

76
1001 Cara Bermain Basis Data

4.6 KEYWORD DARI CONSTRAINT


FOREIGN KEY
Berikut ini keyword yang ada pada
Constraint FOREIGN KEY :
 FOREIGN KEY
Mendefinisikan kolom yang ada pada
tabel anak.
 REFERENCES
Mengidentifikasi tabel dan kolom
dalam tabel induk.
 ON DELETE CASCADE
Penghapusan baris dependent dalam
tabel anak pada saat sebuah baris pada
tabel induk dihapus.
 ON DELETE SET NULL
Mengkonversi dependent foreign key
ke nilai
NULL.

Mengkonversi dependent foreign key


ke nilai
NULL.

Mengkonversi dependent foreign key


ke nilai NULL.

4.7 CONSTRAINT CHECK

77
1001 Cara Bermain Basis Data

Constraint CHECK digunakan untuk


mendefinisikan suatu kondisi yang harus
dipenuhi oleh tiap baris data dalam table.
Contoh penggunaan :

4.8 MENAMBAHKAN SUATU


CONSTRAINT
Untuk menambahkan suatu
Constraint, digunakan perintah ALTER
TABLE. Cara penulisan :

ALTER TABLE table


ADD [CONSTRAINT constraint] type
(column);

4.9 MENAMBAHKAN CONSTRAINT


Misal ditambahkan constraint
FOREIGN KEY pada tabel EMPLOYEES
yang menunjukkan bahwa data manager
harus valid atau berasal dari tabel
EMPLOYEES.

78
1001 Cara Bermain Basis Data

79
1001 Cara Bermain Basis Data

4.10 MENGHAPUS CONSTRAINT


Untuk menghapus suatu
Constraint, juga digunakan perintah
ALTER TABLE. Cara penulisan :

ALTER TABLE table


DROP [CONSTRAINT constraint] type
(column);

Untuk menghapus constraint


manager dari tabel EMPLOYEES :

Untuk menghapus constraint


PRIMARY KEY pada tabel
departments dan menghapus asosiasi
constraint FOREIGN KEY pada
kolom
EMPLOYEES.DEPARTMENT_ID.

80
1001 Cara Bermain Basis Data

4.11 MEN-DISABLE CONSTRAINT


Untuk menonaktifkan constraint
digunakan klausa DISABLE. Pilihan
CASCADE digunakan untuk men-
disable dependent integrity constraint.

4.12 MENG-ENABLE CONSTRAINT


Untuk mengaktifkan kembali
constraint, digunakan klausa
ENABLE.

4.13 CASCADING CONSTRAINT


Klausa CASCADE
CONSTRAINTS digunakan dengan
klausa DROP COLUMN. Klausa
CASCADE CONSTRAINTS
menghapus semua referential integrity
constraints yang merefer ke primary
dan unique key yang didefinisikan
pada kolom yang dihapus.

81
1001 Cara Bermain Basis Data

4.14 MENAMPILKAN CONSTRAINT


Tabel USER_CONSTRAINT
menyimpan informasi tentang
constraint. Kolom tipe constraint
(constraint_type) dapat berisi : C untuk
constraint CHECK, R untuk referential
integrity atau FOREIGN KEY, P
untuk PRIMARY KEY, U untuk
constraint UNIQUE.

82
1001 Cara Bermain Basis Data

4.15 MENAMPILKAN KOLOM YANG


BERASOSIASI DENGAN SUATU
CONSTRAINT
Berikut ini untuk menampilkan
Kolom yang Berasosiasi dengan suatu
nama suatu Constraint yang ada pada
view USER_CONS_COLUMNS

LATIHAN SOAL :
1. Tambahkan table-level PRIMARY KEY
Constraint pada tabel EMP pada kolom
ID. Constraint diberi nama :
my_emp_id_pk
Jawab : alter table emp add constraint
my_emp_id_pk primary key (ID);

2. Buat PRIMARY KEY Constraint pada


tabel DEPT dengan menggunakan kolom

83
1001 Cara Bermain Basis Data

ID. Constraint diberi nama :


my_dpet_id_pk
Jawab : alter table dept add constraint
my_dpet_id_pk primary key (ID);

3. Tambahkan kolom DEPT_ID ke dalam


tabel EMP. Tambahkan foreign key
references pada tabel EMP yang
memastikan bahwa data pegawai
dimasukkan berdasarkan nomer
department yang ada pada tabel DEPT.
Jawab : alter table emp add constraint
my_dpet_id_pk foreign key (DEPT_ID)
references DEPT(ID);

4. Tampilkan constraint-constraint yang


telah ditambahkan dengan melihat pada
view USER_CONSTRAINTS.
Jawab : select constraint_name,
constraint_type, search_condition from
user_constraints where constraint_name
like 'MY%';

5. Tampilkan nama object dan tipenya dari


data dictionary USER_OBJECTS untuk
tabel EMP dan DEPT.

84
1001 Cara Bermain Basis Data

Jawab : select object_name, object_type


from user_objects where object_name in
('EMP','DEPT');
6. Modifikasi tabel EMP. Tambahkan kolom
COMMISSION dengan tipe data
NUMBER(2). Tambahkan Constraint
untuk memastikan bahwa kolom ini harus
diisi dengan nilai > 0.
Jawab : alter table emp add (commission
number(2), constraint emp_commission
check (commission > 0));

85
1001 Cara Bermain Basis Data

BAB 5
EXPORT DAN IMPORT DATABASE
ORACLE

5.1 EXPORT DAN IMPORT – URAIAN


Export dan import disediakan oleh
Oracle untuk melakukan transfer data
secara logis seperti tabel, isi data,
prosedur dan sebagainya.
Export membentuk file yang
diperlukan untuk mentranfer file.
File hasil export berbentuk file binary
yang disebut dump (dmp) file, file ini
hanya dapat dibaca oleh utilitas import
yang berfungsi mengembalikan informasi
dari dump file ke database.

5.2 EXPORT DAN IMPORT – SCHEMA

86
1001 Cara Bermain Basis Data

5.3 EXPORT DAN IMPORT – CARA


EXPORT
Cara ekport database yaitu dengan
mengetikkan perintah “exp
username/password@tnsname” melalui
Command Prompt di mana username dan
password adalah nama user di mana
datanya atau tabel yang ingin di-export,
dan tnsname adalah nama koneksi yang
menghubungkan client dan server. Contoh
: exp scott/tiger@belajar
Nantinya akan muncul perintah “Enter
array fetch buffer size” maka ketikkan
4096 kemudian enter lanjut dengan
mengisikan nama file penampung data
hasil export missal c:\expdat.dmp tekan
enter.
Akan muncul 2 pertanyaan “2.
U<users> or 3. T<tables>” yang artinya
apakah anda ingin mengekspor data user
atau table, jika ingin export data user maka
ketik U, sedangkan jika ingin export data
tables maka ketik T kemudian tekan enter.
Akan muncul pertanyaan “Export data
table?” jika anda ingin mengexport data
table tersebut maka ketik Y kemudian
tekan enter. Lalu akan muncul pertanyaan

87
1001 Cara Bermain Basis Data

“Compress Extents” ketikan Y kemudian


tekan enter.
Selanjutnya anda harus mengetikkan
satu persatu table yang akan anda export,
misal table emp maka ketik emp kemudian
enter sedangkan untuk mengakhiri proses
export anda tidak perlu mengtikkan
apapun hanya tekan enter saja. Bila proses
export tidak ada pesan eror maka proses
export telah sukses dilakukan.

5.4 EXPORT DAN IMPORT – CARA


IMPORT
Cara import database yaitu dengan
mengetikkan perintah “imp
username/password@tnsname” melalui
Command Prompt di mana username dan
password adalah nama user di mana kita
menginginkan transfer data dari file ke
dalam database, dan tnsname adalah nama
koneksi yang menghubungkan client dan
server. Contoh : imp hr/hr@belajar
Akan muncul pertanyaan lokasi file
import “Import file?” maka ketikan lokasi
file dmp, missal c:\expdmp.dat. lalu akan
muncul “Enter insert buffer size(minimum

88
1001 Cara Bermain Basis Data

8192)?” maka ketikan 30720 kemudian


tekan enter.
Lalu muncul “List contents of import
file only” maka ketikan T kemudian enter,
lanjut mucul “Ignore create error due to
object existence?” ketikan T kemudian
enter. Muncul “Import Grants?” ketikan
Y, “Import table data?” ketikanY.
Terakhir muncul “Import entire export
file?” jika anda ingin mentransfer semua
data isi dari file dmp ke database maka
ketikan Y, jika tidak maka ketikan T
kemudia tekan enter. Apabila tidak ada
pesan eror maka proses import data dari
file dmp ke database oracle telah berhasil
dilakukan.

89
1001 Cara Bermain Basis Data

BAB 6
OPTIMASI QUERY

6.1 PENDAHULUAN
Data yang tersimpan dalam database
semakin lama akan semakin besar ukuran
atau volumenya. Kalau tidak didukung
dengan kecepatan akses yang memadai
maka akan semakin menurun unjuk
kerjanya. Ukuran unjuk kerja dalam hal
ini kecepatan akses data dipengaruhi oleh
banyak faktor. Pada bab ini akan
membahas tentang optimasi query serta
faktor-faktor lain yang berpengaruh
terhadap optimalisasi kecepatan akses
data.

6.2 OPTIMASI PADA PERINTAH SQL


Desain aplikasi saja tidak cukup untuk
meningkatkan unjuk kerja harus didukung
dengan optimasi dari perintah SQL yang
digunakan pada aplikasi tersebut. Dalam
mendesain database, seringkali lokasi fisik
data tidak menjadi perhatian penting.
Karena hanya desain logik saja yang
diperhatikan. Padahal untuk menampilkan
hasil query dibutuhkan pencarian yang

90
1001 Cara Bermain Basis Data

melibatkan struktur fisik penyimpanan


data. Inti dari optimasi query adalah
meminimalkan “jalur” pencarian untuk
menemukan data yang disimpan dalam
lokasi fisik.
Index pada database digunakan untuk
meningkatkan kecepatan akses data. Pada
saat query dijalankan, index mencari data
dan menentukan nilai ROWID yang
membantu menemukan lokasi data secara
fisik di disk. Akan tetapi penggunaan
index yang tidak tepat, tidak akan
meningkatkan unjuk kerja dalam hal ini
kecepatan akses data.
Misal digunakan index yang
melibatkan tiga buah kolom yang
mengurutkan kolom menurut kota,
propinsi dan kode pos dari tabel karyawan,
sebagai berikut :

CREATE INDEX idx_kota_prop_kodepos


ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;

Kemudian user melakukan query


sebagai berikut :

91
1001 Cara Bermain Basis Data

SELECT * FROM karyawan WHERE


propinsi=’Jawa Barat’;

Pada saat melakukan query ini, index


tidak akan digunakan karena kolom
pertama (kota) tidak digunakan dalam
klausa WHERE. Jika user sering
melakukan query ini, maka kolom index
harus diurutkan menurut propinsi. Selain
itu, proses pencarian data akan lebih cepat
jika data terletak pada block tabel yang
berdekatan daripada harus mencari di
beberapa datafile yang terletak pada block
yang berbeda.
Misal pada perintah SQL berikut ini :

SELECT * FROM karyawan


WHERE id BETWEEN 1010 AND 2010

Query ini akan melakukan “scan”


terhadap sedikit data block jika tabel
karyawan diatas diurutkan berdasarkan
kolom id. Untuk mengurutkan
berdasarkan kolom yang berbeda-beda
maka tabel disimpan dalam flat file,

92
1001 Cara Bermain Basis Data

kemudian tabel diekspor dan diurutkan


sesuai kebutuhan.
Alternatif yang lain, bisa digunakan
perintah untuk membuat tabel lain yang
memiliki urutan yang berbeda dari tabel
asal, seperti perintah SQL berikut :

CREATE TABLE karyawan_urut


AS SELECT * FROM karyawan
ORDER BY id;

Pada SQL diatas, tabel karyawan_urut


berisi data yang sama dengan tabel
karyawan hanya datanya terurut
berdasarkan kolom id.
6.3 PERENCANAAN EKSEKUSI
Bagaimana cara melihat jalur akses
yang akan digunakan database saat
melakukan query ? Pada Database Oracle,
informasi ini dapat dilihat dengan
menggunakan perintah explain plan, yang
akan memberi informasi tentang rencana
eksekusi dari suatu query. Informasi ini
disimpan dalam tabel PLAN_TABLE
yang terdapat di schema user yang
mengeksekusi perintah tersebut.

93
1001 Cara Bermain Basis Data

Sebelum melakukan perintah explain


plan, terlebih dahulu buat table
PLAN_TABLE dengan menggunakan
script utlxplan.sql yang diambil dari
\%ORACLE_HOME%\RDBMS\ADMIN
Setelah itu table PLAN_TABLE dapat
digunakan seperti contoh berikut :

SQL> explain plan


Set statement_id=’test1’
Into plan_table for
Select * from karyawan where
gaji=2000000;

Dalam PLAN_TABLE rencana


eksekusi diatas dikenal dengan nama test1
yang terdefinisi pada kolom statement_id.
Untuk melihat rencana eksekusi dari
test1, digunakan perintah SELECT berikut
:

94
1001 Cara Bermain Basis Data

SELECT LPAD(’ ’,2*Level)||Operation||’


’||Options||’ ’||Object_Name Q_Plan
FROM plan_table
WHERE statement_id=’test1’
CONNECT BY PRIOR id=parent_id AND
statement_id=’test1’
START WITH id=0 AND statement_id=’test1’;

Contoh hasil dari eksekusi query


tersebut :

Q_PLAN
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS FULL KARYAWAN

Output tersebut dibaca mulai dari


yang indent-nya paling dalam yaitu :
TABLE ACCESS FULL KARYAWAN.
Dikarenakan klausa WHERE melibatkan
kolom gaji namun kolom gaji tidak ada
index-nya, maka Oracle melakukan full
table scan. Setelah seluruh tabel karyawan
selesai dibaca, selanjutnya adalah

95
1001 Cara Bermain Basis Data

SELECT STATEMENT yang berfungsi


untuk menampilkan hasil query.

6.4 FAKTOR LAIN YANG


BERPENGARUH TERHADAP
KECEPATAN AKSES DATA
Faktor lain yang berpengaruh terhadap
kecepatan akses data, tidak hanya terletak
pada optimasi perintah SQL, tapi terhadap
hal-hal lain yang berpengaruh.
Diantaranya adalah optimasi aplikasi dan
penggunaan cluster dan index. Hal yang
akan dibahas dalam optimasi query berikut
ini tidak melibatkan penggunaan
komponen yang ada dalam Arsitektur
database engine, misal pada database
Oracle kecepatan akses data dipengaruhi
oleh penyesuaian pada shared pool, buffer
cache, redo log buffer dan sistem operasi
yang digunakan.

A. OPTIMASI APLIKASI
Dalam pembuatan aplikasi, yang perlu
mendapat perhatian adalah apakah akses
terhadap data sudah efisien. Efisien dalam
hal penggunaan obyek yang mendukung
kecepatan akses, seperti index atau cluster.

96
1001 Cara Bermain Basis Data

Kemudian juga bagaimana cara database


didesain. Apakah desain database sudah
melakukan normalisasi data secara tepat.
Kadangkala normalisasi sampai level
yang kesekian, tidak menjamin suatu
desain yang efisien. Untuk membuat
desain yang lebih tepat, kadang setelah
melakukan normalisasi perlu dilakukan
denormalisasi. Misalnya tabel yang
hubungannya one-toone dan sering
diakses bersama lebih baik disatukan
dalam satu tabel.

B. CLUSTER DAN INDEX


Cluster adalah suatu segment yang
menyimpan data dari tabel yang berbeda
dalam suatu struktur fisik disk yang
berdekatan. Konfigurasi ini bermanfaat
untuk akses data dari beberapa tabel yang
sering di-query. Penggunaan cluster
secara tepat dilaksanakan setelah
menganalisa tabel-tabel mana saja yang
sering di-query secara bersamaan
menggunaan perintah SQL join.
Jika aplikasi sering melakukan query
dengan menggunakan suatu kolom yang
berada pada klausa WHERE, maka harus

97
1001 Cara Bermain Basis Data

digunakan index yang melibatkan kolom


tersebut. Penggunaan index yang tepat
bergantung pada jenis nilai yang terdapat
dalam kolom yang akan diindex. Dalam
RDBMS Oracle, index B-Tree digunakan
untuk kolom yang mengandung nilai yang
cukup bervariasi, sedangkan untuk nilai
yang tidak memiliki variasi cukup banyak,
lebih baik menggunakan index bitmap.

RINGKASAN :

• Data yang tersimpan dalam jumlah yang


sangat besar, Terdapat aturan system
informasi dalam organisasi, system basis
data dilihat sebagai bagian system
informasi dalam aplikasi berskala besar.
• Untuk meningkatkan unjuk kerja tidak
hanya desain logik saja yang diperhatikan
tapi juga struktur fisik penyimpanan data.
• Penggunaan Index pada database secara
tepat, dapat digunakan untuk
meningkatkan kecepatan akses data.
• Informasi tentang jalur akses yang
digunakan oleh database untuk
melaksanakan query dalam database

98
1001 Cara Bermain Basis Data

Oracle dapat dengan menggunakan


perintah explain plan.
• Selain optimasi perintah SQL, faktor lain
yang berpengaruh terhadap kecepatan
akses data adalah optimasi aplikasi dan
penggunaan cluster dan index.
• Pada sebuah database engine semisal pada
database Oracle kecepatan akses data
dipengaruhi oleh beberapa komponen
arsitektur pembentuknya seperti shared
pool, buffer cache, dan redo log buffer.
• Optimasi aplikasi tergantung pada
efisiensi penggunaan obyek yang
mendukung kecepatan akses seperti index
atau cluster, dan normalisasi data pada
desain database.

LATIHAN SOAL :

1. Apa latar belakang dari diperlukannya


optimalisasi kecepatan akses data?
 Latar belakang diperlukannya
optimalisasi kecepatan akses data
adalah data yang tersimpan dalam
database semakin lama ukuran atau
volumenya akan semakin besar. Jika
tidak didukung dengan kecepatan

99
1001 Cara Bermain Basis Data

akses yang memadai maka akan


semakin menurun unjuk kerjanya.
Selain itu dalam dalam mendesain
database, seringkali lokasi fisik data
tidak menjadi perhatian penting.
Karena hanya desain logik saja yang
diperhatikan. Padahal untuk
menampilkan hasil query dibutuhkan
pencarian yang melibatkan struktur
fisik penyimpanan data. Inti dari
optimasi query adalah meminimalkan
“jalur” pencarian untuk menemukan
data yang disimpan dalam lokasi fisik.

2. Optimasi query dalam hubungannya


dengan desain database melibatkan dua
hal, yaitu ….. dan ……
 2 hal yang terlibat dalam hubungan
antara optimasi query dan desain
database yaitu:
- Desain logik.
- Struktur lokasi fisik penyimpanan
data.

3. Proses pencarian data yang telah diindeks


akan lebih cepat jika data yang dicari
terletak pada….

100
1001 Cara Bermain Basis Data

 block tabel yang berdekatan.

4. Bagaimana cara melihat jalur akses yang


akan digunakan database saat melakukan
query ? Tunjukkan tahap-tahap yang
digunakan untuk melakukan hal tersebut !
 Cara melihat jalur akses yang akan
digunakan Database Oracle saat
melakukan query adalah dengan
menggunakan perintah explain plan,
yang akan memberi informasi tentang
rencana eksekusi dari suatu query.
Informasi ini disimpan dalam tabel
PLAN_TABLE yang terdapat di
schema user yang mengeksekusi
perintah tersebut.
 Adapun tahapan-tahapan yang
digunakan untuk melakukan
haltersebut adalah:
a. Buat table PLAN_TABLE dengan
script utlxplan.sql yang diambil
dari
\%ORACLE_HOME%\RDBMS\ADMIN

b. Setelah itu table PLAN_TABLE


dapat digunakan seperti contoh
berikut :

101
1001 Cara Bermain Basis Data

Dalam PLAN_TABLE rencana


eksekusi diatas dikenal dengan
nama test1 yang terdefinisi pada
kolom statement_id.

SQL> explain plan Set


statement_id=’test1’ Into
plan_table for
Select * from karyawan
where gaji=2000000;

c. Untuk melihat rencana eksekusi


dari test1, digunakan perintah
SELECT berikut :

SELECT LPAD(’ ’,2*Level) ||


Operation || ’ ’ || Options ||
’ ’ || Object_Name Q_Plan FROM
plan_table
WHERE statement_id = ’test1’
CONNECT BY PRIOR id = parent_id
AND statement_id = test1’ START
WITH id = 0 AND statement_id =
’test1’;

102
1001 Cara Bermain Basis Data

d. Contoh hasil dari eksekusi query


tersebut :
Q_PLAN
------------------------------
------------------------------
SELECT STATEMENT
TABLE ACCESS FULL
KARYAWAN

Penjelasan : Output tersebut dibaca


mulai dari yang indent-nya paling
dalam yaitu : TABLE ACCESS
FULL KARYAWAN.
Dikarenakan klausa WHERE
melibatkan kolom gaji namun
kolom gaji tidak ada index-nya,
maka Oracle melakukan full table
scan. Setelah seluruh tabel
karyawan selesai dibaca,
selanjutnya adalah SELECT
STATEMENT yang berfungsi
untuk menampilkan hasil query.

5. Sebutkan factor-faktor lain yang


berpengaruh terhadap kecepatan akses
data selain optimasi pada perintah SQL !

103
1001 Cara Bermain Basis Data

 Faktor lain yang berpengaruh terhadap


kecepatan akses data adalah :
- Optimasi aplikasi.
- Penggunaan cluster dan index.

6. Beberapa database engine melibatkan


komponen pada arsitekturnya untuk
disesuaikan agar akses data lebih cepat dan
efisien, berikan contohnya!
 Beberapa database engine contohnya
Oracle melibatkan komponen
arsitekturnya untuk disesuaikan agar
kecepatan akses data lebih cepat dan
efisien, komponen arsitektur tersebut
contohnya adalah shared pool, buffer
cache, dan redo log buffer.

104
1001 Cara Bermain Basis Data

BAB 7
BASIS DATA CLIENT / SERVER

7.1 PENDAHULUAN
Aplikasi basis data terdistribusi
dikembangkan dalam bentuk arsitektur
client-server. Teknologi client-server
berkembang secara cepat sebagai
teknologi lanjut. Pada beberapa waktu
yang lalu, sangat sulit memprediksikan
status saat ini teknologi clientserver yang
terjadi saat ini. Hal ini sama sulitnya
dengan memprediksi teknologi untuk
beberapa tahun ke depan. Beberapa faktor
yang berpengaruh pada fungsi client atau
server atau keduanya, melibatkan
perangkat keras dan perangkat lunak,
protocol network, teknologi LAN/WAN
dan komunikasi. Penurunan biaya dari
beberapa factor tersebut menyebabkan
semakin besar kemungkinan mempunyai
sistem yang kuat.

7.2 ARSITEKTUR CLIENT-SERVER


Saat ini arsitektur client-server yang
banyak digunakan dalam industri disebut
two-tier architecture. Pada arsitektur ini,

105
1001 Cara Bermain Basis Data

server mengirim data dan client


mengakses data. Server memainkan
peranan yang dominan pada arsitektur ini.
Keuntungan system ini adalah
kesederhanaan dan kompatibilitas dengan
sistem yang legal.
Arsitektur client-server yang
dikembangkan kemudian adalah three-tier
architecture. Pada model ini, layer
direpresentasikan sebagai host, server dan
client. Server memainkan peranan sebagai
penengah dengan mengirim aturan bisnis
(prosedur atau constraint) yang digunakan
untuk mengakses data dari host. Client
berisi antarmuka GUI dan beberapa
aplikasi tambahan mengenai aturan bisnis.
Kemudian server bertindak sebagai
conduit of passing memproses data dari
host ke client dimana kemudian diproses
atau difilter dan dipresentasikan ke
pemakai dalam format GUI. Antar muka
pemakai, aturan dan pengaksesan data
bertindak sebagai three tiers. Cient
biasanya dihubungkan ke server melalui
LAN dan server dihubungkan ke host
melalui WAN. Client melakukan remote
yang dihubungkan ke server melalui WAN

106
1001 Cara Bermain Basis Data

juga. Sistem ini sangat cocok untuk


perusahaan besar dimana basis data
terpusat dapat disimpan dalam host dan
biaya pembangunan LAN dan WAN dapat
diatur dan dioptimasi menggunakan
teknologi yang baru untuk setiap bagian
yang berbeda dalam organisasi.

7.3 PENGAKSESAN QUERY PADA


BASIS DATA CLIENT-SERVER
Bagaimana membagi fungsi DBMS
antara client dan server tidak ada
ketentuan. Sehingga banyak pendekatan
yang berbeda ditawarkan. Satu
kemungkinan adalah memasukkan fungsi
dari DBMS terpusat pada level server.
Sejumlah DBMS relasional menggunakan
pendekatan ini, dimana SQL server
disediakan untuk client. Setiap client harus
menggunakan query SQL yang tepat dan
menyediakan antar muka pemakai dan
fungsi antar muka untuk bahasa
pemrograman. Karena SQL adalah bahasa
standard relasional, berbagai SQL server,
meskipun disediakan oleh vendor yang
berbeda, dapat menerima perintah SQL.
Client juga merujuk pada data dictionary

107
1001 Cara Bermain Basis Data

yang didalamnya terdapat informasi pada


data distribusi diantara server SQL yang
berbeda, sebagai modul untuk
dekomposisi query global ke dalam
sejumlah query local yang dapat
dieksekusi pada berbagai tempat. Interaksi
antara client dan serber selama
pemrosesan query SQL adalah sebagai
berikut :
1. Client melakukan parsing query
pemakai dan memecahnya ke dalam
sejumlah query independent untuk
setiap tempat. Setiap query terseut
dikirim ke server yang sesuai.
2. Setiap server memproses query lokal
dan mengirim relasi hasil ke client.
3. Client mengkombinasikan hasil sub
query untuk mempruksi hasi dari
query asal yang dikirim.

Pada pendekatan ini, server SQL juga


disebut transaction server (atau database
processor (DP) atau back-end machine),
sedangkan client disebut application
processor (AP) atau front-end machine.
Interaksi antara client dan server
ditentukan oleh pemakai pada level client

108
1001 Cara Bermain Basis Data

atau melalui modul khusu pada DBMS


client yang merupakan bagian dari paket
DBMS. Sebagai contoh, pemakai
mengetahui apa data yang dikirim setiap
server, membagi permintaan query ke sub
query secara manual dan mengirimkan sub
query secara individu ke tempat yang
berbeda. Tabel hasil dikombinasikan
secara eksplisit dengan query user pada
level client. Alternatif lain adalah
mempunyai modul client yang melakukan
kegiatan diatas secara otomatis.
Dalam DDBMS yang banyak
digunakan, model perangkat lunak dibagi
ke dalam tiga level :

1. Perangkat lunak server bertanggung


jawab pada manajemen data lokal,
kebanyakan sama dengan perangkat
lunak DBMS.
2. Perangkat lunak client bertanggung
jawab untuk fungsi distribusi;
mengakses informasi distribusi data
dari katalog DDBMS dan memproses
semua permintaan yang membutuhkan
akses ke lebih dari satu tempat. Hal ini
juga ditangani semua antar muka user.

109
1001 Cara Bermain Basis Data

3. Perangkat lunak komunikasi (biasanya


dihubungkan dengan sistem operasi
terdistribusi) menyediakan primitif
komunikasi yang digunakanoleh client
untuk mengirim perintah dan data ke
tempat yang berbeda sesuai
kebutuhan. Hal ini bukan bagian yang
terpenting dalam DDBMS, tetapi
menyediakan primitf komunikasi dan
pelayanan yang esensial.

Client bertanggung jawab untuk


membangkitkan eksekusi terdistribusi
untuk beberapa tempat server suatu query
atau transaksi dan untuk melakukan
supervise eksekusi terdistribusi dengan
mengirim perintah ke server. Perintah ini
termasuk query lokal dan transaksi yang
dieksekusi selain perintah untuk mengirim
data ke client atau server lain. Fungsi lain
dikontrol oleh client (atau koordinator)
adalah menjamin konsistensi dari copy
replika dari item data dengan teknik
concurrency control terdistribusi (global).
Client harus menjamin transaksi global
atomik dengan membentuk global
recovery jika tempat yang dimaksud gagal.

110
1001 Cara Bermain Basis Data

Satu fungsi yang mungkin dari client


adalah menyembunyikan detail distribusi
data dari pemakai, yang memungkinkan
pemakai menulis query global dan
transaksi seperti basis data yang terpusat,
tanpa harus menentukan tempat dimana
data dirujuk dalam query atau transaksi
berada. Properti ini disebut distribution
transparency. Beberapa DDBMS tidak
melakukan distribution tranparency,
sehingga pemakai harus berhati-hati
terhadap distribusi data secara detail.

RINGKASAN :
 Konsep arsitektur client-server
berhubungan dengan basis data
terdistribusi.
 Arsitektur client-server yang
dikembangkan saat ini menggunakan
three-tier arsitektur dimana terdapat tiga
komponen utama yaitu host, server dan
client.
 Pengaksesan Query dilakukan dengan cara
client melakukan permintaan query
dengan mengirimkan sub query ke
beberapa tempat server dan setelah server
mengirimkan hasilnya ke client, client

111
1001 Cara Bermain Basis Data

mengkombinasikan hasil sub query ke


query asal.
 Modul perangkat lunak yang terdapat pada
DDBMS dapat dibagi dalam tiga level,
yaitu perangkat lunak server, client dan
komunikasi.

LATIHAN SOAL :

1. Apa yang dimaksud system client-server?


System client-server adalah system yang
terdiri dari client dan server, yang dimana
client dapat meminta data dari server dan
server sendiri bertugas sebagai penyedia
data.
2. Apa perbedaan konsep arsitektur client-
server yang ada sekarang dengan
arsitektur system terdistribusi?
Client-server yang ada sekarang
menggunakan three-tier arsitektur dengan
tiga komponen utama yaitu host, server
dan client sedangkan pada arsitektur
terdistribusi menggunakan two-tier
arsitektur dengan komponen utama yaitu
server dan client.

112
1001 Cara Bermain Basis Data

3. Sebutkan bagaimana tugas host, server


dan client pada arsitektur three-tier
architechture?
Host bertugas sebagai tempat
penyimpanan data, server bertugas sebagai
penengah dengan mengirim aturan bisnis
(prosedur atau constraint) yang digunakan
untuk mengakses data dari host, client
bertugas sebagai antar muka GUI dan
beberapa aplikasi tambahan mengenai
aturan bisnis.
4. Jelaskan bagaimana pengaksesan query
dari client ke server dan hasil query dari
server ke client ?
a. Client melakukan passing query dan
memecahnya menjadi sejumlah query
independent untuk setiap tempat. Lalu
setiap query dikirim ke server yang
sesuai.
b. Server memproses query dan
mengambil data dari host sesuai
dengan query dari client dan mengirim
hasil ke client.
c. Client mengkombinasi hasil sub query
untuk memproduksi hasil dari query
asal yang dikirim.

113
1001 Cara Bermain Basis Data

5. Perangkat lunak apa saja yang diperlukan


pada system client-server ?
a. Perangkat lunak server yang akan
bertanggung jawab pada manajemen
data lokal.
b. Perangkat lunak client yang
bertanggung jawab untuk fungsi
distribusi.
Perangkat lunak komunikasi yang
bertanggung jawab untuk menyediakan
primitif komunikasi yang digunakan oleh
client untuk mengirim perintah dan data
ketempat yang dibutuhkan.

114
1001 Cara Bermain Basis Data

BAB 8
BASIS DATA TERDISTRIBUSI

8.1 PENDAHULUAN
Pada basis data terdistribusi
(distributed database), data disimpan pada
beberapa tempat (site), setiap tempat
diatur dengan suatu DBMS (Database
Management System) yang dapat berjalan
secara independent. Properti yang
terutama terdapat pada basis data
terdistribusi :
 Independensi data terdistribusi :
pemakai tidak perlu mengetahui
dimana data berada (merupakan
pengembangan prinsip independensi
data fisik dan logika).
 Transaksi terdistribusi yang atomic :
pemakai dapat menulis transaksi yang
mengakses dan mengubah data pada
beberapa tempat seperti mengakses
transaksi local.
Untuk trend basis data terdistribusi
saat ini, pemakai harus mengetahui
dimana data ditempatkan, juga harus
mengetahui dimana system yang tidak
mendukung independensi data

115
1001 Cara Bermain Basis Data

terdistribusi dan transaksi terdistribusi


atomic. Kedua property tersebut harus
mendukung system secara efisien. Untuk
system terdistribusi yang bersifat global,
properti-properti tersebut kemungkinan
tidak tepat karena adanya administrasi
yang terlalu berlebihan dalam membuat
lokasi data yang transparan.

8.2 TIPE BASIS DATA TERDISTRIBUSI


Terdapat dua tipe basis data
terdistribusi :
 Homogen : yaitu sistem dimana setiap
tempat menjalankan tipe DBMS yang
sama.
 Heterogen : yaitu sistem dimana setiap
tempat yang berbeda menjalankan
DBMS yang berbeda, baik Relational
DBMS (RDBMS) atau non relational
DBMS. Gambaran basis data
terdistribusi yang heterogen dapat
dilihat pada Gambar 7-1.

116
1001 Cara Bermain Basis Data

8.3 ARSITEKTUR BASIS DATA


TERDISTRIBUSI
Terdapat tiga pendekatan alternatif
untuk membagi fungsi pada proses DBMS
yang berbeda. Dua arsitektur alternatif
DBMS terdistribusi adalah Client/Server
dan Collaboration Server.
 Client-Server
Sistem client-server mempunyai
satu atau lebih proses client dan satu
atau lebih proses server, dan sebuah
proses client dapat mengirim query ke
sembarang proses server seperti pada
Gambar 7-2. Client bertanggung jawab
pada antar muka untuk user,
sedangkan server mengatur data dan
mengeksekusi transaksi. Sehingga
suatu proses client berjalan pada
sebuah personal computer dan
mengirim query ke sebuah server yang
berjalan pada mainframe.

117
1001 Cara Bermain Basis Data

Arsitektur ini menjadi sangat popular


untuk beberapa alasan. Pertama,
implementasi yang relatif sederhana
karena pembagian fungis yang baik
dan arena server tersentralisasi.
Kedua, mesin server yang mahal
utilisasinya tidak terpengaruh pada
interaksi pemakai, meskipun mesin
client tidak mahal. Ketiga, pemakai
dapat menjalankan antarmuka berbasis
grafis sehingga pemakai lebih mudah
dibandingkan antar muka pada server
yang tidak user-friendly. Pada saat
menulis aplikasi client-server, perlu
diingat batasan antara client dan server
dan untuk menjaga komunikasi antara
keduanya yang berorientasi himpunan.
Khususnya membuka kursor dan
mengambil tupel pada satu waktu

118
1001 Cara Bermain Basis Data

membangkitkan beberapa pesan dan


dapat diabaikan.

 Collaboration Server
Arsitektur client-server tidak
mengijinkan satu query mengakses
banyak server karena proses client
harus dapat membagi sebuah quer ke
dalam beberapa subquery untuk
dieksekusi pada tempat yang berbeda
dan kemudian membagi jawaban ke
subquery. Proses client cukup
komplek dan terjadi overlap dengan
server; sehingga perbedaan antara
client dan server menjadi jelas. Untuk
mengurangi perbedaan diguankan
alternatif arsitektur client-server yaitu
sistem Collaboration Server. Pada
sistem ini terdapat sekumpulan server
basis data, yang menjalankan transaksi
data lokal yang bekerjasama
mengeksekusi transaksi pada beberapa
server seperti pada Gambar 7-3. Jika
server menerima query yang
membutuhkan akses ke data pada
server lain, sistem membangkitkan
subquery yang dieksekusi server lain

119
1001 Cara Bermain Basis Data

dan mengambil hasilnya bersama-


sama untuk menggabungkan jawaban
menjadi query asal.

8.4 PENYIMPANAN DATA PADA


SISTEM TERDISTRIBUSI
Pada DBMS terdistribusi, relasi
disimpan pada beberapa tempat.
Pengaksesan relasi yang disimpan pada
remote side mengakibatkan biaya
melewatkan pesan dan untuk
menguranginya, sebuah relasi dipartisi
atau difragmentasi ke beberapa tempat,
dengan fragmen dikirim pada tempat
dimana fragmen tersebut sering diakses,
atau replika pada pada setiap tempat
dimana relasi menjadi kebutuhan yang
tinggi.
 Fragmentasi

120
1001 Cara Bermain Basis Data

Fragmentasi terdiri dari relasi yang


dibagi ke relasi atau fragmen yang
lebih kecil dan mengirim fragmen,
pada beberapa tempat. Terdapat dua
macam fragmentasi, fragmentasi
horizontal dan fragmentasi vertikal.
Pada fragmentasi horisontal, setiap
fragmen terdiri dari sebuah subset
baris dari relasi asal. Pada fragmentasi
vertikal, setiap fragment terdiri dari
sebuah subset kolom dari relasi asal.
Fragmentasi horisontal dan vertikal
diilustrasikan pada Gambar 7-4.

Bila sebuah relasi difragmentasi,


harus meliputi relasi asal dari fragmen:
 Fragmentasi horisontal : union dari
fragmen horisontal harus sama

121
1001 Cara Bermain Basis Data

dengan relasi asal. Fragmen


biasanya dibutuhkan disjoint.
 Fragmentasi vertikal : koleksi
fragmen vertikal seharusnya
dekomposisi lossless-join.
Untuk menjamin fragmentasi vertikal
lossless-join, sistem harus
menyediakan id tupel yang unik untuk
setiap tupel dalam relasi asli. Jika kita
berpilir bahwa relasi asal sebagai field
yang berisi tambahan tupel-id sebagai
kunci, field ini ditambahkan ke setiap
fragmen vertikal. Sehingga
dekomposisi dijamin lossless-join.

 Replikasi
Replikasi berarti bahwa kita
menyimpan beberapa copy sebuah
relasi atau fragmen relasi. Keseluruan
relasi dapat direplikasi pada satu atau
lebih tempat. Sebagai contoh, jika
relasi R difragmentasi ke R1, R2 dan
R3, kemungkinan terdapat hanya, satu
copy R1, dimana R2 adalah replikasi
pada dua tempat lainnya dan R3
replikasi pada semua tempat. Hal ini
dapat diilustrasikan pada Gambar 7-5.

122
1001 Cara Bermain Basis Data

Motivasi untuk replikasi adalah :


 Meningkatkan ketersediaan data : Jika
sebuah tempat yang berisi replica
melambat, kita dapat menemuka data
yang sama pada tempat lain. Demikian
pula, jika copy lokal dari relasi yang
diremote tersedia, maka tidak
terpengaruh saluran komunikasi yang
gagal.
 Evaluasi query yang lebih cepat :
query dapat mengeksekusi lebih cepat

123
1001 Cara Bermain Basis Data

menggunakan copy local dari relasi


termasuk ke remote site.

8.5 MANAJEMEN KATALOG


TERDISTRIBUSI
Menyimpan data terdistribusi pada
beberapa tempat dapat menjadi sangat
kompleks. Kita harus menyimpan data
bagaimana relasi difragmentasi dan
replikasi, bagaimana fragmen relasi
didistribusikan ke beberapa tempat dan
dimana kopi dari fragmen disimpan. Nama
setiap replika dari setiap fragmen harus
ada. Untuk menyediakan otonomo lokal
digunakan format sebagai berikut : <local-
name, birth-site>
Katalog setiap tempat
menggambarkan semua obyek (fragmen,
replika) pada suatu tempat dan
menyimpan data replika dari relasi yang
dibuat pada tempat tersebut. Untuk
menemukan relasi, lihat pada katalog
birth-site. Birth-site tidak pernah
berubah meskipun relasi dipindahkan.

8.6 QUERY TERDISTRIBUSI


Misalnya pada dua relasi :

124
1001 Cara Bermain Basis Data

Sailors(sid: integer, sname: string, rating:


integer, age: real)
Reserves(sid: integer, bid: integer, day:
date, rname: string)
Kemudian dilakukan query berikut :
SELECT AVG(S.age) FROM Sailors S
WHERE S.rating > 3 AND S.rating < 7
 Fragmentasi horisontal : tupel dengan
rating < 5 pada Shanghai, >= 5 pada
Tokyo. Harus menghitung SUM(age),
COUNT(age) pada kedua tempat. Jika
WHERE berisi hanya S.rating>6,
maka hanya satu tempat.
 Fragmentasi vertikal : sid dan rating
pada Shanghai, sname dan age pada
Tokyo, tid pada kedua tempat. Harus
melakukan rekonstruksi relasi dengan
join pada tid kemudian mengevaluasi
query.
 Replikasi : Sailor di-copy kan pada
kedua tempat.

125
1001 Cara Bermain Basis Data

8.7 JOINS PADA DBMS


TERDISTRIBUSI
Sebagai contoh, London menyimpan
500 halaman Sailor dan Paris mempunyai
1000 halaman Reserves seperti Gambar 7-
6.

Untuk menangani joing pada DBMS


terdistribusi harus diperhatikan hal-hal
berikut :
 Ambil halaman sesuai kebutuhan,
pada suatu nested loop join di London
dengan Sailor sebagai outer dan setiap
halaman Sailor, ambil semua halaman
Reserver dari Paris. Jika halaman
Reserves di London diambil sampai
join selesai, halaman akan diambil
sekali, tetapi asumsikan bahwa
halaman Reserves tidak diambil semul
sampai selesai, maka biaya akan
menjadi mahal.

126
1001 Cara Bermain Basis Data

- Biaya : 500 D + 500 * 1000 (D+S).


- D adalah biaya membaca/menulis
halaman; S adalah biaya
pengiriman halaman.
- Jika query tidak dikirim ke
London, harus menambah biaya
hasil pengiriman ke query site.
- Dapat juga mengerjakan inner
nested loop di London, ambil
tupelo Reserves yang sesuai ke
London sesuai kebutuhan.
 Pengiriman ke satu tempat : Kirimkan
Reserves ke London.
- Biayat: 1000 S + 4500 D (Semi
Join; biaya = 3*(500+1000)).
- Jika ukuran hasil sangat besar,
lebih baik mengirimkan kedua
relasi ke result site dan kemudian
lakukan join.

Semijoin
Teknik semijoin ditujukan untuk
mengurangi jumlah tupelo Reserves yang
dikirim. Idenya terdiri dari langkah-langkah
berikut :
1. Di London, proyeksikan Sailors ke kolom
join dan kirimkan ke Paris.

127
1001 Cara Bermain Basis Data

2. Di Paris, lakukan join pada proyeksi


Sailors dengan Reserves. Hasil join
disebut reduksi dari Reserves dengan
Sailors.
3. Kirimkan reduksi Reserves ke London.
4. Pada London, join Sailors dengan
Reserves yang sudah direduksi.
Ide dari langkah semijoin tersebut adalah
mengurangi biaya komputasi dan proyeksi
pengiriman dan komputasi dan proyeksi
pengiriman untuk biaya pengiriman relasi
Reserves penuh. Semijoin terutama
bermanfaan jika terdapat sebual seleksi pada
Sailors dan jawaban tersedia di London.

Bloomjoin
Teknik bloomjoin juga ditujukan untuk
mengurangi jumlah tupelo Reserves yang
dikirim. Idenya terdiri dari langkah-langkah
berikut :
1. Di London, hitung sebuat bit-vector dari
beberapa ukuran k. Nilai kolom hash join
mempunyai jangkauan 0 sampai k-1. Jika
beberapa tupel melakukan teknik hashing
ke I, set bit I menjadi 1 (I dari 0 sampai k-
1). Kirimkan bit-vector ke Paris.

128
1001 Cara Bermain Basis Data

2. Di Paris, lakukan hashing setiap tupel


Reserves dengan cara yang sama dan
abaikan tupel yang melakukan hashing ke
0 di bit-vector Sailors. Hasilnya disebut
reduksi Reserves with Sailors.
3. Kirimkan bit-vector hasil reduksi
Reserves ke London.
4. Di London, join Sailors dengan hasil
reduksi Reserves.
5. Bit-vector biaya pengirimannya lebih
murah, juga lebih efektif.

8.8 OPTIMASI QUERY PADA DBMS


TERDISTRIBUSI
Untuk optimasi query pada sistem
terdistribusi, menggunakan pendekatan biaya,
misalnya pada semua plan, mengambil yang
termurah, sama dengan optimasi
tersentralisasi. Perbedaan optimasi query pada
sistem terdistribusi dan system tersentralisasi,
pertama, biaya komunikasi harus
dipertimbangkan. Kedua, otonomi tempat
lokal harus diperhatikan. Ketiga,
menggunakan metode join terdistribusi yang
baru.
Query site membangun daerah global,
dengan daerah local menggambarkan

129
1001 Cara Bermain Basis Data

pemrosesan pada setiap tempat. Jika sebuah


tempat dapat melakukan improvisasi pada
daerah lokal, dapat dilakukan dengan bebas.

8.9 MENGUBAH DATA


TERDISTRIBUSI
Untuk melakukan pengubahan data
terdistribusi, dilakukan replikasi transaksi
yang dapat dilakukan dengan cara :
 Synchronous Replication : semua copy
dari relasi yang dimodifikasi
(fragmen) harus diubah sebelum
modifikasi transaksi commit.
Distribusi data dibuat transparan ke
pemakai.
 Asynchronous Replication : Copy dari
sebuah relasi yang dimodifikasi hanya
diubah secara periodik, copy yang
berbeda akan keluar dari sinkronisasi.
User harus waspada pada distribusi
data. Produk saat ini mengikuti
pendekatan ini.

130
1001 Cara Bermain Basis Data

Synchronous Replication
Terdapat dua teknik dasar untuk menjamin
transaksi terlihat nilai yang sama dengan copy,
yaitu :
 Voting : transaksi harus menulis mayoritas
copy untuk memodifikasi sebuah obyek,
harus membaca cukup copy untuk
meyakinkan bahwa terlihat setidaknya
satu dari copy saat itu. Misalnya terdapat
10 copy, 7 penulisan untuk perubahan dan
4 copy untuk pembacaan. Setiap copy
mempunyai nomor versi. Teknik ini
biasanya tidak atraktif karena pembacaan
adalah hal yang biasa.
 Read-any Write-all: penulisan lebih
lambah dan pembacaan lebih cepat
daripada teknik Voting. Teknik ini banyak
digunakan pada synchronous replication.
Pemilihan teknik synchronous replication
akan menentukan tempat mana yang terkunci
untuk seting.
Biaya pada synchronous replication
adalah sebagai berikut : sebelum transaksi
yang diubah commit, harus dilihat penguncian
pada semua copy yang dimodifikasi.
Kirimkan perintah lock ke remote site, dan
sementara menunggu respon, pegang kunci

131
1001 Cara Bermain Basis Data

yang lain. Jika tempat atau saluran gagal,


transaksi tidak dapat commit sampai transaksi
kembali. Meskipun tidak terjadi kegagalan,
commit harus mengikuti commit protocol
dengan beberapa pesan yang mahal. Karena
itu alternative teknik asynchronous replication
banyak digunakan.

Asynchronous Replication
Asynchronous replication mengijinkan
memodifikasi transaksi commit sebelum
semua copy diubah (dan pembaca tidak hanya
melihat satu copy). Pemakai harus waspada
copy yang keluar dari sinkronisasi untuk suatu
periode waktu yang pendek.
Teknik asynchronous replication
menggunakan dua pendekatan, yaitu Primary
Site dan Peer to Peer replication. Perbedaan
kedua teknik ini terletak pada berapa banyak
copy yang dapat diubah atau copy master.
 Peer to Peer replication.
Lebih dari satu copy dari suatu obyek
dapat menjadi sebuah master. Perubahan
ke copy master harus dipropaganda ke
copy lain dengan cara yang berlainan. Jika
dua copy master diubah dan terjadi suatu
konflik, konflik harus dipecahkan

132
1001 Cara Bermain Basis Data

(misalnya Tempat 1 : umur Joe mengubah


35, Tempat 2 : mengubah 36. Teknik ini
bagus digunakan jika konflik tidak terjadi,
misalnya setiap tempat master memiliki
fragmen disjoin dan yang memiliki hak
pengubahan dimiliki oleh satu master pada
satu waktu.
 Primary Site replidation.
Tepat satu copy dari suatu relasi
digunakan sebagai primary copy atau
master copy. Replika pada tempat lain
tidak langsung diubah. Primary copy
dipublikasikan. Tempat lain menjalankan
(fragmen) ke relasi ini, terdapat beberapa
copy sekunder. Isu utama adalah
bagaimana pengubahan primary copy
dapat dipropaganda ke copy sekunder ?
Hal in idapat dilakukan dalam dua
langkah. Langkah pertama ambil
pengubahan yang dibuat dengan transaksi
commit, kemudian aplikasikan perubahan
tersebut. Exactly one copy of a relation is
designated the primary or master copy.
Replicas at other sites cannot be directly
updated.
Implementasi Primary Site pada
Asynchronous Replication

133
1001 Cara Bermain Basis Data

Isu utama dalam mengimplementasikan


primary site replication adalah menentukan
barapa banyak perubahan ke primary copy
dipropaganda ke copy sekunder. Perubahan
biasanya dipropaganda dalam dua langkah
yaitu Capture dan Apply. Perubahan dibuat
dengan transaksi commit ke primary copy
yang diidentifikasi selama langkah Capture
dan dipropaganda ke copy sekunder selama
langkah Apply.

Mengimplementasikan Langkah Capture


Langkah Capture diimplementasikan
dengan satu dari dua pendekatan, yaitu Log-
Based Capture dan Procedureal Capture.
 Log-Based Capture : log (menyimpan
recovery) digunakan untuk
membangkitkan Change Data Table
(CDT). Jika hal ini dikerjakan ketika
log terakhir ditulis ke disk, harus
menghapus perubaan ke subsequent
yang dihentikan transaksi.
 Procedural Capture: suatu prosedur
yang secara otomatis dibangkitkan
(trigger) mengerjakan capture.
Implementasi capture dengan Log-Based
Capture lebih baik karena lebih murah dan

134
1001 Cara Bermain Basis Data

lebih cepat tetapi harus memahami detail dari


property log.

Mengimplementasikan Langkah Apply


Proses Apply pada tempat sekunder secara
periodic mengakibatkan perubahan ke table
CDT dari primary site, dan mengubah copy.
Periode didefinisikan oleh timer atau
pemakai/aplikasi. Replika dapat dipandang
lebih dari relasi yang dimodifikasi. Jika hal ini
terjadi, replica terdiri dari pengubahan
pandangan material yang naik sebagai
perubahan relasi.
Log-Based Capter ditambah Apply yang
terus-menerus akan meminimalkan delay pada
propaganda perubahan. Procedureal Capture
ditambah application-driven Apply
merupakan cara yang fleksibel untuk
perubahan proses.

Data Warehousing : Sebuah contoh


Replication
Trend yang berkembang saat ini adalah
membangun “warehouses” data yang sangat
besar dari beberapa tempat. Hal ini
memungkinkan untuk query pendukung
keputusan yang kompleks dari data pada

135
1001 Cara Bermain Basis Data

keseluruhan organisasi. Warehouse dapat


dipandang sebagai instance dari asynchronous
replication. Data sumber biasanya dikontrol
dengan DBMS yang berbadi, penekanannya
pada cleaning data dan menghapus kesalahan
pada pembuatan replikasi. Prosedur Capture
dan aplikasi Apply baik untuk lingkungan ini.

8.10 LOCKING PADA SISTEM


TERDISTRIBUSI

Untuk menangani penguncian obyek pada


beberapa tempat digunakan cara :
• Sentralisasi : satu tempat melakukan semua
penguncian dan membuka kunci
untuk semua obyek
• Primary Copy : semua penguncian untuk
suatu obyek dikerjakan pada tempat
primary copy dari obyek tersebut. Untuk
pembacaan membutuhkan akses ke
tempat terkunci sebaik tempat dimana obyek
disimpan.
• Terdistribusi penuh : penguncian untuk suatu
copy dilakukan pada tempat
dimana copy disimpan. Hal in akan mengunci
semua tempat pada saat menulis
obyek.
Distributed Deadlock Detection
Setiap tempat menangani local wait-for graph.
Deadlock global akan terjadi jika

136
1001 Cara Bermain Basis Data

local graph tidak membentuk siklus seperti


dapat dilihat pada Gambar 7-6 menunjukkan
terjadi deadlock global.

Untuk mendeteksi deadlock digunakan tiga


solusi yaitu : Sentralisasi, yaitu
mengirim semua local graph ke satu tempat.
Hierarki yaitu mengorganisasi tempat ke
dalam suatu hirarki dan mengirim local graph
ke parent dari hirarki. Timeout yaitu
menghentikan transaksi jika menunggu terlalu
lama.

8.11 DISTRIBUTED RECOVERY


Proses pemulihan pada DBMS
terdistribusi lebih kompleks daripada
pada DBMS tersentralisasi karena
sebab berikut :
 Terjadi kegagalan yang baru,
misalnya saluran komunikasi dan
remote site.
 Jika sub transaksi dari suatu
transaksi mengeksekusi tempat
yang berbeda, semua atau tidak ada
yang harus commit. Hal ini
memerlukan commit protocol

137
1001 Cara Bermain Basis Data

untuk menangani hal tersebut.


Suatu log ditangani pada setiap
tempat, sebagaimana pada DBMS
tersentralisasi dan aksi commit
protocol ditambahkan pada log.

Two-Phase Commit (2PC)


Tempat dimana transaksi asal disebut
koordinator, sedangkan tempat lain dimana
transaksi mengeksekusi disebut sub ordinat.
Jika sebuah transaksi ingin commit maka
coordinator mengirim pesan prepare ke
semua sub ordinat. Sub ordinat memaksa
menulis rekaman log abort atau prepare dan
mengirim suatu pesan no or yes ke
coordinator. Jika coordinator menerima pesan
yes, maka coordinator memaksa menulis suatu
rekaman log commit dan mengirim pesan
commit ke semua sub ordinat. Sebaliknya,
memaksa menulis rekaman log abort dan
mengirim pesan abort. Sub Ordinat memaksa
menulis rekaman log abort/commit
berdasarkan pesan yang didapat, kemudian
mengirim pesan ack ke koordinator.
Koordinator menulis rekaman log end setelah
mendapatkan semua pesan ack.

138
1001 Cara Bermain Basis Data

Pada 2PC terdapat dua bentuk


komunikasi, pertama voting kemudian
terminasi. Kedua bentuk komunikasi
diinisialisasi oleh coordinator. Setiap tempat
dapat memutuskan untuk abort suatu
transaksi. Setiap pesan merupakan keputusan
oleh pengirim, untuk menjamin bahwa
keputusan bertahan dari kegatalah. Untuk itu
pertama kali disimpan pada local log. Semua
commit protocol menyimpan log untuk suatu
transaksi yang terdiri dari id transaksi dan id
coordinator. Rekaman abort/commit oleh
coordinator juga termasi id semua sub ordinat.

Restart Setelah Suatu Kegagalan pada


Suatu Tempat
 Jika kita mempunyai rekaman log commit
atau abort untuk transaksi T, tetapi tidak
mempunyai rekaman end, maka harus
redo/undo T. Jika tempat ini adalah
coordinator untuk T, tetap kirimkan pesan
commit/abort ke sub ordinat sampai
diterima pesan ack.
 Jika kita menyiapkan rekaman log
transaksi T, tetapi tidak commit/abort,
tempat ini adalah sub ordinat untuk T. Sub
ordinat terus menghubungi coordinator

139
1001 Cara Bermain Basis Data

untuk menemukan status T, kemunian


menulis rekaman log commit/abort
redo/undo T dan menulis rekaman log
end.
 Jika kita tidak meyiapkan rekaman log
untuk T, secara sepihak akan abort dan
undo T. Tempat ini kemungkinan
coordinator. Jika ya, sub ordinat mungkin
mengirim pesan
Jika coordinator untuk transaksi gagal, sub
ordinat yang memilih yes tidak dapat
memutuskan apakah commit atau abort T
sampai coordinator pulih. Pada saat itu T akan
diblok. Meskipun jika semua sub ordinat
saling mengetahui (melebihi yang tersedia
pesan) maka transaksi adakn diblok sampai
satu dari sub ordinat memilih no.
Jika suatu remote site tidak merespon
selama commit protocol untuk transaksi T, aik
karena tempat gagal atau saluran gagal :
 Jika tempat tersebut adalah coordinator
untuk T, maka abort T.
 Jika tempat tersebut adalah sub ordinat,
dan tidak memilih yes, maka harus abort T
 Jika tempat tersebut sub ordinat dan
memilih yes, maka akan diblok sampai
coordinator me-respon.

140
1001 Cara Bermain Basis Data

Pesan ack digunakan untuk


menyampaikan coordinator bahwa
koordinat dapat melupakan suatu
transaksi, sampai coordinator menerima
semua ack, harus menyimpan T pada table
transaksi.
 Jika coordinator gagal setelah
mengirim pesan siap tetapi sebelum
menulis rekaman log commit/abort,
jika coordinator kembali maka akan
abort transaksi.
 Jika sub transaksi tidak diubah, status
commit atau abort tidak relevan.
Apabila coordinator menghentikan (abort)
T, koordiator tidak mengerjakan T dan
menghapusnya dari table transaksi segera. Jadi
coordinator tidak menunggu acks, “presumes
abort” jika transaksi tidak di dalam table
transaksi. Nama sub ordinat tidak disimpan
dalam rekaman log abort. Sub ordinat tidak
mengirim ack pada abort. Jika sb transaksi
tidak diubah, sub ordinat merespon pesan
prepare dengan menulis yes/no. Koordinat
mengabaikan pembaca. Jika semua sub
transaksi adalah pembaca, fase kedua tidak
diperlukan.

141
1001 Cara Bermain Basis Data

RINGKASAN :

 Pada basis data terdistribusi, data disimpat


pada beberapa lokasi dengan tujuan untuk
membuat distribusi yang transparan. Pada
basis data terdistribusi, distributed data
independence (pemakai tidak perlu
mengetahui lokasi data ) dan distributed
transaction atomicity (dimana tidak ada
perbedaan antara transaksi terdistribusi
dan transaksi local). Jika semua lokasi
menjalankan perangkat lunak DBMS yang
sama, system disebut homogen, selain itu
disebut heterogen.
 Arsitektur sistem basis data terdistribusi
terdapat tiga tipe. Pada system Client-
Server, server menyediakan fungsi DBMS
dan client menyediakan antar muka
pemakai. Pada Collaboration system
system, tidak terdapat perbedaan antara
proses client dan server.
 Pada DBMS terdistribusi, suatu relasi
difragmentasi dan direplikasi pada
beberapa tempat. Dalam fragmentasi
horizontal, setiap partisi terdiri dari
himpunan baris dari relasi asal. Dalam
fragmentasi vertika, setiap partisi terdiri

142
1001 Cara Bermain Basis Data

dari himpunan kolom pada relasi asal.


Pada replikasi, disimpan beberapa copy
dari relasi atau suatu partisi pada beberapa
tempat. Jika suatu relasi difragmen dan
direplika, setiap partisi memerlukan nama
global yang unik yang disebut relation
name. Manajemen catalog terdistribusi
diperlukan untuk menyimpan rekaman
dimana data disimpan.
 Pada pemrosesan query dalam DBMS
terdistribusi, lokasi partisi dari relasi perlu
dihitung. Join dua relasi dapat dilakukan
dengan mengirim satu relasi ke tempat lain
dan membentuk local join. Jika join
melibatkan kondisi seleksi, jumlah tupel
yang diperlukan kemungkinan kecil.
Semijoin dan Bloomjoin mengurangi
jumlah tupel yang dikirim ke jaringan
dengan mengirim informasi terlebih
dahulu yang mengijinkan mem-filter tupel
yang tidak relevan. Optimasi query pada
system terdistribusi harus
mempertimbangkan komunikasi dengan
model biaya.
 Pada synchronous replication, semua copy
dari relasi replica diubah sebelum
transaksi commit. Pada asynchronous

143
1001 Cara Bermain Basis Data

replication, copy hanya diubah secara


periodic. Terdapat dua teknik untuk
menjamin synchronous replication. Secara
voting, perubahan harus menulis
mayoritas copy dan membaca harus
mengakses cukup copy untuk menjamin
bahwa satu copy sudah tersedia. Pada
replikasi peerto-peer, lebih dari satu copy
dapat diubah dan strategi conflict
resolution dapat mengubah konflik yang
terjadi. Pada replikasi primary site,
terdapat satu primary copy yang dapat
diubah, copy sekunder lain tidak dapat
diubah. Pengubahan pada primary copy
dipropaganda menggunakan capter dan
kemudian apply ke tempat lain.
 Jika suatu transaksi melibatkan aktivitas
pada tempat yang berbeda, maka
memanggil aktivitas sub transaksi.
 Pada DBMS terdistribusi, manajemen lock
berupa lokasi sentral, primary copy atau
terdistribusi penuh. Deteksi deadlock pada
system terdistribusi dibutuhkan.
 Pemulihan pada DBMS terdistribusi
dilakukan menggunakan commit protocol
yang mengkoordinasi aktivitas pada
tempat yang berbeda yang dilibatkan pada

144
1001 Cara Bermain Basis Data

transaksi. Pada Two-Phase Commit, setiap


transaksi didesain oleh tempat
coordinator. Sub transaksi dieksekusi pada
tempat sub ordinat. Protokol menjamin
bahwa perubahan dibuat oleh beberapa
transaksi dapat dipulihkan. Jika tempat
coordinator bertabrakan, sub ordinat di
blok, dan sub ordinat harus menunggu
coordinator pulih.

LATIHAN SOAL :

1. Apakah keuntungan DBMS terdistribusi


dibandingkan dengan DBMS
tersentralisasi?
A. Keberadaan data yang ditingkatkan
Pada DBMS yang tersentralisasi
kegagalan pada suatu site akan
mematikan seluruh operasional
DBMS. Namun pada DDBMS
kegagalan pada salah satu site, atau
kegagalan pada hubungan komunikasi
dapat membuat beberapa site tidak
dapat di akses, tetapi tidak membuat
operasional DBMS tidak dapat
dijalankan.
B. Kinerja yang ditingkatkan

145
1001 Cara Bermain Basis Data

Sebuah data ditempatkan pada


suatu site dimana data tersebut banyak
di akses oleh pengguna, dan hal ini
mempunyai dampak yang baik untuk
paralel DBMS yaitu memiliki
kecepatan dalam pengkasesan data
yang lebih baik dibandingkan dengan
basis data tersentralisasi Selanjutnya,
sejak masing-masing site hanya
menangani sebagian dari seluruh basis
data , mengakibakan perbedaan pada
pelayanan CPU dan I/O seperti yang di
karakteristikan pada DBMS
tersentralisasi.
C. Perkembangan modular
Di dalam lingkungan terdistribusi,
lebih mudah untuk menangani
ekspansi . Site yang baru dapat di
tambahkan ke suatu jaringan tanpa
mempengaruhi operational dari site –
site yang ada. Penambahan ukuran
basis data dapat di tangani dengan
menambahkan pemrosesan dan daya
tampung penyimpanan pada suatu
jaringan. Pada DBMS yang
tersentralisasi perkembangan akan di

146
1001 Cara Bermain Basis Data

ikuti dengan mengubah perangkat


keras dan perangkat lunak.

2. Gambarkan arsitektur Client-Server dan


Collaboration-Server.
A. Client Server
Untuk mengatasi kelemahan
arsitektur-arsitektur di atas maka
dikembangkan arsitektur client-server.
Client-server menunjukkan cara
komponen software berinteraksi dalam
bentuk sistem. Sesuai dengan
namanya, ada sebuah pemroses client
yang membutuhkan sumber dan
sebuah server yang menyediakan
sumbernya. Tidak ada kebutuhan
client dan server yang harus diletakkan
pada mesin yang sama. Secara ringkas,
umumnya server diletakkan pada satu
sisi dalam LAN dan client pada sisi
yang lain.

147
1001 Cara Bermain Basis Data

Gambar 6. Arsitektur Client Server

Dalam konteks basis data, client


mengatur interface berfungsi sebagai
workstation tempat menjalankan
aplikasi basis data. Client menerima
permintaan pemakai, memeriksa
sintaks dan generate kebutuhan basis
data dalam SQL atau bahasa yang lain.
Kemudian meneruskan pesan ke
server, menunggu response dan
bentuk response untuk pemakai akhir.
Server menerima dan memproses
permintaan basis data kemudian
mengembalikan hasil ke client.
Proses-proses ini melibatkan
pemeriksaan autorisasi, jaminan
integritas, pemeliharaan data

148
1001 Cara Bermain Basis Data

dictionary dan mengerjakan query


serta proses update. Selain itu juga
menyediakan kontrol terhadap
concurrency dan recovery.

B. Collaboration Server
Arsitektur client–server tidak
mengijinkan satu query mengakses
banyak server karena proses client
harus dapat membagi sebuah query ke
dalam beberapa subquery untuk
dieksekusi pada tempat yang berbeda
dan kemudian membagi jawaban ke
subquery. Proses client cukup
komplek dan terjadi overlap dengan
server; sehingga perbedaan antara
client dan server menjadi jelas. Untuk
mengurangi perbedaan diguankan
alternatif Arsitektur client–server
yaitu sistem Collaboration Server.
Pada sistem ini terdapat sekumpulan
server basis data, yang menjalankan
transaksi data lokal yang bekerjasama
mengeksekusi transaksi pada beberapa
server seperti pada Gambar 2.4.
Jika server menerima query yang
membutuhkan akses ke data pada

149
1001 Cara Bermain Basis Data

server lain, sistem membangkitkan


subquery yang dieksekusi server lain
dan mengambil hasilnya bersama-
sama untuk menggabungkan jawaban
menjadi query asal.

Gambar 2.4 Sistem Collaboration

3. Pada arsitektur collaboration server, jika


suatu transaksi dikirim ke DBMS, akan
digambarkan bagaimana aktivitas tempat
yang berbeda dikoordinasi. Secara khusus,
gambarkan aturan manager transaksi pada
tempat berbeda, konsep atomic transaksi
terdistribusi.
Pada sistem ini terdapat sekumpulan
server basis data, yang menjalankan
transaksidata lokal yang bekerjasama
mengeksekusi transaksi pada beberapa
server seperti padaGambar diatas.Jika
server menerima query yang
membutuhkan akses ke data pada server
lain,sistem membangkitkan subquery

150
1001 Cara Bermain Basis Data

yang dieksekusi server lain dan


mengambilhasilnya bersama-sama untuk
menggabungkan jawaban menjadi query
asal.
Kelebihan arsitektur collaboration
1. Dapat menangani pengaksesan
query dalam jumlah yang banyak
atau multi query.
2. Dapat menangani sub queri dalam
tempat yang berbeda.

Kekurangan
Tidak cocok di gunakan untuk skala
yang kecil karena collaboration
memerlukan banyak memori, sehingga
jika di gunakan dalam skala kecil akan
mengakibatkan pemborosan memori.

4. Definisikan fragmentasi dan repkasi


dalam hal dimana data disimpan.
Fragmentasi Data merupakan sebuah
proses pembagian atau pemetaan
database dimana database dipecah-pecah
berdasarkan kolom dan baris yang
kemudian disimpan didalam site atau unit
komputer yang berbeda dalam suatu

151
1001 Cara Bermain Basis Data

jaringan data, sehingga memungkinkan


untuk pengambilan keputusan terhadap
data yang telah terbagi. Data yang telah
dipecah-pecah masih memungkinkan
untuk digabungkan lagi dengan maksud
untuk kelengkapan pendataan.
Replikasi adalah suatu teknik untuk
melakukan copy dan pendistribusian data
dan objek-objek database dari satu
database ke database lain dan
melaksanakan sinkronisasi antara database
sehinggakonsistensi data dapat terjamin.

5. Apakah perbedaan antara replikasi


synchronous dan asynchronous ?
A. Replikasi Synchronous
• Proses dilakukan secara real-time
antara master dengan slave.
• Keseluruhan proses penulisan pada
disk master dan slave harus selesai
terlebih dahulu sebelum beranjak ke
transaksi selanjutnya.

152
1001 Cara Bermain Basis Data

• Kebutuhan akan performansi sistem


yang tinggi harus dipertimbangkan
(kecepatan & jarak antar site/node).
• Keuntungannya : menyediakan
recovery yang konsisten karena
sinkronisasi data terjaga.
B. Replikasi Asynchronous
• Proses replikasi terjadi setelah
transaksi di master selesai.
• Pertukaran data secara buffering, data
akan diletakkan dalam sebuah buffer
terlebih dahulu, kemudian pada jangka
waktu tertentu akan direplikasi ke disk
slave.
• Tidak menjamin kesinkronan data
apabila salah satu site/node mengalami
crash saat replikasi belum selesai
dilaksanakan.
• Keuntungan : efektifitas biaya proses
transaksi

6. Definisikan distributed data


independence.

153
1001 Cara Bermain Basis Data

Distributed data independence pada


basis data terdistribusi, data di simpan
pada beberapa lokasi dengan tujuan untuk
membuat distribusi yang transparan,
sehingga pemakai tidak perlu mengetahui
lokasi data.

7. Bagaimana teknik voting dan read-one


write-all diimplementasikan pada replikasi
synchronous ?
Teknik voting mengharuskan transaksi
menulis mayoritas copy untuk
memodifikasi sebuahobyek, harus
membaca cukup copy untuk meyakinkan
bahwa terlihat setidaknya satu dari copy
saat itu. Misalnya terdapat 10 copy, 7
penulisan untuk perubahan dan 4 copy
untuk pembacaan. Setiap copy
mempunyai nomor versi. Teknik read-any
write-all teknik ini banyak digunakan pada
synchronous replication karena penulisan
lebih lamban dan pembacaan lebih cepat
daripada teknik voting.
8. Berikan penjelasan bagaimana
asynchronous replication
diimplementasikan. Khususnya, jelaskan
maksud capture dan apply.

154
1001 Cara Bermain Basis Data

Dalam pengimplementasiannya
dibutuhakan penentuan berapa banyak
perubahan ke primary copy dipropaganda
ke copy sekunderPerubahan dibuat dengan
transaksi commit ke primary copy yang
diidentifikasi selama langkah Capture dan
dipropaganda ke copy sekunder selama
langkah Apply. Sedangkan langkah
Capture diimplementasikan dengan satu
dari dua pendekatan, yaituLog-Based
Capture dan Procedureal
Capture.Implementasi capture dengan
Log-Based Capture lebih baik karena lebih
murah dan lebih cepat tetapi harus
memahami detail dari property log.
Log-Based Capter ditambah Apply
yang terus-menerus akan meminimalkan
delay pada propaganda perubahan.
Procedureal Capture ditambah
application-driven Apply merupakan cara
yang fleksibel untuk perubahan proses.

9. Apakah perbedaan antara log-based dan


procedureal untuk implementasi capture?
Pada procedural capture otomatis
membangkitkan trigger dan mengerjakan
capture dan kebalikan untuk log-based

155
1001 Cara Bermain Basis Data

namun, implementasi capture dengan Log-


Based Capture lebih baik karena lebih
murah dan lebih cepat tetapi harus
memahami detail dari property log.

10. Mengapa pemberian nama unik pada


obyek basis data lebih kompleks pada
DBMS terdistribusi ?
Sistem database terdistribusi, masing-
masing database harus memiliki global
database name yang unik.Nama-nama
unik ini mengidentifikasi sebuah database
dalam sistem tersebut.

156
1001 Cara Bermain Basis Data

BAB 9
BASIS DATA INTERNET

9.1 WORLD WIDE WORLD


Web memungkinkan mengaksen suatu
file dimanapun pada internat. Suatu file
diidentifikasi dengan universal resource
locater (URL), contohnya :
http://www.eepisits.edu/~database/index.
html
URL diatas mengidentifikasi suatu file
bernama index.html, disimpan pada
directory ~database pada mesin
www.eepis-its.edu. File ini adalah suatu
dokumen yang mempunyai format
Hypertext Markup Language (HTML) dan
berisi beberapa link ke file lain (yang
diidentifikasi melalui URL-nya).
Perintah diterjemahkan oleh Web
browser seperti Microsoft Internet
Explorer, Netscape Navigator atau Opera
untuk menampilkan dokumen secara
atraktif dan pemakai kemudian dapat
menavigasi ke dokumen yang
berhubungan dengan memilih link. Suatu
koleksi beberapa dokumen disebut web
iste dan diatur menggunakan program

157
1001 Cara Bermain Basis Data

yang disebut web server, yang menerima


URL dan menampilkan dokumen yang
diperlukan. Beberapa organisasi saat ini
menangani web site. World Wide Web atau
Web, adalah kumpulan web site yang dapat
diakses di internet.
HTML menghubungkan isi URL, yang
mengidentifikasi tempat yang berisi file
yang berhubungan. Jika seorang pemakai
click pada suatu link, Web browser
menghubungkan ke Web server tujuan
menggunakan protokol koneksi HTTP dan
mengirim link URL. Jika browser
menerima file dari web server, akan
diperiksa tipe file dengan melihat
extension dari nama file. Web browser
menampilkan fijle berdasarkan tipe file
dan jika perlu memanggil program
aplikasi untuk menangani file. Sebagai
contoh, sebuah file yang diakhiri .txt
merupakan file teks tak berformat, web
browser menampilkan dengan
menterjemahkan karakter ASCII dalam
file. Struktur dokumen yang lebih tepat
dapat dikodekan dalam HTML, yang
menjadi cara standart struktur web page.
Contoh lain, file .doc merupakan dokumen

158
1001 Cara Bermain Basis Data

Microsoft Word dan Web browser


menampilkna file dengan menggunakan
Microsoft Word.

9.2 HIPERTEXT MARKUP LANGUAGE


(HTML)
Hipertext Markup Language (HTML)
merupakan bahasa pemrograman
berbentuk skrip yang sederhana. Teks
diawali dan diakhiri dengan perintah yang
disebut tags, biasanya terdiri dari start tag
dan end tag.
Contoh skrip HTML untuk melihat
daftar buku :
<HTML>
<BODY>
Fiction:
<UL>
<LI>Author: Milan Kundera</LI?
<LI>Title: Identity</LI>
<LI>Published: 1998</LI>
</UL>
Science:
<UL>
<LI>Author: Richard Feynman</LI>
<LI>Title: The Character of Physical
Law</LI>
<LI>Hardcover</LI>
</UL>
</BODY>
</HTML>

159
1001 Cara Bermain Basis Data

9.3 BASIS DATA DAN WEB


Halaman web berisi hasil dari query
database. Untuk membangkitkan halaman
web, dilakukan hal-hal sebagai berikut :
- Web server membuat proses baru dari
program yang berinteraksi dengan
basis data.
- Web server berkomunikasi dengan
program tersebut melalui CGI
(Common gateway interface).
- Program membangkitkan halaman
hasil dengan isinya berasal dari basis
data.
- Protokol lain selain CGI adalah ISAPI
(Microsoft Internet Server API) atau
NSAPI (Netscape Server API).

9.4 ARSITEKTUR APPLICATION


SERVER DAN SERVER SIDE JAVA
Pada CGI, setiap halaman merupakan
hasil pembuatan sebuah proses baru
sehingga sangat tidak efisien. Oleh karena
itu dikembangkan arsitektur application
server yaitu suatu perangkat lunak antara
web server dan aplikasi. Fungsi dari
application server adalah

160
1001 Cara Bermain Basis Data

 Mengendalikan thread atau proses pre-


fork untuk performansi.
 Tempat koneksi basis data (dan
menggunakan kembali koneksi yang
tersedia).
 Integrasi antara sumber data yang
heterogen.
 Manajemen transaksi melibatkan
beberapa sumber data.
 Manajemen session Pemrosesan pada
sisi server dapat menggunakan :
- Java Servlet : yaitu program java
yang berjalan pada server dan
berinteraksi dengan server melalui
API yang didefinisikan dengan
baik (well-defined).
- JavaBeans : yaitu komponen
perangkat lunak yang dapat
digunakan kembali (reusable) yang
ditulis dalam bahasa pemrograman
Java.
- Java Server Page dan Active
Server Page : yaitu kode yang
berada di dalam halaman web yang
diterjemahkan oleh web server.

9.5 PENDAHULUAN XML

161
1001 Cara Bermain Basis Data

Extensible HTML (XML) merupakan


bahasa skrip versi lanjutan dari HTML
XML merupakan penggabungan antara
SGML dan HTML dimana kekuatan
SGML digabungkan dengan
kesederhanaan HTML. XML
menggunakan definisi markup language
baru yang disebut document type
declaration (DTDs). Elemen yang
terdapat pada XML meliputi :
 Blok utama yang dibangun secara
terstruktur dengan XML.
 Tag mulai (start tag) dan akhir (end
tag).
 Harus secara tepat berulang
Elemen pada XML dapat mempunyai
atribut yang merupakan informasi
tambahan mengenai elemen tersebut.
Entiti pada XML serupa dengan makro
yang berupa teks biasa. Pada XML juga
tersedia perintah untuk komentar dan
elemen yang terpenting adalah document
type declaration (DTDs).
Contoh skrip XML untuk melihat daftar
buku adalah sebagai berikut :

162
1001 Cara Bermain Basis Data

<?XML version=“1.0” standalone=“yes”?>


<!DOCTYPE BOOKLIST SYSTEM
“booklist.dtd”>
<BOOKLIST>
<BOOK genre=“Fiction”>
<AUTHOR>
<FIRST>Milan</FIRST><LAST>Kundera<
/LAST>
</AUTHOR>
<TITLE>Identity</TITLE>
<PUBLISHED>1998</PUBLISHED>
</BOOK>
<BOOK genre=“Science”
format=“Hardcover”>
<AUTHOR>
<FIRST>Richard</FIRST><LAST>Feynma
n</LAST>
</AUTHOR>
<TITLE>The Character of Physical
Law</TITLE>
</BOOK>
</BOOKLIST>

9.6 XML : DTDs


Sebuah document type declaration
(DTDs) adalah himpunan aturan yang
mendefinisikan elemen, atribut dan entiti
yang diperbolehkan pada dokumen.
Dokumen pada XML mempunyai bentuk
yang baik jika tidak mempunyai asosiasi

163
1001 Cara Bermain Basis Data

DTD tetapi digunakan berulang dengan


tepat. Dokumen XML valid jika
mempunyai DTD an dokumen mengikuti
aturan dalam DTD. Contoh DTDs untuk
melihat daftar buku adalah sebagai berikut
:

<!DOCTYPE BOOKLIST [
<!ELEMENT BOOKLIST (BOOK)*>
<!ELEMENT BOOK (AUTHOR, TITLE,
PUBLISHED?)>
<!ELEMENT AUTHOR (FIRST, LAST)>
<!ELEMENT FIRST (#PCDATA)>
<!ELEMENT LAST (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT PUBLISHED (#PCDATA)>
<!ATTLIST BOOK genre (Science|Fiction)
#REQUIRED>
<!ATTLIST BOOK format
(Paperback|Hardcover) “Paperback”>
]>

9.7 SPESIFIKASI DOMAIN PADA DTDs


Untuk menangani sumber-sumber data
yang berlainan, dikembangkan
standarisasi DTDs untuk memungkinkan
domain dapat menukar data diantara
sumbersumber yang heterogen.

164
1001 Cara Bermain Basis Data

Contohnya adalah domain pada DTDs


untuk mengkodekan material matematika
pada web dengan menggunakan
Mathematical Markup Language
(MathML). Perbedaan HTML dengan
MathML dapat dilihat pada persamaan
matematika di bawah ini ;
 Dalam HTML :
<IMG SRC=“xysq.gif”
ALT=“(x+y)^2”>
 Dalam MathML :
<apply> <power/>
<apply> <plus/> <ci>x</ci>
<ci>y</ci> </apply>
<cn>2</cn>
</apply>

9.8 MELAKUKAN QUERY DATA XML


(XML-QL)
Tujuan melakukan query data XML
adalah melakukan manipulasi dokumen
XML dengan menggunakan bahasa
deklaratif tingkat tinggi. Query data XML
belum dilakukan standarisasi. Contoh
query dengan XML-QL :

165
1001 Cara Bermain Basis Data

WHERE
<BOOK>
<NAME><LAST>$1</LAST></NAME>
</BOOK> in “www.booklist.com/books.xml
CONSTRUCT <RESULT> $1 </RESULT>

Contoh query dengan XML-QL yang


lebih kompleks :

WHERE <BOOK> $b <BOOK> IN


“www.booklist.com/books.xml”,
<AUTHOR> $n </AUTHOR>
<PUBLISHED> $p </PUBLISHED> in $e
CONSTRUCT
<RESULT>
<PUBLISHED> $p </PUBLISHED>
WHERE <LAST> $l </LAST> IN $n
CONSTRUCT <LAST> $l </LAST>
</RESULT>

9.9 MODEL DATA SEMI


TERSTRUKTUR

Data semi terstruktur adalah data


dengan struktur parsial. Semua model data
untuk data semi terstruktur menggunakan
beberapa tipe graph berlabel. Pada sub bab
ini diperkenalkan model data semi

166
1001 Cara Bermain Basis Data

terstruktur yang disebut object exchage


model (OEM). OEM mempunyai
karakteristik sebagai berikut :
 Obyek berbentuk triple (label, tipe,
nilai).
 Obyek yang kompleks di dekomposisi
secara hirarki ke dalam obyek yang
lebih kecil.

Contoh model data daftar buku


menggunakan OEM dapat dilihat pada
Gambar 8-1.

RINGKASAN :

 File pada World Wide Web diidentifikasi


melalui universal resource locator (URL).

167
1001 Cara Bermain Basis Data

Web browser membawa URL ke tempat


yang berisi file dan bertanya pada Web
server pada tempat tersebut untuk file yang
dimaksud. Jika kemudian menampilkan
file yang tepat, membawa ke tipe file dan
instruksi terformat. Browser memanggil
program aplikasi untuk menangani tipe
file tersebut, misalnya memanggil
Microsoft Word untuk menangani
dokumen Word. HTML adalah markup
language yang sederhana yang digunakan
untuk menggambarkan dokumen.
Program Java, audio dan video dalap
disertakan dalam dokumen HTML. Data
yang diakses melalui Web disimpan dalam
DBMS. Web server dapat mengakses data
dalam DBMS untuk membentuk halaman
yang diminta oleh Web browser.
 Web server terkadang harus mengeksekusi
program pada tempat secara berurutan
untuk memenuhi permintaan dari Web

168
1001 Cara Bermain Basis Data

browser. Contohnya, kita dapat


mengakses data dalam DBMS. Terdapat
dua cara untuk Web server untuk
mengeksekusi program: membuat proses
baru dan mengkomunikasikan
menggunakan protokol CGI, atau
membuat thread baru untuk Java Servlet.
Pendekatan kedua menghindari
banyaknya pembentukan proses baru
untuk setiap permintaan. Application
server mengatur beberapa thread dan
menyediakan fungsi lain untuk
memfasilitasi eksekusi program pada Web
server. Fungsi tambahan termasuk
didalamnya keamanan, manajemen sesi,
koordinasi akses ke multipel sumber data.
JavaBeans dan Java Server Page adalah
teknologi berbasis Java yang menuntun ke
pembuatan dapn pengaturan program yang
didesain untuk digunakan pada Web
server.

169
1001 Cara Bermain Basis Data

 XLM adalah deskripsi standar dokumen


yang menggambarkan isi dan struktur
dokumen dalam hal penampilan langsung.
XML berdasarkan HTML dan SGML,
yang merupakan standar dokumen yang
banyak digunakan. SML didesain cukup
sederhana untuk manipulasi yang lebih
mudah, berbeda dengan SGML, yang
hanya memungkinkan pemakai
mengembangkan deskripsi dokumen
sendiri, tidak seperti HTML. Secara
khusus, DTD adalah diskripsi dokumen
yang independen dari isi dokumen, seperti
halnya skema basis data relasional
merupkaan deskripsi basis data yang
independen dari instance basis data aktual.
Dokumen XML mempunyai struktur yang
lebih baik daripada basis data relasional
yang disebut semistruktur.

LATIHAN SOAL :

170
1001 Cara Bermain Basis Data

1. Definisikan arti dan gambarkan


penggunaan
A. HTML
B. URL
C. CGI
D. pemrosesan server-side
E. Java Servlet

a. HTML (HyperText Markup


Language)
Yaitu sebuah berkas yang dibuat
dalam perangkat lunak pengolah kata
dan disimpan kedalam format ASCII
normal sehingga menjadi home page
dengan perintah-perintah HTML.
b. URL (Uniform Resource Locator)
Juga dikenal dengan Lokator Sumber
Seragam (LSS), adalah rangkaian
karakter menurut suatu format standar
tertentu, yang digunakan untuk
menunjukkan alamat suatu sumber
seperti dokumen dan gambar di
Internet.

c. CGI

171
1001 Cara Bermain Basis Data

CGI (Common Gateway Interface)


adalah suatu standar untuk
menghubungkan berbagai program
aplikasi ke halaman web.
d. Pemrosesan server-side
Yaitu teknik dalam perancangan
desain web yang melibatkan
embedding script dalam dokumen
HTML yang diminta oleh client dari
sebuah server, dimana permintaan
akan diproses di sisi server melalui
aplikasi server-side yang tersedia di
server.
e. Java Servlet
Servlet adalah teknologi Java untuk
aplikasi web berupa class yang
digunakan untuk menerima request
dan memberi respon melalui protokol
http (html, xml, file dan sebagainya).
Pada dasarnya Servlet merupakan file
java class yang telah dikompilasi dan
dijalankan oleh servlet container atau
application server.

2. Apakah CGI itu ? Apa kerugian arsitektur


menggunakan skrip CGI

172
1001 Cara Bermain Basis Data

CGI (Common Gateway Interface) adalah


suatu standar untuk menghubungkan
berbagai program aplikasi ke halaman
web. CGI mirip sebuah program komputer
yang menjadi perantara antara standar
HTML yang menjadikan tampilan web
dengan program lain, seperti basis data
(database). Hasil yang diperoleh dari
proses pencarian dikirimkan kembali ke
halaman web untuk ditampilkan dalam
format HTML. Kekurangan CGI terletak
pada kecepatan skalabilitas serta besarnya
overhead yang harus ditempuh untuk
menghasilkan keluaran program CGI.

3. Apa perbedaan antara Web server dan


application server ?
Kalau web server intinya pada penerimaan
request dan pengiriman kembali respon
dalam bentuk halaman web untuk
akhirnya ditampilkan kembali di browser,
maka untuk aplication server
menyediakan akses ke bisnes logic untuk
digunakan oleh client.
4. Bagaimanan dokumen XML dibentuk
dengan baik ?

173
1001 Cara Bermain Basis Data

a. Semua elemen XML harus memiliki


tag penutup.
b. Tag XML bersifat case-sensitive, jadi
perlu diperhatikan huruf kapital pada
tag pembuka dan tag penutup.
c. Elemen harus benar bersarang.
d. Sebuah dokumen XML harus
memiliki akar elemen.
e. Nilai atribut XML harus dikutip.
f. Nama elemen dapat berisi huruf, angka
maupun karakter lain, tetapi harus
dimulai dengan huruf. Nama juga
tidak dapat dimulai dengan kata
“XML” dan tidak boleh ada spasi di
dalam nama suatu elemen.

5. Misalnya pada toko buku. Diasumsikan


pelanggan juga ingin mencari buku
berdasarkan judul. Buatlah dokumen
HTML yang memungkinkan pemakai
menginputkan judul buku.

174
1001 Cara Bermain Basis Data

6. Diketahui katalog Eggface computer mail-


order.
“Eggface menjual hardware dan software.
Kita menjual Palm Pilot V baru seharga
$400; nomor perangkat 345. Kita juga
menjual IBM ThinkPad 570 seharga
$1999; nomor perangkat 3784. Kita
menjual baik software bisnis dan
entertainment. Microsoft Office 2000 baru
datang dan anda dapat membeli Standard
Edition dengan harga $140, nomor
perangkat 974. Software dari Adobe yang
berjudul InDesign seharga $200, nomor
perangkat 664. Software Game dari
Blizzard berjudul Diablo II seharga $30,
nomor perangkat 12, dan anda dapat
membeli Starcraft seharga $10, nomor
perangkat 812”
A. Desain dokumen HTML yang
menampilkan item yang ditawarkan
Eggface.

175
1001 Cara Bermain Basis Data

<HTML>
<BODY>
Daftar Barang:
<UL>
<LI>ID: 123</LI?
<LI>Nama Barang: abc</LI>
<LI>Harga: 200</LI>
</UL>
<UL>
<LI>ID: 123</LI?
<LI>Nama Barang: abc</LI>
<LI>Harga: 200</LI>
</UL>
</BODY>
</HTML>

B. Buatlah dokumen XML yang


menggambarkan isi dari katalog
Eggface.

176
1001 Cara Bermain Basis Data

<?XML version=“1.0”
standalone=“yes”?>
<!DOCTYPE BOOKLIST SYSTEM
“eggface_db.dtd”>
<BARANGLIST>
<BARANG>
<ID>345</ID>
<NAMABARANG>Palm Pilot
V</NAMABARANG>
<HARGA>400</HARGA>
</BARANG>

<BARANG>
<ID>3784</ID>
<NAMABARANG>IBM ThinkPad
570</NAMABARANG>
<HARGA>1999</HARGA>
</BARANG>

<BARANG>
<ID>974</ID>
<NAMABARANG>Microsoft Office 2000 -
Standard Edition</NAMABARANG>
<HARGA>140</HARGA>
</BARANG>

<BARANG>
<ID>664</ID>
<NAMABARANG>Adobe
InDesign</NAMABARANG>
<HARGA>200</HARGA>
</BARANG>

</BARANGLIST>

177
1001 Cara Bermain Basis Data

C. Buatlah DTD untuk dokumen XML


anda dan pastikan dokumen yang anda
buat pada pertanyaan terakhir adalah
valid untuk DTD.

D. Tuliskan query XML-QL yang


menampilkan semua software pada
katalog.

WHERE
<BARANG>
<NAMABARANG>$A</NAMABARANG>
</BARANG> in
“www.eggfaceshop.com/
eggface.xml
CONSTRUCT <RESULT> $A </RESULT>

178
1001 Cara Bermain Basis Data

E. Tuliskan query XML-QL yang


menampilkan harga semua hardware
pada katalog.

WHERE
<BARANG>
<HARGA>$A</HARGA>
</BARANG> in “www.eggfaceshop.com/
eggface.xml
CONSTRUCT <RESULT> $A </RESULT>

179
1001 Cara Bermain Basis Data

BAB 10
DATA WEREHOUSING DAN
DECISION SUPPORT

10.1 PENDAHULUAN
Data Warehouse adalah suatu
database penunjang keputusan
yang dikelola secara terpisah dari
database operasional perusahaan.
Dan merupakan penunjang
pemrosesan informasi dengan
menyediakan suatu platform yang
kokoh untuk analisa data yang
mengandung histori dan yang
terkonsolidasi. Berikut beberapa
definisi tentang data warehouse :
“Suatu DW adalah suatu
koleksi data yang bisa digunakan
untuk menunjang pengambilan
keputusan manajemen, yang
berorientasi subjek (topik),
terpadu, time variant, dan tidak
mudah berubah” —W. H. Inmon
(Bp. Data Warehousing).
“Suatu data warehouse
sederhananya adalah suatu
penyimpanan data tunggal, lengkap

180
1001 Cara Bermain Basis Data

dan konsisten, yang diperoleh dari


berbagai sumber dan dibuat
tersedia bagi end user dalam suatu
cara yang bisa mereka pahami dan
bisa mereka gunakan dalam suatu
konteks bisnis.” - - Barry Devlin,
IBM Consultant.

10.2 DARI DATA WEREHOUSE KE


DECISION SUPPORT
Pembuatan keputusan rganisasi
memerlukan view menyeluruh
pada segala aspek perusahaan,
sehingga organisasi membuat data
warehouse gabungan yang berisi
data yang berasal dari berbagai
sumber. DBMS juga didesain untuk
mendukung query OLAP secara
efisien dan dioptimalisasi untuk
mendukung aplikasi decision
support.

10.3 MODEL DATA


MULTIDIMENSIONAL

Model data multidimensional


dirancang untuk memfasilitasi

181
1001 Cara Bermain Basis Data

analisis dan bukan transaksi. Model


ini umum digunakan dalam data
warehouse. Memiliki konsep intuitif
dari banyak dimensi atau perspektif
pengukuran bisnis atau fakta-fakta.
Contohnya : untuk melihat penjualan
dari perspektif customer, product dan
time.
Model data multi dimensi adalah
himpunan pengukuran numerik yang
tergantung pada himpunan dimensi.
Misalnya untuk mengetahui
Penjualan/Sales, dimensinya adalah
Produk (pid), Lokasi (locid), dan
Waktu (timeid).
Data multi dimensi dapat disimpan
secara fisik dalam sebuah array yang
disebut sistem MOLAP. Alternatif
lainnya, data dapat disimpan sebagai
relasi yang disebut sistem ROLAP.
Relasi utama yang berhubungan
dengan dimensi yang diukur
dinamakan tabel fakta (fact table).
Tiap dimensi dapat diberi tambahan
atribut dan berasosiasi dengan suatu
tabel dimensi (dimension table).
Tabel fakta mempunyai ukuran yang

182
1001 Cara Bermain Basis Data

lebih besar dibandingkan dengan table


dimensi.

Gambar 10.1. Model Data


Multidimensi

10.4 ONLINE ANALYTICAL


PROCESSING (OLAP)
Query OLAP dipengaruhi oleh
dua hal, yaitu : SQL dan
spreadsheet. Operasi yang umum
di dalam query OLAP adalah
melakukan agregasi pada satu atau
lebih dimensi. Misalnya, cari total
penjualan (sales), cari total
penjualan tiap propinsi, cari 5

183
1001 Cara Bermain Basis Data

ranking produk teratas berdasarkan


total penjualan. Jenis-jenis query
OLAP adalah :
1. Roll Up
Yaitu dengan melakukan
agregasi pada level yang
berbeda dari hirarki dimensi.
Misalnya untuk setiap kota
diberikan total penjualan, maka
untuk total penjualan tiap
propinsi bisa didapatkan
dengan menambahkan total
penjualan pada semua kota
dalam satu propinsi.

2. Drill down
Adalah kebalikan dari roll up.
Misalnya untuk setiap propinsi
dapat diberikan total penjualan,
maka total penjualan tiap kota
dapat di-drill down.

3. Pivoting
Yaitu melakukan agregasi pada
dimensi terpilih. Misalnya jika
dilakukan pivoting pada Location

184
1001 Cara Bermain Basis Data

dan Time didapatkan cross-


tabulation sebagai berikut :

Cross-tabulation tersebut
merupakan kumpulan dari query SQL
berikut :
SELECT SUM (S.Sales)
FROM Sales S, Times T WHERE
S.timeid = T.timeid
GROUP BY T.year
dan
SELECT SUM (S.Sales) FROM Sales
S, Location L WHERE S.timeid =
L.timeid GROUP BY L.state
Sehingga menjadi query baru
sebagai berikut :
SELECT SUM (S.Sales) FROM Sales
S, Times T, Location L WHERE

185
1001 Cara Bermain Basis Data

S.timeid = T.timeid AND S.timeid =


L.timeid GROUP BY T.year, L.state

4. Slicing dan Dicing


Yaitu mencari kesamaan dan
jangkauan seleksi pada satu atau
lebih dimensi.

10.5 ARSITEKTUR DATA


WEREHOUSE
Pilihan berikut harus dibuat didalam
perancangan data warehouse
 process model
Tipe apa yang akan dimodelkan?

 grain
Apa dasar data dan level atom data
yang akan disajikan?
 dimensi
Dimensi apa yang dipakai untuk
masing-masing record tabel fakta?
 ukuran
Ukuran apa yang akan
mengumpulkan masing-masing
record tabel fakta ?

186
1001 Cara Bermain Basis Data

Suatu data warehouse


didasarkan kepada suatu model
data multidimensi yang melihat
data dalam bentuk suatu kubus data.
Suatu kubus data seperti Sales
memungkinkan data untuk
dimodelkan dan dilihat dari banyak
dimensi.
- Dimensi tabel, seperti item
(item_name, brand, type), atau
time(day, week, month, quarter,
year).
- Tabel fakta memuat ukuran
(seperti dollars_sold) dan kunci
untuk setiap dimensi tabel
terkait.
Berikut, arsitektur dari Data
Warehouse :

187
1001 Cara Bermain Basis Data

10.6 IMPLEMENTASI DATA


WEREHOUSE
Data Warehouse diorganisasikan
berdasarkan kegunaan disekitar subjek
bukan aplikasi, misal: customer,
product, sales. Perhatian dipusatkan

188
1001 Cara Bermain Basis Data

pada pemodelan dan analisa data


untuk pembuat keputusan, bukan
untuk operasi harian atau
pemrosesan transaksi. View
sederhana dan ringkas disekitar subjek
pembicaraan disediakan dengan cara
memisahkan data-data yang tidak
berkaitan dengan proses penunjang
keputusan.
Data Warehouse dibangun
dengan memadukan banyak sumber
data yang heterogen, misal :
Database relasional, flat file, catatan
transaksi on-line. Teknik
pembersihan dan integrasi data juga
diterapkan dalam datawarehouse.
Dikarenakan data berasal dari
sumber yang berbeda-beda, maka
harus dapat dijamin konsistensi
penamaan, penyandian struktur,
ukuran atribut, dsb., dari antara
sumber-sumber data yang berbeda,
misal, tarif hotel: mata uang, pajak,
breakfast covered, dsb. Ketika data
dipindahkan ke warehouse, data ini
telah terkonversi.

189
1001 Cara Bermain Basis Data

10.7 VIEW DAN DECISION SUPPORT


View digunakan secara luas
dalam aplikasi decision support.
Kelompok analis yang berbeda dalam
suatu organisasi biasanya
berhubungan dengan aspek bisnis
yang berbeda, dan akan lebih
memudahkan untuk mendefinisikan
view yang memberi tiap grup
wawasan detil bisnis yang sesuai.
Setelah view didefinisikan, barulah
dapat ditulis query atau definisi view
baru yang menggunakannya.
Mengevaluasi query yang diajukan
untuk view sangat penting untuk
aplikasi decision support. Berikut ini
akan dibahas bagaimana query dapat
dievaluasi secara efisien setelah
menempatkan view ke dalam konteks
aplikasi decision support.
View berhubungan erat dengan
OLAP dan data warehousing.
Query OLAP biasanya merupakan
query aggregasi. Data warehouse
adalah kumpulan table yang
direplikasi secara asynchronous dan
view yang disinkronisasi secara

190
1001 Cara Bermain Basis Data

periodik. View berikut ini menghitung


penjualan produk berdasarkan
kategori dan Negara bagian :

Query berikut menghitung


penjualan total untuk tiap kategori
berdasarkan Negara bagian :

Query berikut ini adalah hasil


modifikasi dari query sebelumnya
dengan menggantikan RegionalSales
dengan sebuah view yang ditempatkan
pada klausa FROM yaitu:

RINGKASAN :

191
1001 Cara Bermain Basis Data

 Data Warehouse adalah suatu database


penunjang keputusan yang dikelola secara
terpisah dari database operasional
perusahaan, yang menyediakan suatu
platform untuk analisa data yang
mengandung histori dan yang
terkonsolidasi.
 Aplikasi Decision Support memerlukan
view yang menyeluruh pada segala aspek
perusahaan, dan didapatkan dari data yang
berasal dari berbagai sumber.
 Model data multidimensional dirancang
untuk melakukan analisa data dan umum
digunakan dalam data warehouse.
 Model data multidimensi memiliki konsep
intuitif dari banyak dimensi atau
perspektif pengukuran bisnis atau fakta-
fakta. Contohnya : untuk melihat
penjualan dari perspektif customer,
product dan time.
 Jenis-jenis dari query OLAP yaitu : Roll
up, Drill down, Pivoting, Slicing dan
Dicing.
 Pilihan-pilihan yang harus dibuat didalam
perancangan data warehouse : process
model, level atom data yang akan
disajikan, dimensi dan ukuran.

192
1001 Cara Bermain Basis Data

 View digunakan secara luas dalam


aplikasi decision support dan berhubungan
erat dengan OLAP dan data warehousing
dan perlu disinkronisasi secara periodik.

LATIHAN SOAL :

1. Apa yang dimaksud dengan aplikasi


decision support ?
2. Apa pertimbangan yang digunakan dalam
mendesain Data Warehouse ?
3. Deskripsikan dimensi dan pengukuran
dalam model data multidimensi, dan
jelaskan perbedaan antara table fakta dan
table dimensi.
4. Apa yang dimaksud dengan table fakta,
dan mengapa sangat penting dari sudut
pandang performa ?
5. Mengapa view begitu penting dalam
lingkungan decision support ? Bagaimana
view dihubungkan dalam lingkungan data
warehousing dan OLAP?

JAWABAN :

1. Decision Support Systems (DSS) atau


system pendukung keputusan adalah

193
1001 Cara Bermain Basis Data

serangkaian kelas tertentu dari system


informasi terkomputerisasi yang
mendukung kegiatan pengambilan
keputusan bisnis dan organisasi. Suatu
DSS yang dirancang dengan benar adalah
suatu system berbasis perangkat lunak
interaktif yang dimaksudkan untuk
membantu para pengambil keputusan
mengkompilasi informasi yang berguna
dari data mentah, dokumen, pengetahuan
pribadi, dan/atau model bisnis untuk
mengidentifikasikan dan memecahkan
berbagai masalah dan mengambil
keputusan.

2. Pertimbangan mendesain database :


- Apakah benar-benar siap untuk
menggunakannya?
- Anda perlu mengembangkan kriteria
untuk menilai nilai yang diharapkan
dari data warehouse Anda.
- Perusahaan Anda harus memutuskan
pada jenis data warehouse yang akan
dibangun dan di mana untuk di
tempatkan.
3. Model data multi dimensi adalah
himpunan pengukuran numerik yang

194
1001 Cara Bermain Basis Data

tergantung pada himpunan dimensi (cube).


Misalnya untuk mengetahui
Penjualan/Sales, dimensinya adalah
Produk (pid), Lokasi (locid), dan Waktu
(timeid).
Tabel Fakta adalah tabel yang umumnya
mengandung sesuatu yang dapat diukur
(measure), seperti harga, jumlah barang,
dan sebagainya. Fact table juga
merupakan kumpulan foreign
key dari primary key yang terdapat pada
masing-masing dimension table. Fact
table juga mengandung data yang historis.
Sedangkan tabel dimensi Dimension
table (tabel dimensi) adalah tabel yang
berisi data detail yang menjelaskan foreign
key yang terdapat pada fact table. Atribut-
atribut yang terdapat pada dimension
table dibuat secara berjenjang (hirarki)
untuk memudahkan proses query.

4. Tabel yang tersentralisasi dalam skema


star disebut tabel fakta (fact table). Tabel
fakta secara khusus memiliki dua jenis
kolom: kolom yang mengandung fakta dan
kolom yang merupakan foreign key
untuk tabel dimensi. Primary key dari

195
1001 Cara Bermain Basis Data

sebuah tabel fakta biasanya adalah


composite key yang terbuat dari tiap-tiap
foreign key-nya.

5. View digunakan secara luas dalam


aplikasi decision support dan berhubungan
erat dengan OLAP dan data warehousing
dan perlu disinkronisasi secara periodik
OLAP merupakan proses departmental
untuk lingkungan data mart. OLAP
mendeskripsikan sebuah teknologi yang
menggunakan view multi-dimensi dari
sekumpulan data untuk menyediakan
akses yang cepat ke informasi strategis
untuk analisis lebih lanjut. OLAP
memperbolehkan user untuk mendapatkan
pengertian dan pengetahuan yang
mendalam mengenai berbagai aspek dari
data perusahaan dengan akses yang cepat,
konsisten, interaktif melalui kemungkinan
variasi view dari data.

196
1001 Cara Bermain Basis Data

BAB 11
DATA MINING

11.1 PENDAHULUAN
Seiring dengan perkembangan
teknologi, semakin berkembang pula
kemampuan kita dalam
menggumpulkan dan meng olah data.
Penggunaan system komputerisasi
dalam berbagai bidang baik itu dalam
transaksi-transaksi bisnis, maupun
untuk kalangan pemerintah dan sosial,
telah menghasilkan data yang
berukuran sangat besar. Data-data
yang terkumpul ini merupakan suatu
tambang emas yang dapat digunakan
sebagai informasi dalam dunia bisnis.
Aplikasi basis data telah banyak
diterapkan dalam berbagai antara lain
bidang manajemen, manajemen data
untuk industri, ilmu pegetahuan,
administrasi pemerintah dan bidang-
bidang lainnya. Akibatnya data yang
dihasilkan oleh bidang-bidang tersebut
sangatlah besar dan berkembang
dengan cepat. Hal ini menyebabkan
timbulnya kebutuhan terhadap teknik-

197
1001 Cara Bermain Basis Data

teknik yang dapat melakukan


pengolahan data sehingga dari data-
data yang ada dapat diperoleh
informasi penting yang dapat
digunakan untuk perkembangan
masing-masing bidang tersebut.
Istilah data mining sudah
berkembang jauh dalam mengadaptasi
setiap bentuk analisa data. Pada
dasarnya data mining berhubungan
dengan analisa data dan penggunaan
teknik-teknik perangkat lunak untuk
mencari pola dan keteraturan dalam
himpunan data yang sifatnya
tersembunyi.
Data mining diartikan sebagai
suatu proses ekstraksi informasi
berguna dan potensial dari
sekumpulan data yang terdapat secara
implisit dalam suatu basis data.
Banyak istilah lain dari data mining
yang dikenal luas seperti knowledge
mining from databases, knowledge
extraction, data archeology, data
dredging, data analysis dan lain
sebagainya [AGR-93].

198
1001 Cara Bermain Basis Data

Dengan diperolehnya informasi-


informasi yang berguna dari data-data
yang ada, hubungan antara item dalam
transaksi, maupun informasi
informasi-yang potensial, selanjutnya
dapat diekstrak dan dianalisa dan
diteliti lebih lanjut dari berbagai sudut
pandang.
Informasi yang ditemukan ini
selanjutnya dapat diaplikasi kan untuk
aplikasi manajemen, melakukan query
processing, peng ambilan keputusan
dan lain sebagainya. Dengan semakin
berkembang nya kebutuhan akan
informasi-informasi, semakin banyak
pula bidang-bidang yang rnenerapkan
konsep data mining.

11.2 MODEL DATA MINING


Dalam perkembangan teknologi
data mining, terdapat model atau mode
yang digunakan untuk melakukan
proses penggalian informasi terhadap
data-data yang ada. Menurut IBM
model data mining dapat dibagi
menjadi 2 bagian yaitu: verification
model dan discovery model.

199
1001 Cara Bermain Basis Data

1. VERIFICATION MODEL
Model ini menggunakan perkiraan
(hypothesis) dari pengguna, dan
melakukan test terhadap perkiraan
yang diambil sebelumnya dengan
menggunakan data-data yang ada.
Penekanan terhadap model ini adalah
terletak pada user yang bertanggung
jawab terhadap penyusunan perkiraan
(hypothesis) dan permasalahan pada
data untuk meniadakan atau
menegaskan hasil perkiraan
(hypothesis) yang diambil.
Sebagai contoh misalnya dalam
bidang pemasaran, sebelum sebuah
perusahaan mengeluarkan suatu
produk baru kepasaran, perusahaan
tersebut harus memiliki informasi
tentang kecenderungan pelanggan
untuk membeli produk yang akan di
keluarkan. Perkiraan (hypothesis)
dapat disusun untuk
mengidentifikasikan pelanggan yang
potensial dan karakteristik dari
pelanggan yang ada. Data-data tentang
pembelian pelanggah sebelumnya dan

200
1001 Cara Bermain Basis Data

data tentang keadaan pelanggan, dapat


digunakan untuk melakukan
perbandingan antara pembelian dan
karakteristik pelanggan untuk
menetapkan dan menguji target yang
telah diperkirakan sebelumnya. Dari
keseluruhan operasi yang ada
selanjutnya dapat dilakukan
penyaringan dengan cermat sehingga
jumlah perkiraan (hypothesys) yang
sebelumnya banyak akan menjadi
semakin berkurang sesuai dengan
keadaan yang sebenarnya.
Permasalahan utama dengan model ini
adalah tidak ada informasi bare yang
dapat dibuat, melainkan hanya
pembuktian atau melemahkan
perkiraan (hypothesys) dengan data-
data yang ada sebelumnya. Datadata
yang ada pada model ini hanya
digunakan untuk membuktikan
mendukung perkiraan (hypothesis)
yang telah diambil sebelumnya. Jadi
model ini sepenuhnya tergantung pada
kemampuan user untuk melakukan
analisa terhadap permasalahan yang

201
1001 Cara Bermain Basis Data

ingin digali dan diperoleh


informasinya.

2. DISCOVERY MODEL
Model ini berbeda dengan
verification model, dimana pada
model ini system secara langsung
menemukan informasi-informasi
penting yang tersembunyi dalam suatu
data yang besar. Data-data yang ada
kemudian dipilah-pilah-untuk-
menemukan suatu pola, trend yang
ada, dan keadaaan umum pada saat itu
tanpa adanya campur tangan dan
tuntunan dari pengguna. Hasil temuan
ini menyatakan fakta-fakta yang ada
dalam datadata yang ditemukan dalam
waktu yang sesingkat
rnungkin.Sebagai contoh, misalkan
sebuah bank ingin menemuan
kelompok-kelompok pelanggan yang
dapat dijadikan target suatu produk
yang akan di keluaran.
Pada data-data yang ada
selanjutnya diadakan proses pencarian
tanpa adanya proses perkiraan
(hypothesis) sebelumnya. Sampai

202
1001 Cara Bermain Basis Data

akhirnya semua pelanggan


dikelompokan berdasarkan
karakteristik yang sama.

11.3 KEBUTUHAN DAN


TANTANGAN DALAM DATA
MINING
Untuk memperoleh efektifitas
dalam data mining, seseorang harus
melakukan evaluasi kebutuhan dan
memperhitungkan tantangan-
tantangan apa saja yang mungkin
dihadapinya dalam me ngembangkan
suatu teknik data mining. Hal-hal yang
harus diper hatikan tersebut antara lain
adalah sebagai berikut.

1. PENANGANAN BERBAGAI
TEPE DATA
Karena ada bermacam data dan
basis data yang digunakan dalam
berbagai aplikasi, seseorang mungkin
saja berpikir bahwa suatu sistem
knowledge discovery harus bisa
melakukan proses data mining yang
efektif terhadap berbagai jenis data.
Selanjutnya, banyak aplikasi basis data

203
1001 Cara Bermain Basis Data

memuat tipe data yang kompleks


seperti data terstruktur, objek data
kompleks, data multimedia, data
spasial dan data sementara, data
transaksi dan lain sebagainya.
Oleh karena adanya beragam tipe
data, tujuan yang berbeda dari data
mining, maka adalah tidak realistis
untuk mengharapkan bahwa suatu
sistem data mining mampu menangani
semua jenis data. Sistem data mining
harus dikonstruksikan secara khusus
untuk tipe-tipe data khusus seperti
dalam basis data relasional, basis data
transaksi, basis data spasial, basis data
multimedia dan lain sebagainya.

2. EFISIENSI DARI
ALGORITMA DATA MINING
Untuk secara efektif melakukan
ekstraksi informasi dari sejumlah
besar data, algoritma yang digunakan
untuk mewujudkannya haruslah
efisien untuk basis data yang besar.
Yaitu, waktu eksekusi dari algoritma
tersebut haruslah sesuai dan realistis
untuk data dengan ukuran besar.

204
1001 Cara Bermain Basis Data

3. KEGUNAAN, KEPASTIAN,
DAN KEAKURATAN HASIL
Informasi yang diperoleh harus
secara akurat menggambarkan isi basis
data dan berguna untuk aplikasi
terkait. Kekurangsempurnaan yang
ada haruslah dapat diekspresikan
dengan suatu ukuran yang pasti dalam
bentuk aturan-aturan kuantitif dan
perkiraan-perkiraan yang masuk akal.
Noise dan data-data yang tidak
diperlukan harus ditangani dengan rapi
dalam sistem data mining. Hal ini juga
akan memotivasi suatu studi
sistematik untuk mengukur kualitas
dari informasi yang dihasilkan,
termasuk seberapa menariknya dan
tingkat kepercayaannya yang
dapatdiukur secara statistik, analitis
dan menggunakan model simulasi.

4. EKSPRESI TERHADAP
BERBAGAI JENIS HASIL
Berbagai macam jenis informasi
dapat diperoleh dari sejumlah besar
data. Seseorang mungkin ingin

205
1001 Cara Bermain Basis Data

menguji informasi yang diperoleh dan


sudut pandang yang berbeda dan
menampilkannya dalam bentuk yang
berbeda. Ini menuntut kita untuk
mengekspresikan permintaan
datamining dan informasi yang
diperoleh dalam sebuah bahasa tingkat
tinggi atau graphical user interface
yang baik, sehingga program dapat
digunakan oleh para pemakai biasa
yang bukan ahli, dan hasil yang
diperoleh dapat dimengerti serta
langsung digunakan oleh pemakainya.
Oleh karenanya, sistem harus bisa
mengadopsi teknik-teknik penyajian
informasi yang baik.

5. MEMPEROLEH INFORMASI
DARI SUMBER-SUMBER
DATA YANG BERBEDA
Dengan adanya LAN (Local Area
Network) dan WAN ( Wide Area
Network) yang tersebar secara luas
dewasa ini, termasuk Internet, maka
terhubunglah – berbagai sumber data
yang terdistribusi secara luas dan
membentuk suatu basis data

206
1001 Cara Bermain Basis Data

heterogen. Untuk memperoleh


informasi dari berbagai sumber dan
dalam berbagai format dengan
berbagai semantik data menimbulkan
tantangan baru dalam data mining. Di
lain pihak, datamining bisa membantu
mengungkapkan informasi-informasi
yang ada dalam suatu basis data
heterogen, dimana hal tersebut sulit
untuk diwujudkan dengan sebuah
system query sederhana. Lebih lanjut,
ukuran data yang besar, distribusi yang
luas dad data dan kompleksitas dari
proses komputasi beberapa metode
data mining, semakin memotivasi
pengembangan algoritma untuk
paralel data mining dan data mining
untuk basis data terdistribusi.

6. PROTEKSI DAN KEAMANAN


DATA
Ketika data dapat diperlihatkan
dari berbagai sudut pandang dan dalam
level abstrak yang berbeda, hal ini
akan mengancam tujuan dari proteksi
dan keamanan data, dan pelanggaran
terhadap sifat kerahasiaan informasi.

207
1001 Cara Bermain Basis Data

Sangatlah penting untuk mempelajari


apakah penemuan informasi yang
berguna itu akan mengakibatkan
pelanggaran kerahasiaan dan ukuran
keamanan yang diperiukan untuk
menghalangi akses terhadap data-data
yang sifatnya sensitif.

11.4 TAHAPAN DALAM DATA


MINING
Data-data yang ada, tidak dapat
langsung diolah dengan menggunakan
sistem data mining. Data-data tersebut
harus dipersiapkan terlebih dahulu
agar hasil yang diperoleh dapat lebih
maksimal, dan waktu komputasinya
lebih minimal. Proses persiapan data
ini sendiri dapat mencapai 60 % dari
keseluruhan proses dalam data mining.
Adapun tahapan-tahapan yang harus
dilalui dalam proses data mining
antara lain :

208
1001 Cara Bermain Basis Data

Gambar 11.1. Tahapan Data Mining


 Basis Data Relasional
Dewasa ini, hampir semua Data bisnis
disimpan dalam basis data relasional.
Sebuah model basis data relasional
dibangun dari serangkaian tabel, setiap
tabel disimpan sebagai sebuah file.
Sebuah tabel relasional terdiri dari
baris dan kolom. Kebanyakan model
basis data relasional saat ini dibangun
diatas lingkungan OLTP. OLTP
(Online Transaction Processing )
adalah tipe akses yang digunakan oleh
bisnis yang membutuhkan transaksi
konkuren dalam jumlah besar. Bentuk
data yang tersimpan dalam basis data

209
1001 Cara Bermain Basis Data

relasional inilah yang dapat diolah


oleh sistem data mining.

 Ekstraksi Data
Data-data yang dikumpulkan dalam
proses transaksi seringkali
ditempatkan pada lokasi yang
berbeda-beds. Maka dari itu
dibutuhkan kemampuan dari system
utuk dapat mengumpulkan data
dengan cepat. Jika data tersebut
disimpan dalam kantor regional,
seringkali data tersebut di upload ke
sebuah server yang lebih terpusat. Ini
bisa dilakukan secara harian,
mingguan, atau bulanan tergantung
jumlah .data, keamanan dan biaya.
Data dapat diringkas dulu sebelum
dikirimkan ke tempat penyimpanan
pusat. Sebagai contoh, sebuah toko
perangkat keras mungkin mengirim
data yang menunjukan bahwa 10 rol
kabel telah terjual pada hari ini oleh
karyawan nomer 10 dibanding
pengiriman data detail transaksi.

 Transformasi Data

210
1001 Cara Bermain Basis Data

Transformasi data melakukan


peringkasan data dengan
mengasumsikan bahwa data telah
tersimpan dalam tempat penyimpanan
tunggal. Pada langkah terakhir, data
telah di ekstrak dari banyak basis data
ke dalam basis data tunggal. Tipe
peringkasan yang dikerjakan dalam
langkah ini mirip dengan peringkasan
yang dikerjakan selama tahap
ekstraksi. Beberapa perusahaan
memilih untuk menngkas data dalam
sebuah tempat penyimpanan tunggal.
Fungsi fungsi Agregate yang sering
digunakan antara lain :
summarizations, averages, minimum,
maximum, dan count.

 Pembersihan Data
Data-data yang telah terkumpul
selanjutnya akan mengalami proses
pembersihan. Proses pembersihan data
dilakukan untuk membuang record
yang keliru, menstandarkan attribut-
attribut, merasionalisasi struktur data,
dan mengendalikan data yang hilang.

211
1001 Cara Bermain Basis Data

Data yang tidak konsisten dan banyak


kekeliruan membuat hasil data mining
tidak akurat. Adalah sangat penting
untuk membuat data konsisten dan
seiagam. Pembersihan data juga dapat
membantu perusahaan untuk
mengkonsolidasikan record. ini sangat
berguna ketika sebuah perusahaan
mempunyai banyak record untuk
seorang pelanggan. Setiap record atau
file pelanggan mempunyai nomor
pelanggan yang sama, tetapi informasi
dalam tiap filenya berbeda.

 Bentuk Standar
Selanjutnya setelah data mengalami
proses pembersihan maka data
ditranfer kedalam bentuk standar.
Bentuk standar adalah adalah bentuk
data yang akan diakses oleh algoritma
data mining. Bentuk standar ini
biasanya dalam bentuk spreadsheet
like. Bentuk spreadsheet bekerja
dengan baik karena baris
merepresentasikan kasus dan kolom
merepresentasikan feature.

212
1001 Cara Bermain Basis Data

 Reduksi Data dan Feature


Setelah data berada dalam bentuk
standar spreadsheet perlu
dipertimbangkan untuk mereduksi
jumlah feature. Ada beberapa alas an
untuk mengurangi jumlah feature
dalam spreadsheet kita. Sebuah bank
mungkin mempunyai ratusan feature
ketika hendak memprediksi resiko
kredit. Hal ini berarti perusahaan
mempunyai data dalam jumlah yang
sangat besar. Bekerja dengan data
sebanyak ini membuat algoritma
prediksi menurun kinerjanya.

 Menjalankan Algoritma
Setelah semua proses diatas
dikerjakan, maka algoritma data
mining sudah siap untuk dijalankan.

11.5 FUNGSIONALITAS DALAM


DATA MINING
Kebutuhan akan Data mining
semakin dirasakan dalam berbagai
bidang. Data mining bersifat dependen
terhadap aplikasi terkait, ini berarti
untuk aplikasi basis data yang berbeda,

213
1001 Cara Bermain Basis Data

maka teknik data mining yang


digunakannya mungkin juga akan
berbeda. Hal ini dikarenakan terdapat
kelebihan dan kekurangan dari
masing-masing metode pencarian
informasi, sehingga kita harus
menyesuaikan antara keperluan dan
kebutuhan akan informasi dengan
penerapan teknik pencarian yang akan
digunakan. Untuk memberikan
gambaran yang lebih jelas tentang
macam-macam informasi yang dapat
ditemukan dalam sekumpulan data,
berikut akan diberikan sedikit bahasan
rinci mengenai hal tersebut.

1. MINNING ASSOCIATION
RULE
Mining association rules atau
pencarian aturan-aturan hubungan
antar item dari suatu basis data
transaksi atau basis data relasional,
telah menjadi perhatian utama dalam
masyarakat basis data. Tugas
utamanya adalah untuk menemukan
suatu himpunan hubungan antar item
dalam bentuk A1A...AAm =>

214
1001 Cara Bermain Basis Data

B1A...ABn dimana A, ( for i E


{1,...,m}) dan B; ( for j C {1,...,n} )
adalah himpunan atribut nilai, dari
sekumpulan data yang relevan dalam
suatu basis data. Sebagai contoh, dari
suatu himpunan data transaksi,
seseorang mungkin menemukan suatu
hubungan berikut, yaitu jika seorang
pelanggan membeli selai, ia biasanya
juga membeli roti dalam satu transaksi
yang sama. Oleh karena proses untuk
menemukan hubungan antar item ini
mungkin memerlukan pembacaan data
transaksi secara berulang-ulang dalam
sejumlah besar data-data transaksi
untuk menemukan pola-pola
hubungan yang berbeda-beda, maka
waktu dan biaya komputasi tentunya
juga akan sangat besar, sehingga untuk
menemukan hubungan tersebut
diperlukan suatu algoritma yang
efisien dan metode-metode tertentu.

2. GENERALISASI,
PENCATATAN DAN
KARAKTERISASI DATA
MULTILEVEL

215
1001 Cara Bermain Basis Data

Salah satu aplikasi data mining dan


analisa data yang paling sering
digunakan dalam hubungannya
dengan basis data sistem produksi
adalah generalisasi dan pencatatan
data, yang juga dikenal dengan
beberapa nama lain seperti on-line
analytical processing ( OLAP ), basis
data multi dimensi, data cubes,
abstraksi data, dan lain sebagainya.
Generalisasi dan pencatatan data ini
menampilkan karakteristik umum
terhadap sekumpulan data yang
dispesifikasikan oleh pemakai dalam
basis data.
Data dan obyek dalam basis data
seringkali memuat informasi yang
mendetail pada level primitif. Sebagai
contoh, item relasi dalam suatu basis
data sales mungkin saja mengandung
atribut level primitif tentang informasi
item seperti nomor item, nama item,
tanggal pembuatan, harga dan lain
sebagainya. Seringkali kita
menginginkan untuk mencatat
sejumlah besar himpunan data dan
menampilkannya dalam level tingkat

216
1001 Cara Bermain Basis Data

tinggi. Misalnya seseorang mungkin


ingin mencatat sejumlah besar
himpunan item yang terhubung ke
beberapa sales untuk memberikan.

3. KLASIFIKASI DATA
Aplikasi lain yang penting dari
data mining adalah kemampuannya
untuk melakukan proses klasifikasi
pada suatu data dalam jumlah besar.
Hal ini sering disebut mining
classification rules. Sebagai contoh,
sebuah dealer mobil ingin
mengkiasifikasikan pelanggannya
menurut kecenderungan mereka untuk
menyukai mobil jenis tertentu,
sehingga para sales yang bekerja disitu
akan mengetahui siapa yang harus
didekati, kemana katalog mobil jenis
baru harus dikirim, sehingga hal ini
akan sangat membantu dalam hal
promosi.
Klasifikasi data adalah suatu
proses yang menemukan properti-
properti yang sama pada sebuah
himpunan obyek di dalarn sebuah
basis data, dan mengklasifikasikannya

217
1001 Cara Bermain Basis Data

ke dalam kelas-kelas yang berbeda


menurut model klasifikasi yang
ditetapkan. 'Untuk membentuk sebuah
model klasifikasi, suatu sampel basis
data 'E' diperlakukan sebagai training
set, dimana setiap tupel terdiri dari
himpunan yang sama yang memuat
atribut yang beragam seperti tupel-
tupel yang terdapat dalam suatu basis
data yang besar 'W'. Setiap tupel
diidentifkasikan dengan sebuah label
atau identitas kelas. Tujuan dari
klasifikasi ini adalah pertama-tama
untuk menganalisa training data dan
membentuk sebuah deskripsi yang
akurat atau sebuah model untuk setiap
kelas berdasarkan feature-feature yang
tersedia di dalam data itu.
Deskripsi dari masing-masing
kelas itu nantinya akan digunakan
untuk mengklasifikasikan data yang
hendak di test dalam basis data 'W',
atau untuk membangun suatu deskripsi
yang lebih balk untuk setiap kelas
dalam basis data. Contoh untuk model
ini adalah prediksi terhadap resiko
pemberian kredit. Data terdiri dari

218
1001 Cara Bermain Basis Data

orang orang yang telah menerima


kredit. Sebagian kreditur menjalankan
kewajiban dengan balk, dan sebagian
lagi tidak. Data mining, harus mampu
mendefinisikan atribut atribut apa
yang paling berpengaruh dalam hal ini.

4. ANALISA CLUSTER
Pada dasamya clustering terhadap
data adalah suatu proses untuk
mengelompokkan sekumpulan data
tanpa suatu atribut kelas yang telah
didefinisikart sebelumnya,
berdasarkan pada prinsip konseptual
clustering yaitu memaksimalkan dan
juga meminimalkan kemiripan intra
kelas. Misalnya, sekumpulan obyek-
obyek komoditi pertama-tama dapat di
clustering menjadi sebuah himpunan
kelas-kelas dan lalu menjadi sebuah
himpunan aturan-aturan yang dapat
diturunkan berdasarkan suatu
klasifikasi tertentu.
Proses untuk mengelompokkan
secara fisik atau abstrak obyek-obyek
ke dalam bentuk kelas-kelas atau
obyek-obyek yang serupa,disebut

219
1001 Cara Bermain Basis Data

dengan clustering atau unsupervised


classification. Melakukan analisa
dengan clustering, akan sangat
membantu untuk membentuk partisi
parti si yang berguna terhadap
sejumlah besar himpunan obyek
dengan didasarkan pada prinsip
"divide and conquer" yang
mendekomposisikan suatu sistem
skala besar, menjadi komponen-
komponen yang lebih kecil, untuk
menyederhanakan proses desain dan
implementasi. Perbedaan utama antara
Clustering Analysis dan klasifikasi
adalah bahwa Clustering Analysis
digunakan untuk memprediksi kelas
dalam format bilangan real dad pada
format katagorikal atau Boolean.

5. PENCARIAN POLA,
SEKUENSIAL
Fungsi pola sekuensial
menganalisa sekumpulan rekord pada
suatu periode waktu, misalnya untuk
menganalisa trend. Anggaplah kita
memiliki suatu basis data yang
ukurannya besar, yaitu basis data

220
1001 Cara Bermain Basis Data

transaksi dimana setiap transaksi


terdiri dari nomor pelanggan, waktu
transaksi dan item-item yang
ditransaksikan. Suatu pola dapat
ditampilkan dalam contoh sebagai
berikut, pelanggan biasanya membeli
gula Iangsung melakukan transaksi
membeli kopi. Dari semua transaksi
membeli gula ternyata hamper
seluruhnya terdapat transaksi membeli
kopi. Maka dari pola-pola yang ada ini
dapat dijadikan masukan bahwa telah
terjadi suatu kecendrungan (trend) dari
pelanggan dimana setiap pelanggan
melakukan transaksi membeli gula
maka akan diikuti oleh transaksi
membeli kopi. Untuk itu pihak
manajemen dapat menempatkan letak
item kopi dekat dengan item gula.
Sehingga memudahkan pelanggan
untuk melakukan transaksi
selanjutnya.

11.6 TEKNIK-TEKNIK DATA


MINING
Perkembangan bidang data mining
yang semakin pesat, menimbulkan

221
1001 Cara Bermain Basis Data

banyak tantangan baru, aplikasi-


aplikasi dari metode dan teknik,
statistik serta sistem basis data yang
ada tidak dapat secara langsung
menyelesaikan masalah-masalah yang
ada dalam data mining.
Oleh karena itu maka perlu
dilakukan studi-studi terkait untuk
menemukan metode data mining baru
atau suatu teknik terintegrasi untuk
sebuah sistem data mining yang efektif
dan efisien. Dalam konteks ini, data
mining itu sendiri telah menjadi suatu
bidang baru yang independen. Telah
banyak kemajuan dalam hal riset dan
pengembangan dari data mining, juga
banyak teknik data mining dan sistem
baru yang akhir-akhir ini
dikembangkan. Klasifikasi skema
yang berbeda dapat digunakan untuk
mengkategorikan metode dan sistem
data mining dengan didasarkan pada
jenis basis data yang akan dipelajari,
dan teknik apa yang akan digunakan.

 Jenis Basis Data yang akan


dijadikan obyek.

222
1001 Cara Bermain Basis Data

Suatu sistem data mining dapat


diklasifikasikan menurut jenis basis
data dimana proses data mining
tersebut dilakukan. Sebagai contoh,
sebuah sistern adalah relationar data
miner jika sistem tersebut menemukan
informasi dad basis data relasional,
atau suatu object oriented data miner
bila informasi diperoleh dari basis data
yang berorientasi pada obyek. Secara
umum, data miner dapat digolongkan
menurut jenis basis data apa yang
diolahnya seperti misalnya basis data
relasional, basis data transaksi, basis
data yang berorientasi obyek, basis
data deduktif, basis data spasial, basis
data multimedia, basis-data-heterogen,
dan lain sebagainya.

 Jenis informasi yang hendak dicari


Beberapa jenis informasi dapat
dihasilkan dad proses data mining ini,
termasuk association rules,
characteristic rules, classification
rules, discriminant rules, clustering,
sequential pattern, dan deviation
analysis [AGR-93]. Lebih lanjut, ada

223
1001 Cara Bermain Basis Data

kiasifikasi lainnya menurut level


abstraksi dari informasi yang
diperoleh, antara lain generalized
knowledge, primitive level knowledge
dan multiple level knowledge. Suatu
sistem data mining yang fleksibel
dapat menggali informasi pada
berbagai level abstraksi.

 Teknik yang hendak digunakan.


Cara kiasifikasi yang lainnya
adalah berdasarkan teknik yang
digunakan. Misalnya, dikategorikan
berdasarkan metode kendalinya seperti
autonomous knowledge miner, data
driven miner, query driven miner dan
interactive data miner. Dapat juga
dikategorikan berdasarkan pendekatan
yang dipakai dalam melakukan data
mining, yaitu generalization based
mining, statistics and mathematical
based mining, integrated approach
mining dan lain sebagainya. Diantara
berbagai macam klasifikasi yang ada,
hasil penelitian menunjukkan ada satu
skema utama yang menjadi patokan,
yaitu jenis informasi yang dibutuhkan.

224
1001 Cara Bermain Basis Data

Mengapa demikian, adalah karena


dengan kiasifikasi ini akan
memberikan gambaran yang jelas
mengenai teknik dan kebutuhan
datamining yang beragam. Metode
metode pencarianinformasi yang ada
berdasarkan jenis informasinya seperti
association rules, characterization
rules, classification rules, sequence
patterns, clustering dan lain-Iainnya
telah diteliti secaramendalam. Untuk
proses pencarian suatu informasi
tertentu, berbagai pendekatan seperti
pendekatan secara statistik,
pendekatan berorientasi pada basis
data yang besar dan sebagainya akan
dibandingkan dengan penekanan
utama pada basis data, dimana
efektifitas dan efisiensi merupakan
salah satu tujuan utamanya.

1. MARKET BASKET ANALYSIS


Fungsi Association Rules seringkali
disebut dengan "market basket analysis",
yang digunakan untuk menemukan relasi
atau korelasi diantara himpunan item2.
Market Basket Analysis adalah Analisis

225
1001 Cara Bermain Basis Data

dari kebiasaan membeli customer dengan


mencari asosiasi dan korelasi antara item-
item berbeda yang diletakkan customer
dalam keranjang belanjaannya.
Fungsi ini paling banyak digunakan
untuk menganalisa data dalam rangka
keperluan strategi pemasaran, desain
katalog, dan proses pembuatan keputusan
bisnis. Tipe association rule bisa
dinyatakan sebagai misal : "70% dari
orangorang yang membeli mie, juice dan
saus akan membeli juga roti tawar".
Aturan asosiasi mengcapture item atau
kejadian dalam data berukuran besar yang
berisi data transaksi. Dengan kemajuan
teknologi, data penjualan dapat disimpan
dalam jumlah besar yang disebut dengan
"basket data." Aturan asosiasi yang
didefinisikan pada basket data, digunakan
untuk keperluan promosi, desain katalog,
segmentasi customer dan target
pemasaran. Secara tradisional, aturan
asosiasi digunakan untuk menemukan
trend bisnis dengan menganalisa transaksi
customer. Dan dapat digunakan secara
efektif pada bidang Web Mining yang
diilustrasikan sebagai berikut : pada Web

226
1001 Cara Bermain Basis Data

access log, kita menemukan bahwa aturan


asosiasi : "A and B implies C," memiliki
nilai confidence 80%, dimana A, B, dan C
adalah halaman Web yang bisa diakses.
Jika seorang user mengunjungi halaman A
dan B, maka terdapat 80% kemungkinan
dia akan mengunjungi halaman C juga
pada session yang sama, sehingga
halaman C perlu diberi direct link dari A
atau B. Informasi ini dapat digunakan
untuk membuat link secara dinamik ke
halaman C dari halaman A atau B
sehingga user dapat melakukan direct link
ke halaman C. Informasi semacam ini
digunakan untuk melakukan link ke
halaman produk yang berbeda secara
dinamik berdasarkan interaksi customer.
Apa Itu Kaidah Asosiasi?
 Kaidah asosiasi penambangan
Pertama kali diusulkan oleh Agrawal,
Imielinski dan Swami [AIS93].

 Diberikan:
Suatu database transaksi.
Setiap transaksi adalah suatu
himpunan item-item.

227
1001 Cara Bermain Basis Data

 Cari seluruh kaidah asosiasi yang


memenuhi kendala minimum support
dan minimum confidence yang
diberikan user.

 Contoh:
30% dari transaksi yang memuat bir
juga memuat popok 5% dari transaksi
memuat item-item berikut:
30% : confidence dari kaidah ini.
5% : support dari kaidah ini.

 Kita berminat untuk mencari seluruh


kaidah ketimbang memeriksa apakah
suatu kaidah berlaku.

Definisi Umum
 Itemset: himpunan dari item-item
yang muncul bersama-sama.
 Kaidah asosiasi: peluang bahwa item-
item tertentu hadir bersama-sama. oX
→ Y dimana X n Y = 0.
 Support, supp(X) dari suatu itemset
X adalah rasio dari jumlah transaksi
dimana suatu itemset muncul dengan
total jumlah transaksi.

228
1001 Cara Bermain Basis Data

 Konfidence (keyakinan) dari kaidah


X . Y, ditulis conf(X . Y) adalah
conf(X → Y)=supp(X ∪ Y) / supp(X)
Konfindence bisa juga didefinisikan
dalam terminologi peluang bersyarat
conf(X → Y)=P(Y|X)=P(X ∩
Y)/P(X)
 Database transaksi menyimpan data
transaksi. Data transaksi bisa juga
disimpan dalam suatu bentuk lain dari
suatu database mxn.

Ukuran Support
 Misalkan I={I1, I2, …,Im}
merupakan suatu himpunan dari
literal, yang disebut item-item.
 Misalkan D={T1, T2, …, Tn}
merupakan suatu himpunan dari n
transaksi, dimana untuk setiap
transaksi T∈ D, T ⊆ I.
 Suatu himpunan item X ⊆ I disebut
itemset.
 Suatu transaksi T memuat suatu
itemset X jika X ⊆ T.
 Setiap itemset X diasosiasikan dengan
suatu himpunan transaksi TX ={T∈ D

229
1001 Cara Bermain Basis Data

| T ⊇ X} yang merupakan himpunan


transaksi yang memuat itemset X.
 Support supp(X) dari itemset X sama
dengan |TX|/|D|.
 Didalam setiap item adalah nilainilai
yang menyatakan besaran item terjual.

Gambar 11.2. Bentuk Transaksi Database

 Item A muncul dalam 3 transaksi


(|TA|) yakni di transaksi T1, T3,dan
T8.
 Ada sebanyak 10 transaksi (|D|).
 Supp(A)= |TA|/|D| = 3/10 = 0.3.

230
1001 Cara Bermain Basis Data

 Kombinasi CD muncul didalam 5


transaksi ((|TCD|) yakni di transasi
T1, T3, T5, T6, dan T9.
 Supp(CD)= |TCD|/|D|= 5/10 = 0.5
 Frequent itemset didefinisikan
sebagai itemset dimana support-nya
lebih besar atau sama dengan
minsupport yang merupakan ambang
yang diberikan oleh user.
 Jika minsupport diberikan oleh user
sebagai ambang adalah 0.2, maka
frequent itemset adalah semua itemset
yang supportnya besar sama dengan
0.2, yakni A, C, D, AC, AD, CD, ACD
 Dari frequent itemset bisa dibangun
kaidah asosiasi sbb:
A→C C→A A→D
D→A C→D D → C,
A,C → D A,D → C C,D →A

231
1001 Cara Bermain Basis Data

Gambar 11.3. Hasil nilai support untuk


setiap items

Analisis dari kebiasaan membeli customer


dengan mencari asosiasi dan korelasi antara
item-item berbeda yang diletakkan customer
dalam keranjang belanjaannya.

232
1001 Cara Bermain Basis Data

Gambar 11.4. Keranjang Belanja

 Diberikan :
Suatu database transaksi customer
(misal, keranjang belanja), dimana
setiap transaksi dalah suatu himpunan
item-item (misal produk).

 Cari:
Grup item-item yang sering dibeli
secara bersama-sama.

Gambar 11.5. Bentuk Transaksi


Keranjang Belanja

 Mengekstraksi informasi perilaku


pembelian
"IF membeli bir dan sosis, THEN juga
membeli mostar dengan peluang
tinggi"

 Informasi yang bisa ditindak-lanjuti:

233
1001 Cara Bermain Basis Data

Bisa menyarankan Tata letak toko


yang baru dan campuran produk.
Bisa menyarankan Produk apa untuk
diletakkan dalam promosi ?

 Menganalisis tabel transaksi

Person Basket
A Chips, Salsa, coke,
crakers, cookies, beer
B Lettuce, Spinach,
Oranges, Cellery, Apples,
Grapes
C Chips, Salsa, Frozen
Pizza, Frozen cake
D Lettuce, Spinach, Milk,
Butter
Gambar 1.6. Bentuk Analisa Keranjang
Belanja

 Bisakah kita membuat hipotesa?


Chips => Salsa Lettuce => Spinach

Dasar Kaidah Asosiasi:

 Kaidah asosiasi penambangan:


Mencari pola yang sering muncul,
asosiasi, korelasi, atau struktur sebab
musabab diantara himpunan item-item

234
1001 Cara Bermain Basis Data

atau objek-objek dalam database


transaksi, database relasional, dan
penyimpanan informasi lainnya.

 Kepemahaman:
Sederhana untuk dipahami.

 Kegunaan:
menyediakan informasi yang bias
ditindaklanjuti.

 Efisiensi:
ada algoritma pencarian yang efisient.

 Aplikasi:
Analisis data keranjang pasar,
pemasaran silang, rancangan katalog,
analisis lossleader, clustering,
klasifikasi, dsb.

 Format penyajian kaidah asosiasi yang


biasa:
popok . bir [0.5%, 60%].
beli:popok . beli:bir [0.5%, 60%]
"IF membeli popok, THEN membeli
bir dalam 60% kasus. Popok dan bir

235
1001 Cara Bermain Basis Data

dibeli bersama-sama dalam 0.5% dari


baris-baris dalam database."

 Penyajian lainnya (digunakan dalam


buku Han):
Beli ( x, “popok” ) ⇒ beli ( x, “bir” ) [
0.5%, 60% ]
Major ( x, "CS" ) ^ mengambil ( x,
"DB" ) ⇒ grade( x,"A" ) [ 1%, 75% ]

1. Antecedent, left-hand side (LHS),


body.
2. Consequent, right-hand side (RHS),
head.
3. Support, frekuensi (“dalam berapa
besar bagian dari data benda-benda
dalam LHS dan RHS terjadi bersama-
sama”).
4. Confidence, kekuatan (“jika LHS
terjadi, bagaimana kirakira RHS
terjadi”).
 Support: menunjukkan frekuensi
dari kaidah didalam transaksi.

236
1001 Cara Bermain Basis Data

 Confidence: menunjukkan
persentasi dari transaksi yang
memuat A yang juga. memuat B.

 Minimum support σ :
High
⇒ sedikit itemset yang sering
⇒ sedikit kaidah yang sah yang
sangat sering terjadi.

Low
⇒ banyak kaidah yang sah yang
jarang terjadi.

 Minimum confidence γ :
High
⇒ sedikit kaidah, tetapi selurhnya
“hampir secara logika true”.
Low

237
1001 Cara Bermain Basis Data

⇒ banyak kaidah, banyak


diantaranya sangat “takpasti”.

 Nilai-nilai biasanya: σ = 2 s/d 10


%, γ = 70 s/d 90 %

 Transaksi:
Relational format Format Kompak
< Tid, item > < Tid, itemset >
< 1, item1 > < 1, {item1,item2}>
< 1, item2 > < 2, {item3}>
< 2, item3 >

 Item vs itemsets : elemen tunggal


vs. himpunan item.
 Support dari suatu itemset I:
jumlah transaksi yang memuat I.
 Minimum support σ: ambang
untuk support.
 Frequent itemset : dengan
support = σ

2. ALGORITMA APRIORI
Persoalan association rule mining
terdiri dari dua sub persoalan :
1. Menemukan semua kombinasi dari
item, dise but dengan frequent

238
1001 Cara Bermain Basis Data

itemsets, yang memiliki support yang


lebih besar daripada minimum
support.
2. Gunakan frequent itemsets untuk men-
generate aturan yang
dikehendaki.Semisal, ABCD dan AB
adalah frequent, maka didapatkan
aturan AB -> CD jika rasio dari
support(ABCD) terhadap support(AB)
sedikitnya sama dengan minimum
confidence. Aturan ini memiliki
minimum support karena ABCD
adalah frequent.
Algoritma Apriori yang bertujuan untuk
menemukan frequent itemsets dijalankan
pada sekumpulan data. Pada iterasi ke -k,
akan ditemukan semua itemsets yang
memiliki k items, disebut dengan k -
itemsets. Tiap iterasi berisi dua tahap.
Misal Oracle Data Mining Fk
merepresentasikan himpunan dari frequent
k -itemsets, dan Ck adalah himpunan
candidate k-itemsets (yang potensial untuk
menjadi frequent itemsets). Tahap pertama
adalah men-generate kandidat, dimana
himpunan dari semua frequent (k- 1)
itemsets, Fk-1, ditemukan dalam iterasi

239
1001 Cara Bermain Basis Data

ke-(k-1), digunakan untuk men-generate


candidate itemsets Ck. Prosedur generate
candidate memastikan bahwa Ck adalah
superset dari himpunan semua frequent k-
itemsets. Struktur data hash-tree
digunakan untuk menyimpan Ck.
Kemudian data di-scan dalam tahap
penghitungan support. Untuk setiap
transaksi, candidates dalam Ck diisikan ke
dalam transaksi, ditentukan dengan
menggunakan struktur data hash-tree
hashtree dan nilai penghitungan support
dinaikkan. Pada akhir dari tahap kedua,
nilai Ck diuji untuk menentukan yang
mana dari candidates yang merupakan
frequent. Kondisi penghitung (terminate
condition) dari algoritma ini dicapai pada
saat Fk atau Ck+1 kosong.

Inti dari algoritma apriori :


 Gunakan frequent (k – 1)-itemsets
untuk membangun kandidat frequent
kitemsets.
 Gunakan scan database dan
pencocokan pola untuk
mengumpulkan hitungan untuk
kandidat itemsets.

240
1001 Cara Bermain Basis Data

Penyumbatan dari apriori : generasi


kandidat
 Himpunan kandidat yang besar sekali:
104 frequent 1-itemset akan
membangun 107 kandidat 2-itemsets.
Untuk menemukan suatu pola yang
sering dari ukuran 100, misal, {a1, a2,
…, a100}, seseorang perlu
membangun 2100 ≈ 1030 kandidat.
 Scan database berkali-kali:
Perlu (n +1 ) scans, n adalah panjang
dari pola terpanjang

Dalam praktek:
 Untuk pendekatan apriori dasar,
jumlah atribut dalam baris biasanya
lebih kritis ketimbang jumlah baris
transaksi.
 Contoh:
50 atribut masing-masing memiliki 1-
3 nilai, 100.000 baris (tidak sangat
buruk)
50 atribut masing-masing memiliki
10-100 nilai, 100.000 baris (cukup
buruk)
 Perhatian:

241
1001 Cara Bermain Basis Data

Satu atribut bisa memiliki beberapa


nilai berbeda.
Algoritma kaidah asosiasi biasanya
memperlakukan setiap pasangan
atribut-nilai sebagai satu atribut (2
atribut dengan masingmasing 5 nilai
=> "10 atribut").
Ada beberapa cara untuk mengatasi
problem dalam algoritma apriori ini
berikut, Perbaikan Kinerja Apriori :
1. Hitungan itemset berbasis hash:
Suatu k-itemset yang hitungan ember
hash terkaitnya dibawah ambang tidak
bisa frequent.
2. Reduksi transaksi:
Suatu transaksi yang tidak memuat
frequent k itemset apapun adalah sia-
sia dalam scan berikutnya.
3. Partisi:
Itemset apapun yang potensial
frequent dalam DB haruslah frequent
dalam paling tidak satu dari partisi dari
DB.
4. Sampling:
Penambangan atas suatu subset dari
data yang diberikan, menurunkan

242
1001 Cara Bermain Basis Data

ambang support suatu metoda untuk


menentukan kelengkapan.

 Diberikan: (1) database transaksi, (2)


setiap adalah suatu daftar dari item-
item yang dibeli (dibeli seorang
customer pada suatu kunjungan)

 cari: seluruh kaidah dengan


minimum support dan confidence.
 If min. support 50% dan min. confidence
50%, then A => C [50%, 66.6%], C => A
[50%, 100%].
 Langkah-langkah untuk mencari nilai
minimum support dam confidence dengan
algoritma apriori STEP 1: cari frequent
itemsets: himpunan item-item yang
memiliki minimum support.
 Disebut trik Apriori: suatu subset tak
hampa dari suatu frequent itemset
haruslah juga suatu frequent itemset:

243
1001 Cara Bermain Basis Data

Artinya, jika {AB} adalah suatu


frequent itemset, kedua {A} dan {B}
harus juga frequent itemsets.
 Secara iteratif cari frequent itemsets
dengan ukuran dari 1 hingga k
(kitemset)

STEP 2: gunakan frequent itemsets


untuk membangun kaidah asosiasi..
 Jika {bir,popok, kacang} frequent,
maka {bir, popok} juga frequent.
 Setiap transaksi yang memiliki {beer,
popok, kacang} juga memuat {bir,
popok}.
 Jika {A,B} memiliki support paling
tidak a , maka A dan B keduanya
memiliki support paling tidak a.
 Jika A atau B memiliki support kecil
dari a maka {A, B} memiliki support
lebih kecil dari a.

Step Gabungan: Ck dibangun dgn


menggabungkan Lk-1dengan dirinya
Step Pemangkasan: setiap (k-1)-itemset
yg bukan frequent tidak boleh menjadi
suatu subset dari suatu frequent k-itemset.

244
1001 Cara Bermain Basis Data

Pseudo-code: Ck: Kandidate itemset dari


ukuran k; Lk : Frequent itemset dari
ukuran k.
L1 = {frequent items};
for (k = 1; Lk !=0; k++) do begin
Ck+1 = {kandidat dibangun dari Lk };
for each transaksi t dalam database do
naikkan hitungan dari seluruh kandidat
dalam Ck+1 yang dimuat dalam t
Lk+1 = {kandidat dalam Ck+1 dengan
min_support}
end
return .k Lk;

Bentuk Ilustrasi Algoritma Apriori

245
1001 Cara Bermain Basis Data

Contoh apriori :

TID CID Item Price Date


101 201 Computer 1500 1/4/99
101 201 MS Office 300 1/4/99
101 201 MCSE Book 100 1/4/99
102 201 Hard disk 500 1/8/99
102 201 MCSE Book 100 1/8/99
103 202 Computer 1500 1/21/99
103 202 Hard disk 500 1/21/99
103 202 MCSE Book 100 1/21/99

 Dalam contoh ini untuk kaidah


asosiasi
{Computer} → {Hard disk}
Jumlah seluruh transaksi adalah 3
(oleh customer 201 dua kali yakni pada
1/4/99 dan 1/8/99, customer 202 sekali
yakni pada 1/21/99. Catatan
perhatikan Customer dan tanggal
transaksi ).
Jumlah transaksi Computer dan Hard
Disk adalah 1 ( oleh customer 202
pada 1/21/99 ).
Jumlah transaksi hanya Computer
adalah 2 (pada 1/4/99 oleh 201 dan
pada 1/21/99 oleh 202).

246
1001 Cara Bermain Basis Data

Support(Computer Hard disk) =


1/3=33.3%.
Conf(Computer Hard disk) =
1/2=50%

 Bagaimana dengan {Computer} →


{MCSE book}
Jumlah seluruh transaksi adalah 3
(oleh customer 201 dua kali, customer
202 sekali. Catatan perhatikan
Customer dan tanggal transaksi).
Jumlah transaksi Computer dan MCSE
book adalah 2 (oleh customer 201 dan
202).
Jumlah transaksi hanya Computer
adalah 2
Support(Computer {MCSE
book)= 2/3 = 66.6%
Conf(Computer {MCSE book)=
2/2 = 100%
 Berapa support dari 2-itemset
{Computer , Hard disk} ?
Jumlah transaksi 2-itemset
{Computer, Hard disk}adalah 1.
Jumlah transaksi keseluruhan adalah 3.
Support dari 2-itemset {Computer,
Hard disk} adalah 1/3=33.3%.

247
1001 Cara Bermain Basis Data

 Berapa support dari 1-itemset


{Computer}?
Jumlah transaksi 1-itemset
{Computer}adalah 2.
Jumlah transaksi keseluruhan adalah 3.
Support dari 1-itemset
{Computer} adalah 2/3=66.6%.

 Step dalam kaidah asosiasi


penambangan:
Cari seluruh itemsets yang supportnya
diatas minimum support yang
diberikan oleh user. Kita sebut
itemsets ini itemsets besar.
Untuk setiap itemset besar L, carilah
seluruh kaidah asosiasi dalam bentuk a
(L-a) dimana a dan (L-a) adalah
himpunan bagian L yang tak hampa.

 Step 2 adalah jelas yang dikaitkan


dengan step 1:
- Ruang pencarian eksponensial.
- Ukuran dari transaksi database.

Supp(Computer)=2/3=66.7%, supp(MS
Office)=1/3=33.3%

248
1001 Cara Bermain Basis Data

Supp(MCSE Book)=3/3=100%,
supp(Hard Disk)=2/3=66.7%
Supp(Computer,MSOffice)=1/3=33.3%
Supp(Computer,MCSE
Book)=2/3=66.7%
Supp(Computer,Hard Disk)=1/3=33.3%
Supp(MCSE Book, MS
Office)=1/3=33.3%
Supp(MCSE Book, Hard
Disk)=2/3=66.7%
Supp(MSOffice,Hard Disk)=0/3=0%
Supp(Computer, MCSE
Book,MSOffice)=1/3=33.3%
Supp(Computer, MCSE Book, Hard
Disk)=1/3=33.3%
Supp(MCSE Book, MSOffice,Hard
Disk)=0/3=0%
Supp(Computer,MCSE Book,
MSOffice,HardDisk)=0/3=0%

Asosiasi dengan minsupport 60% adalah:


Computer → MCSE Book, MCSE Book
→ Computer
MCSE Book → Hard Disk, Hard Disk →
MCSE Book

249
1001 Cara Bermain Basis Data

Conf(Computer → MCSE
Book)=2/2=100%
Conf(MCSE Book →
Computer)=2/3=66.7%
Conf(MCSE Book → Hard
Disk)=2/3=66.7%
Conf(Hard Disk → MCSE
Book)=2/2=100%

Jadi, asosiasi yang memenuhi minsupport


60% dan minconfidence 80% adalah:

Hard Disk → MCSE Book dan


Computer → MCSE Book

RINGKASAN :

 Pada dasarnya data mining berhubungan


dengan analisa data dan penggunaan
teknik-teknik perangkat lunak untuk
mencari pola dan keteraturan dalam
himpunan data yang sifatnya tersembunyi.
 Data mining diartikan sebagai suatu proses
ekstraksi informasi berguna dan potensial
dari sekumpulan data yang terdapat secara
implisit dalam suatu basis data.

250
1001 Cara Bermain Basis Data

 Tantangan-tantangan dalam Data Mining


meliputi : penanganan berbagai tipe data,
efisiensi dari algoritma data mining,
kegunaan, kepastian dan keakuratan hasil,
ekspresi terhadap berbagai jenis hasil dan
data yang diambil dari berbagai sumber
yang berbeda.
 Tahapan dalam Data Mining meliputi :
proses seleksi, pembersihan data,
tranformasi, implementasi teknik data
mining dan interprestasi hasil
 Fungsionalitas dalam Data Mining
meliputi mining association rule,
karakterisasi data multilevel, klasifikasi
data, analisa cluster, dan pencarian pola
sekuensial
 Teknik-teknik dalam Data Mining yang
bisa diterapkan antara lain : market basket
analysis dan Algoritma Apriori.

LATIHAN SOAL :

1. Apa perbedaan antara klasifikasi dan


clustering ?

Klasifikasi data adalah suatu proses yang


menemukan properti-properti yang sama

251
1001 Cara Bermain Basis Data

pada sebuah himpunan obyek di dalarn


sebuah basis data, dan
mengklasifikasikannya ke dalam kelas-
kelas yang berbeda menurut model
klasifikasi yang ditetapkan, Sedangkan
Clustering adalah suatu proses untuk
mengelompokkan sekumpulan data tanpa
suatu atribut kelas yang telah
didefinisikart sebelumnya, berdasarkan
pada prinsip konseptual clustering yaitu
memaksimalkan dan juga meminimalkan
kemiripan intra kelas.
Dataset yang digunakan pada
classification mutlak harus menampilkan
class / target attribute, sedangkan dataset
yang digunakan pada clustering tidak
menampilkan class / target attribute.

2. Apa peranan visualisasi informasi dalam


data mining ?

Visualisasi informasi merupakan suatu


cara untuk membuat representasi visual
yang interaktif dari abstract data dengan
tujuan meningkatkan daya tangkap
informasi. Dalam hal ini abstract data
merupakan pembeda antara visualisasi

252
1001 Cara Bermain Basis Data

informasi dengan visualisasi scientific.


Dalam visualisasi informasi digunakan
variabel kategorial dan dilakukan
penentuan pola, trend, kelompok,
penyimpangan, dan gasp. Sementara pada
visualisasi scientific digunakan variabel
kontinu, volume, dan permukaan. Hal ini
disebabkan karena penggunaan visualisasi
yang sangat banyak dan penggunaan
persepsi manusia untuk melakukan
penemuan pola, pengambilan keputusan,
dan penjelasan mengenai pola dari item
data.

3. Definisikan support dan confidence untuk


aturan asosiasi.

Support, supp(X) dari suatu itemset X


adalah rasio dari jumlah transaksi dimana
suatu himpunan dari item-item yang
muncul bersama-sama dengan total
jumlah transaksi.

Konfidence (keyakinan) dari kaidah X . Y,


ditulis conf(X . Y) adalah
 conf(X → Y)=supp(X ∪ Y) / supp(X)

253
1001 Cara Bermain Basis Data

 Konfindence bisa juga didefinisikan


dalam terminologi peluang bersyarat.

4. Jelaskan mengapa aturan asosiasi tidak


dapat digunakan secara langsung untuk
prediksi, tanpa analisis yang lebih lanjut
atau domain pengetahuan !

Karena dengan analisa aturan asosiasi


dapat menentukan keterkaitan antara item
– item yang berbeda sehingga aturan
asisiasi tidak hannya berdasar pada
prediksi namun juga didasari dengan
analisa yang kuat dari keterkaitan antara
item.

5. Perhatikan table Purchase berikut ini :


111 201 5/1/2002 Ink 1
111 201 5/1/2002 Milk 2
111 201 5/1/2002 Juice 1
112 105 6/3/2002 Pen 1
112 105 6/3/2002 Ink 1
112 105 6/3/2002 Water 1
113 106 5/10/2002 Pen 1
113 106 5/10/2002 Water 2
113 106 5/10/2002 Milk 1
114 201 6/1/2002 Pen 2

254
1001 Cara Bermain Basis Data

114 201 6/1/2002 Ink 2


114 201 6/1/2002 Juice 4
114 201 6/1/2002 Water 1
114 201 6/1/2002 Milk 1

Simulasikan algoritma untuk menemukan


frequent itemset pada table degan
minimum support = 90 persen, lalu cari
aturan asosiasi dengan minimum
confidence = 90 persen.

 Dalam contoh ini untuk kaidah


asosiasi {Ink} → {Pen}
- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Ink dan Pen
adalah 2 ( oleh customer 105 pada
6/3/2002 dan customer 201 pada
6/1/2002).
- Jumlah transaksi hanya Ink adalah
3 (pada 5/1/2002 dan 6/1/2002

255
1001 Cara Bermain Basis Data

oleh 201, dan pada 6/3/2002 oleh


105)
> Support(Ink Pen) = 2/4=50%
> Conf(Ink Pen) = 2/3=66.6%

 Bagaimana dengan {Ink} → {Water}


- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Ink dan Water
adalah 2 ( oleh customer 105 pada
6/3/2002 dan customer 201 pada
6/1/2002).
- Jumlah transaksi hanya Ink adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105).
>Support(Ink Water) = 2/4=50%
>Conf(Ink Water) = 2/3=66.6%

 Bagaimana dengan {Ink} → {Milk}

256
1001 Cara Bermain Basis Data

- Jumlah seluruh transaksi adalah 4


(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Ink dan Milk
adalah 2 ( oleh customer 201 pada
5/1/2002 dan 6/1/2002).
- Jumlah transaksi hanya Ink adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105).
> Support(Ink Milk) = 2/4=50%
> Conf(Ink Milk) = 2/3=66.6%

 Bagaimana dengan {Ink} → {Juice}


- Jumlah seluruh transaksi adalah 3
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002, dan
customer 105 sekali yakni pada
6/3/2002. Catatan perhatikan
Customer dan tanggal transaksi).

257
1001 Cara Bermain Basis Data

- Jumlah transaksi Ink dan Juice


adalah 2 ( oleh customer 201 pada
5/1/2002 dan 6/1/2002).
- Jumlah transaksi hanya Ink adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105)
> Support(Ink Juice) = 2/3=66.6%
> Conf(Ink Juice) = 2/3=66.6%

 Bagaimana dengan {Pen} → {Water}


- Jumlah seluruh transaksi adalah 3
(oleh customer 201 satu kali yakni
pada 6/1/2002, customer 105
sekali yakni pada 6/3/2002 dan
customer 106 sekali yakni pada
6/3/2002. Catatan perhatikan
Customer dan tanggal transaksi )
- Jumlah transaksi Pen dan Water
adalah 3 ( oleh customer 201 pada
6/1/2002, customer 106 pada
6/3/2002, dan customer 105 pada
6/3/2002)
- Jumlah transaksi hanya Pen adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105)

258
1001 Cara Bermain Basis Data

>Support(Pen Water) = 3/3=100%


>Conf(Pen Water) = 3/3=100%

 Bagaimana dengan {Pen} → {Milk}


- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi )
- Jumlah transaksi Pen dan Milk
adalah 2 ( oleh customer 201 pada
6/1/2002 dan customer 106 pada
6/3/2002)
- Jumlah transaksi hanya Pen adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105)
>Support(Pen Milk) = 2/4=50%
>Conf(Pen Milk) = 2/3=66.6%
 Bagaimana dengan {Pen} → {Juice}
- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada

259
1001 Cara Bermain Basis Data

6/3/2002 dan customer 106 sekali


yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Pen dan Juice
adalah 1 ( oleh customer 201 pada
6/1/2002).
- Jumlah transaksi hanya Pen adalah
3 (pada 5/1/2002 dan 6/1/2002
oleh 201, dan pada 6/3/2002 oleh
105)
>Support(Pen Juice) = 1/4=25%
>Conf(Pen Juice) = 1/3=33.3%

 Bagaimana dengan {Water}→{Milk}


- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Water dan Milk
adalah 2 ( oleh customer 201 pada
6/1/2002 dan customer 106 pada
6/3/2002).

260
1001 Cara Bermain Basis Data

- Jumlah transaksi hanya Water


adalah 3 (pada 5/1/2002 dan
6/1/2002 oleh 201, dan pada
6/3/2002 oleh 105)
>Support(Water Milk) = 2/4=50%
>Conf(Water Milk) = 2/3=66.6%

 Bagaimana dengan {Water}→{Juice}


- Jumlah seluruh transaksi adalah 4
(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002,
customer 105 sekali yakni pada
6/3/2002 dan customer 106 sekali
yakni pada 6/3/2002. Catatan
perhatikan Customer dan tanggal
transaksi).
- Jumlah transaksi Water dan Juice
adalah 1 ( oleh customer 201 pada
6/1/2002).
- Jumlah transaksi hanya Water
adalah 3 (pada 5/1/2002 dan
6/1/2002 oleh 201, dan pada
6/3/2002 oleh 105)
>Support(Water Juice) = 1/4=25%
>Conf(Water Juice) = 1/3=33.3%

 Bagaimana dengan {Milk} → {Juice}

261
1001 Cara Bermain Basis Data

- Jumlah seluruh transaksi adalah 3


(oleh customer 201 dua kali yakni
pada 5/1/2002 dan 6/1/2002 dan
customer 106 sekali yakni pada
6/3/2002. Catatan perhatikan
Customer dan tanggal transaksi )
- Jumlah transaksi Milk dan Juice
adalah 2 ( oleh customer 201 pada
6/1/2002)
- Jumlah transaksi hanya Milk
adalah 3 (pada 5/1/2002 dan
6/1/2002 oleh 201, dan pada
6/3/2002 oleh 105)
>Support(Water Juice) =
2/3=66.6%
>Conf(Water Juice) = 2/3=66.6%

 Berapa support dari 2-itemset {Ink ,


Pen} ?
- Jumlah transaksi 2-itemset {Ink,
Pen}adalah 2. - Jumlah transaksi
keseluruhan adalah 4.
> Support dari 2-itemset {Ink,
Pen} adalah 2/4=50%

 Berapa support dari 1-itemset {Ink}?

262
1001 Cara Bermain Basis Data

- Jumlah transaksi 1-itemset


{Ink}adalah 3. - Jumlah transaksi
keseluruhan adalah 4.
>Support dari 1-itemset {Ink}
adalah 3/4=75%

 Step dalam kaidah asosiasi


penambangan:
- Cari seluruh itemsets yang
supportnya diatas minimum
support yang diberikan oleh user.
Kita sebut itemsets ini itemsets
besar.
- Untuk setiap itemset besar L,
carilah seluruh kaidah asosiasi
dalam bentuk a (L-a) dimana a dan
(L-a) adalah himpunan bagian L
yang tak hampa.

 Step 2 adalah jelas yang dikaitkan


dengan step 1:
- Ruang pencarian eksponensial
- Ukuran dari transaksi database

Supp(Ink)=3/4=75%,
supp(Pen)=3/4=75%

263
1001 Cara Bermain Basis Data

Supp(Water)=3/4=75%,
supp(Milk)=3/4=75%
supp(Juice)=2/4=50%
Supp(Ink,Pen)=2/4=50%
Supp(Ink,Water)=2/4=50%
Supp(Ink,Milk)=2/4=50%
Supp(Ink, Juice)=2/4=50%
Supp(Pen, Water)=3/4=75%
Supp(Pen,Milk)=2/4=50%
Supp(Pen, Juice)=1/4=25%
Supp(Water,Milk)=2/4=50%
Supp(Water, Juice)=1/4=25%
Supp(Water,Milk)=2/4=50%
Supp(Ink, Pen,Water)=2/4=50%
Supp(Ink, Pen,Milk)=1/4=25%
Supp(Ink, Pen,Juice)=1/4=25%
Supp(Pen,Water,Milk)=2/4=50%
Supp(Pen, Water, Juice)=1/4=25%
Supp(Water, Milk,Juice)=1/4=25%
Supp(Ink, Pen, Water,Milk)=1/4=25%
Supp(Ink, Pen, Water,Juice)=1/4=25%
Supp(Pen, Water,Milk,Juice)=1/4=25%
Supp(Ink,Pen,
Water,Milk,Juice)=1/4=25%

Asosiasi dengan minsupport 60% adalah:


Pen → Water, Water → Pen

264
1001 Cara Bermain Basis Data

Conf(Pen → Water)=3/3=100%
Conf(Water → Pen)=3/3=100%

Jadi, asosiasi yang memenuhi minsupport


60% dan minconfidence 80% adalah:
Pen → Water dan
Water → Pen
BAB 12
DATABASE TRIGGER

12.1 PENDAHULUAN
Trigger adalah blok PL/SQL atau
prosedur yang berhubungan dengan
table, view, skema atau database yang
dijalankan secara implicit pada saat
terjadi sebuah event.
Tipe dari trigger adalah :
 Application trigger : diaktifkan
pada saat terjadi event yang
berhubungan dengan sebuah
aplikasi.
 Database trigger : diaktifkan pada
saat terjadi event yang
berhubungan dengan data (seperti
operasi DML) atau event yang
berhubungan dengan sistem
(semisal logon atau shutdown)

265
1001 Cara Bermain Basis Data

yang terjadi pada sebuah skema


atau database.

12.2 PENGGUNAAN TRIGGER


Trigger dibuat sesuai dengan
keperluan. Ada kalanya trigger perlu
dibuat, dan kadangkala tidak perlu
dibuat.
Trigger perlu dibuat pada saat :
 membentuk sebuah aksi tertentu
terhadap suatu event.
 Memusatkan operasi global.

Trigger tidak perlu dibuat, jika :


 Fungsionalitas yang diperlukan
suatu ada pada Oracle server.
 Duplikat atau sama dengan fungsi
trigger yang lain.
Prosedur bisa dibuat dalam
database, kemudian prosedur tersebut
dipanggil pada trigger. Jika
penggunaan trigger terlalu berlebihan,
maka akan menyebabkan terjadi sifat
ketidaktergantungan yang terlalu
kompleks sehingga akan mempersulit
pemeliharaan dari aplikasi yang besar.

266
1001 Cara Bermain Basis Data

Gambar berikut ini menunjukkan


ilustrasi dari penggunaan trigger :

Pada gambar tersebut, database trigger


CHECK_SAL memeriksa nilai gaji
pada saat suatu aplikasi mencoba
untuk memasukkan baris baru ke
dalam table EMPLOYEES. Nilai yang
terletak pada jangkauan diluar kategori
pekerjaan akan diabaikan.
Sintak penulisan dari database trigger,
berisi komponen berikut :
1. Trigger timing :
a. Untuk tabel : BEFORE,
AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE
atau DELETE.

267
1001 Cara Bermain Basis Data

3. Nama tabel : yaitu nama tabel atau


view yang berhubungan dengan
trigger.
4. Tipe trigger : Baris atau
Pernyataan (statement).
5. klausa WHEN : untuk kondisi
pembatasan.
6. trigger body : bagian prosedur
yang dituliskan pada trigger.

12.3 KOMPONEN TRIGGER


Komponen dari sebuah trigger ada
6 (enam), yaitu : trigger timing, trigger
event, nama tabel, tipe trigger, klausa
WHEN, dan trigger body. Berikut ini
penjelasan komponen dari trigger.
Trigger timing adalah waktu kapan
trigger diaktifkan. Ada tiga macam
trigger timing, yaitu :
 BEFORE : trigger dijalankan
sebelum DML event pada table.
 AFTER : trigger dijalankan setelah
DML event pada table.
 INSTEAD OF : trigger dijalankan
pada sebuah view.
Trigger event ada 3 kemungkinan :
INSERT, UPDATE atau DELETE.

268
1001 Cara Bermain Basis Data

Pada saat trigger event UPDATE, kita


dapat memasukkan daftar kolom untuk
mengidentifikasi kolom mana yang
berubah untuk mengaktifkan sebuah
trigger (contoh : UPDATE OF salary
... ). Jika tidak ditentukan, maka
perubahannya akan berlaku untuk
semua kolom pada semua baris.
Tipe trigger ada 2 macam, yaitu :
 Statement : trigger dijalankan
sekali saja pada saat terjadi sebuah
event. Statement trigger juga
dijalankan sekali, meskipun tidak
ada satupun baris yang
dipengaruhi oleh event yang
terjadi.
 Row : trigger dijalankan pada
setiap baris yang dipengaruhi oleh
terjadinya sebuah event. Row
trigger tidak dijalankan jika event
dari trigger tidak berpengaruh pada
satu baris pun.
Trigger body mendefinisikan
tindakan yang perlu dikerjakan
pada saat terjadinya event yang
mengakibatkan sebuah trigger
menjadi aktif.

269
1001 Cara Bermain Basis Data

12.4 CONTOH PEMBUATAN


TRIGGER
Contoh berikut ini akan
mengaktifkan sebuah trigger pada saat
sebuah baris tunggal dimanipulasi
pada tabel :
Misal diberikan perintah DML
untuk menyisipkan baris baru ke
dalam table sebagai berikut :
INSERT INTO departments
(department_id, department_name,
location_id) VALUES (400,
'CONSULTING', 2400);

Ilustrasi dari trigger timing untuk


event tersebut adalah sebagai berikut :

Jika DML statement berlaku


untuk lebih dari satu baris yang ada
pada table (multiple row), semisal :
UPDATE employees
SET salary = salary * 1.1

270
1001 Cara Bermain Basis Data

WHERE department_id = 30;


Maka ilustrasi dari trigger timing
untuk event tersebut adalah sebagai
berikut :

12.5 DML STATEMENT TRIGGER


Berikut ini sintak atau cara penulisan
untuk pembuatan DML Statement
trigger :
CREATE [OR REPLACE]
TRIGGER trigger_name timing
event1 [OR event2 OR event3] ON
table_name trigger_body
Berikut contoh pembuatan DML
Statement trigger :

271
1001 Cara Bermain Basis Data

Contoh trigger diatas akan


membatasi penyisipan baris baru ke
dalam table EMPLOYEES
diperbolehkan hanya pada jam kerja
mulai hari Senin sampai Jum’at. Jika
user menyisipkan baris baru diluar
ketentuan tersebut, missal pada hari
Sabtu maka akan tampil pesan
kesalahan.
Perintah berikut ini akan menguji
trigger SECURE_EMP dengan
memberikan perintah SQL berikut ini
pada jam diluar jam kerja, sebagai
berikut :

Perintah tersebut akan


memberikan pesan kesalahan :

272
1001 Cara Bermain Basis Data

12.6 MENGKONFIRMASIKAN
EVENT PADA TRIGGER
Beberapa event pada trigger bisa
dikombinasikan dalam sebuah trigger
dengan menggunakan predikat
kondisional INSERTING,
UPDATING dan DELETING. Berikut
ini akan dibuat trigger yang
menggunakan predikat kondisional
INSERTING, UPDATING dan
DELETING untuk membatasi
manipulasi data pada table
EMPLOYEES hanya diperbolehkan
pada setiap jam kerja mulai hari Senin
sampai Jum’at.

273
1001 Cara Bermain Basis Data

12.7 ROW TRIGGER


Berikut ini sintak atau cara
penulisan untuk membuat Row
Trigger :
CREATE [OR REPLACE]
TRIGGER trigger_name timing
event1 [OR event2 OR event3]
ON table_name [REFERENCING
OLD AS old | NEW AS new] FOR
EACH ROW [WHEN (condition)]
trigger_body
Contoh berikut ini akan dibuat row
trigger dengan timing BEFORE untuk
membatasi operasi DML pada table
EMPLOYEES hanya diperbolehkan
untuk pegawai yang memiliki kode
pekerjaan ‘AD_PRES’ dan ‘AD_VP’
serta memiliki gaji kurang dari 15000.

274
1001 Cara Bermain Basis Data

Jika kita mencoba memberikan


perintah SQL sebagai berikut, maka
akan ditampilkan pesan kesalahan :
UPDATE employees SET salary =
15500 WHERE last_name = 'Russell';
12.8 MENGGUNAKAN OLD DAN
NEW QUALIFIERS
Pada Row Trigger, nilai dari
kolom sebelum dan sesudah
perubahan data dapat dirujuk dengan
menggunakan OLD dan NEW
qualifier. OLD dan NEW hanya
digunakan pada Row Trigger. OLD
dan NEW menggunakan prefiks (:)
untuk pernyataan dalam perintah SQL.
Jika qualifier ini terlibat dalam
pembatasan kondisi pada klausa
WHEN, maka tidak digunakan prefiks
(:).

275
1001 Cara Bermain Basis Data

Row triggers akan menurunkan


unjuk kerja jika banyak dilakukan
update pada table yang cukup besar.
Contoh Trigger berikut ini
menggunakan OLD dan NEW
qualifier pada Row Trigger :

Untuk memeriksa hasil dari


pembuatan trigger diatas, diberikan
perintah SQL sebagai berikut :

Hasil dari perintah SQL tersebut


adalah akan disimpan record
perubahan pada table

276
1001 Cara Bermain Basis Data

AUDIT_EMP_TABLE sebagai hasil


dari operasi Trigger :
SELECT user_name,
timestamp, ... FROM
audit_emp_table

12.9 PENGGUNAAN KLAUSA WHEN


PADA TRIGGER
Untuk membatasi operasi trigger
hanya pada baris yang memenuhi
kondisi tertentu, maka digunakan
klausa WHEN. Berikut ini akan dibuat
trigger pada table EMPLOYEES yang
menghitung komisi yang diterima oleh
seorang pegawai pada saat sebuah
baris ditambahkan ke dalam tabel
EMPLOYEES, atau pada saat
dilakukan modifikasi pada gaji
pegawai.

277
1001 Cara Bermain Basis Data

Pada klausa WHEN, penggunaan


OLD dan NEW qualifier tidak dengan
prefiks
(:). Untuk menggunakan NEW
qualifier, gunakan BEFORE Row
Trigger, jika timing BEFORE pada
trigger diatas diganti dengan AFTER,
maka akan didapat pesan kesalahan :

12.10 PERINTAH UMUM


Berikut ini perintah-perintah
umum yang digunakan pada trigger.
Untuk mengaktifkan atau
menonaktifkan database trigger,
digunakan perintah :

278
1001 Cara Bermain Basis Data

ALTER TRIGGER trigger_name


DISABLE | ENABLE

Untuk mengaktifkan atau


menonaktifkan semua trigger yang
berlaku untuk sebuah tabel, digunakan
perintah :
ALTER TABLE table_name
DISABLE | ENABLE ALL

Untuk melakukan kompilasi ulang


sebuah trigger, digunakan perintah :
ALTER TRIGGER trigger_name
COMPILE
Untuk menghapus trigger dari
database, digunakan perintah :
DROP TRIGGER trigger_name

Catatan : Semua trigger yang berlaku


pada sebuah tabel akan dihapus pada
saat table tersebut dihapus dari
database.

RINGKASAN :
 Trigger adalah blok PL/SQL atau prosedur
yang berhubungan dengan table, view,

279
1001 Cara Bermain Basis Data

skema atau database yang dijalankan


secara implicit pada saat terjadi event.
 Tipe dari trigger adalah : Application
trigger (diaktifkan pada saat terjadi event
yang berhubungan dengan sebuah
aplikasi) dan database trigger (diaktifkan
pada saat terjadi event yang berhubungan
dengan data).
 Trigger dibuat pada saat yang tepat jika
diperlukan yaitu untuk membentuk sebuah
aksi tertentu terhadap suatu event dan
memusatkan operasi global.
 Penggunaan trigger yang terlalu
berlebihan akan menyebabkan terjadi sifat
ketidaktergantungan yang terlalu
kompleks sehingga akan mempersulit
pemeliharaan dari aplikasi yang besar.
 Trigger berisi komponen-komponen :
trigger timing, trigger event, nama tabel,
tipe trigger, klausa WHEN dan trigger
body.
 Beberapa event pada trigger bisa
dikombinasikan dalam sebuah trigger
dengan menggunakan predikat
kondisional INSERTING, UPDATING
dan DELETING.

280
1001 Cara Bermain Basis Data

 Pada Row Trigger, nilai dari kolom


sebelum dan sesudah perubahan data dapat
dirujuk dengan menggunakan OLD dan
NEW qualifier.

LATIHAN SOAL :
1. Perubahan pada data hanya diperbolehkan
selama jam kerja dari jam 8:45 pagi
sampai 17.30 , dari Senin hingga Jum’at.
Buat stored procedure dengan nama
SECURE_DML untuk mencegah DML
statement dijalankan diluar dari jam kerja,
dengan menampilkan pesan “Perubahan
pada data hanya diperbolehkan hanya pada
jam kerja”.
Jawaban :

281
1001 Cara Bermain Basis Data

create or replace TRIGGER secure_dml


BEFORE INSERT ON employees
BEGIN
IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN
'08:45' AND '17:30'
OR TO_CHAR (SYSDATE, 'DY') IN ('MONDAY',
'FRIDAY') THEN
RAISE_APPLICATION_ERROR (-20205,'Perubahan
pada data hanya diperbolehkan hanya pada jam kerja');
END IF;
END secure_dml;

2. Buat statement trigger pada tabel JOBS


untuk memanggil prosedur diatas.
Jawaban:

282
1001 Cara Bermain Basis Data

CREATE OR REPLACE PROCEDURE UPD_EMP_SAL


(p_job_id IN employees.job_id%TYPE, p_min_sal IN
employees.salary%TYPE)
IS
CURSOR c_emp_sal_update(cp_job_id
employees.job_id%TYPE) IS
SELECT salary
FROM employees
WHERE job_id = cp_job_id
FOR UPDATE OF salary NOWAIT;
BEGIN
FOR v_c IN c_emp_sal_update(p_job_id)
LOOP
IF v_c.salary < p_min_sal THEN
UPDATE employees SET salary = p_min_sal
WHERE CURRENT OF c_emp_sal_update;
END IF;
END LOOP;
END UPD_EMP_SAL;

4. Lanjutan dari soal nomer 3, buat row


trigger dengan nama
UPDATE_EMP_SALARY pada table
JOBS yang memanggil prosedur
UPD_EMP_SAL, pada saat minimum gaji
pada table JOBS diubah untuk suatu job
ID tertentu.
Jawaban:

283
1001 Cara Bermain Basis Data

SELECT employee_id, job_id, salary


FROM employees
ORDER BY job_id, employee_id

LATIHAN SOAL 2 :
1. Buatlah statement trigger (nama Latihan
1), yang melakukan pengecekan terhadap
update data pada table barang. Ketika
update data pada table barang maka
masukkan data tanggal sekarang pada field
tanggal dan komentar ‘Ubah data’ field
komentar, timing trigger yang dipake
adalah AFTER.
Jawaban :
CREATE OR REPLACE TRIGGER LATIHAN1
AFTER UPDATE ON BARANG
DECLARE
BEGIN
insert into log
(tanggal,komentar)values(sysdate,'ubah data');
END;

2. Buatlah row trigger (nama LATIHAN2)


yang melakukan pengecekan terhadap
update data pada table barang. Timing

284
1001 Cara Bermain Basis Data

trigger yang dipakai adalah BEFORE.


Body trigger berisi, insert data pada table
LOG, dengan ketentuan:
• Field tanggal berisi data baru dari field
tanggal dari table barang.
• Field komentar berisi ‘Ubah data dari’ +
data lama dari field nama dari table
barang.
Jawaban :
CREATE OR REPLACE TRIGGER LATIHAN2
BEFORE UPDATE on BARANG
FOR EACH ROW
DECLARE
BEGIN
INSERT INTO log (tanggal,komentar)VALUES
(new.tanggal,'ubah data dari'+old.tanggal);
END;

3. Buatlah row trigger (nama LATIHAN3)


yang melakukan pengecekan terhadap
delete data pada table barang. Timing
trigger yanga dipakai adalah AFTER.
Body trigger berisi insert pada data table
LOG dengan ketentuan:
• Jika data pada field jumlah pada field
barang yang dihapus adalah berisi kurang
dari 50 maka masukkan data pada table
LOG.

285
1001 Cara Bermain Basis Data

- Field tanggal berisi data lama dari field


tanggal dari table barang.
- Field komentar berisi ‘hapus Data dengan
jumlah kurang dari 50 yaitu ‘+ data lama
dari field jumlah.
• Jika data pada field jumlah pada field
barang yang dihapus adalah berisi lebih
dari 50 maka masukkan data pada table
LOG.
- Field tanggal berisi data lama dari field
tanggal dari table barang.
- Field komentar berisi ‘hapus Data dengan
jumlah kurang dari 50 yaitu ‘+ data lama
dari field jumlah.
Jawaban :
CREATE OR REPLACE TRIGGER LATIHAN3
AFTER DELETE ON BARANG
DECLARE
BEGIN
IF OLD.jumlah <= 50 THEN
INSERT INTO log (tanggal,komentar)VALUES
(old.tanggal,'hapus data dengan jumlah kurang dari 50
yaitu'+old.jumlah);
ELSE
INSERT INTO log (tanggal,komentar)VALUES
(old.tanggal,'hapus data dengan jumlah lebih dari 50
yaitu'+old.jumlah);
END IF;
END;

286
1001 Cara Bermain Basis Data

287
1001 Cara Bermain Basis Data

Daftar Pustaka
Armiati, Sari dan Shiyami Milwandhari. 2004.
Buku Ajar Basis Data Fundamental.
Yogyakarta: Deepublish.

Budi, Halim S, dkk. 2017. Fundamental SQL


Database Oracle 12c. Yogyakarta: Andi
Publisher.

Damopolii, Reinhard. 2002. Belajar Sendiri


Administrasi Database Oracle8i. Jakarta:
Elex Media Komputindo.

Feuerstein, Steven dan Bill Pribly. 1997. Oracle


PL/SQL Programming. USA: O’Reilly &
Associates Inc.

Greenberg, Nancy. 2004. Oracle Database 10g:


SQL Fundamentals 1 Volume 1 Student
Guide. New Jersey: Oracle

Heryanto, Imam dan Hadi Raharjo. 2006.


Menguasai Oracle SQL Dan PL/SQL.
Bandung: Informatika.

Hutabarat. Bernaridho I. 2003. Panduan Oracle8i


Untuk Administrator Database. Jakarta:
Elex Media Komputindo

Masya, Fajar. 2010. Oracle, Panduan PL/SQL.


Depok: Graha Ilmu.

ix
1001 Cara Bermain Basis Data

Nugroho, Adi. 2014. Sistem Basis Data Oracle 10g.


Yogyakarta: Andi Publisher.

Urman, Scott. 1996. Oracle PL/SQL Programming.


California: McGraw-Hill Inc.

x
1001 Cara Bermain Basis Data

Biografi Penulis
Rengga Asmara,
lulusan SMAN 5
Surabaya dan telah
meraih gelar Sarjana
di Jurusan Teknik
Informatika, ITS
Surabaya pada tahun
2004. Dan meraih gelar Master di Politeknik
Elektronika Negeri Surabaya tahun 2017. Saat
ini beliau adalah dosen di Politeknik
Elektronika Negeri Surabaya.
( rengga.lecturer@pens.ac.id ).

Reza Gusty Erlangga lahir


pada tanggal 24 Mei 1995
di Surabaya. Jenjang
pendidikan di SD Alam
Insan Mulia Surabaya, SMP
Alam Insan Mulia
Surabaya, SMA Alam Insan
Mulia Surabaya, Diploma
III Teknik Informatika Politeknik Elektronika
Negeri Surabaya dan saat ini sedang
melanjutkan kuliah di Politeknik Elektronika
Negeri Surabaya dengan jurusan Teknik
Informatika. Selain itu ia juga merupakan
salah satu pendiri dari OTEBE Smart
Publisher.
(angga.yukio@gmail.com)

xi

Anda mungkin juga menyukai