Anda di halaman 1dari 154

DATABASE LANJUT DENGAN MENGGUNAKAN IBM DB2 & JAVA

DIKTAT KULIAH

Oleh: Hendra, MT. Ji ! S.K" .

#$OG$AM STUDI TEKNIK IN%O$MASI STMIK IBBI MEDAN 2&'2

KATA PENGANTAR
Database merupakan jantung dari sistim informasi, karena didalam database tersimpan semua data yang dibutuhkan untuk diolah menjadi informasi. Kinerja dari suatu aplikasi berbasis database sangat dipengaruhi oleh kinerja dari database yang digunakan serta teknik pemrograman yang digunakan. uatu ran!angan database yang baik memperhatikan faktor integritas data, kinerja dan kemanan dari database tersebut. "ada buku ini kita akan mulai dari pengolahan data dengan flat file untuk meletakan dasar pemikiran bagi mahasis#a mengapa D$% sangat berperan dalam pengembangan aplikasi sehingga pengembang dapat fokus kepada aturan bisnis daripada pengelolaan data pada media penyimpanan fisik. Kemudian akan dilanjutkan dengan teori siklus hidup database, pemodelan database dengan menggunakan &'D, proses normalisasi, proses denormalisasi, peran!angan database, tuning kinerja database, pembuatan trigger, UD(, stored pro!edure, database se!urity, dan proses ba!kup restore. "ada buku ini kita membuat !ontoh dengan menggunakan 'D$% D$) Uni*ersal Database yang merupakan sistim database yang mapan dan digunakan di perusahaan+ perusahaan skala menengah dan besar. ebagai praktek kita juga memberikan !ontoh pengaplikasian database dengan konekti*itas dengan ,a*a melalui ,D$-. "enulis berusaha membuat buku ini mudah dipahami dan !ontoh+!ontoh berdasarkan pengalaman penulis selama ini baik sebagai Dosen maupun praktisi dibidang pengembangan sistim informasi. Akhirnya penulis mengu!apkans selamat memba!a, dan berlatih, dan selamat datang ke database kelas &nterprise yaitu I$% D$), dan tak lupa penulis mengu!apkan terima kasih kepada Team I$% Indonesia yang telah memberikan kesempatan bagi penulis untuk ikut serta dalam pelatihan Db) dalam kerangka I$% A!ademi! Initiati*e on -ampus. %edan, . %aret )/0) "enulis

DA(TA' I I $agian 0, "engantar Database......................................................................................0 $agian ), %odel Database 'elational.........................................................................00 $agian 1, iklus Hidup Database...............................................................................02 $agian 3, &'+Diagram................................................................................................)4 $agian 4, 5ormalisasi.................................................................................................14 $agian 6, 5ormalisasi Lanjutan.................................................................................3. $agian ., Denormalisasi.............................................................................................6) $agian 2, "eran!angan Database................................................................................67 $agian 7, "erforman!e+Tuning....................................................................................2 $agian 0/, UD(..........................................................................................................70 $agian 00, tored "ro!edure......................................................................................77 $agian 0), Konsistensi Transaksi.............................................................................0/3 $agian 01, Konsistensi Konkurensi..........................................................................00) $agian 03, Data -ontrol Language..........................................................................01/ $again 04, $a!kup, 'estore dan 'e!o*ery..............................................................03/

Tujuan utama dari D$% adalah untuk mengintegrasikan data pada suatu lokasi yang tersentralisasi dan menyediakan suatu akses berbagi pakai yang aman.immy. teratur. e!ara teori dua data yang disimpan pada dua tempat yang berbeda maka besar kemungkinan dua item yang diperkirakan sama tetapi kenyataannya tidak sama. pemba!aan kembali. aplikasi mengakses Hendra. Pengantar Database Data merupakan fakta dari sesuatu yang diperoleh dari hasil dari pengukuran. "rogres . tentu saja harus disimpan dalam bentuk yang terstruktur. misalnya data mahasis#a disimpan pada dua tabel yang berbeda. dan dapat dengan mudah diakses. . bisa saja pembaharuan dilakukan pada tabel yang satu tetapi tidak dilakukan pada tabel yang lain.Database Lanjut dengan I$% D$) Bab 1. mulai dari komersil dengan support sampai kepada open sour!e dengan support maupun tanpa support 8!ommunity edition9. seperti :ra!le. kemudian data dapat diolah lebih lanjut untuk mendapatkan pengetahuan dan memprediksi kondisi masa depan.L. Integrasi data organisasi pada suatu lokasi terpusat yang terkendali mengurangi redundan!y dan memastikan konsistensi data. De#asa ini berbagai paket soft#are D$% yang tersedia dipasar mulai dari sistim besar sampai kepada perangkat mobile. dan pemakaian dari database. pada saat anda berkenalan dengan seseorang dan melakukan pertukaran nomor telepon bergerak. 0 . terutama bagi kita yang memba#a perangkat telepon bergerak. kita senantiasa berinteraksi dengan database. Model Data "ada a#al perkembangan aplikasi komputer. %T. maupun hasil dari !atatan transaksi masa lampau. % . (irebird . dan diperbaharui. %y . maupun menggunakan seperator koma. maka kita akan merekam nama dan nomor orang tersebut pada data !onta!t. Data dapat diolah menjadi informasi untuk mengambarkan kondisi masa lalu dan kondisi saat ini. Database Database merupakan suatu koleksi dari informasi yang berkaitan. D$). diatur.L. sedangkan penanganan data fisik akan diambil alih oleh D$% . maka kita dapat memperbaharui data !onta!t. penanganan data fisik dilakukan langsung oleh programmer dengan menggunakan sistem flat file ataupun simple te=t file yang dapat berupa fi=ed length.L.L. pemeliharaan.Kom. Dalam kehidupan modern. DBMS Database management system adalah suatu paket soft#are komputer yang mengendalikan pembuatan. "emakaian D$% memberikan kemudahan bagi pengembang untuk memfokuskan diri pada pengembangan aplikasi. sehingga memudahkan pen!arian. ketika kita ingin menghubungi orang tersebut. dan jika ada perubahan data. maka kita dapat melakukan pen!arian berdasarkan nama. Agar data dapat diolah se!ara efisien dan efektif. > . <lLite.

dan pemakai bahasa pertanyaan yang nyaman dan fleksibel. dan sebuah judul kolom disebut sebagai suatu atribut.a "del rela(i"nal en+a -il nana dari . "ada model relational. akses terhadap data menggunakan file pointer. %odel lainnya yang digunakan pada mainframe adalah model hierarki dan net#ork. manajemen data 8termasuk penyimpanan dan pengambilan. dan setiap kolom berkoresponden dengan suatu atribut indi*idu. dan menggunakan teori himpunan dan logika first order predi!ate0 sebagai dasar teorinya. penelitian dan pengembangan database sejak tahun 07. Hendra. Human8 o!rates9 B %ortal8 o!rates9. setiap item memiliki hanya satu link kepada induknya. uatu relasi se!ara fisik direpresentasikan sebagai suatu tabel dimana masing+masing baris berkoresponden dengan satu re!ord indi*idu. dan tabel tersebut disebut sebagai relasi. peralatan modeling data. optimisasi <uery.an -ah.en!a*aan -ah. "ada perkembangan selanjutnya menggunakan sistim random akses. metode yang efisien untuk online transa!tion pro!essing 8:LT"9. manajemen transaksi.Database Lanjut dengan I$% D$) data se!ara se<uensial untuk melakukan proses bat!h. "ada model net#ork memiliki banyak link diantara item data. diaman atribut dapat mun!ul dalam berbagai urutan dalam tabel. -odd dari I$% 'esear!h pada tahun 07. Akses data dimulai dari akar dan ditelusuri ke item+item diba#ahnya sampai item yang diinginkan ditemukan. "ada model relational. "emakaian model relasi memiliki keuntungan tampilan dan ke!epatan akses. ) . beserta nama kolom dan tipe data untuk setiap kolom.immy. ejak tahu 076/ database dan IT bere*olusi se!ara sistematis dari pemrosesan file se!ara primitif sampai kepada sistim database yang memuaskan./+an yang berkembang dari suatu model database hierarki dan net#ork ke model database relasional 8dimana data disimpan dalam struktur tabel relasional9. sebuah baris disebut sebagai tuple. pembuatan. 8Se()a*) !an+ (erin+ di(alah ar*i. > . o!rates is human. berkontribusi se!ara 0 All human are mortal.(. dan data analisa maju 8termasuk data #arehouse dan data mining9. Kamus data untuk model relasi memuat nama tabel. model hirarki dalam bentuk model tree. Human8h9 B %ortal8h9. database diekspresikan sebagai koleksi dari relasi+relasi. ThrereforeA o!rates is mortal. dimana data disimpan sebagai tipe data re!ord yang memiliki ukuran tetap.Kom./ dengan judul ?A 'elational %odel of Data for Large hared Databanks@.a *a-el dala da*a-a(e rela(i"nal da/a* -erela(i (a*) (a a lainn!a9. dimana memiliki akar dan beberapa tingkatan !abang. selain itu kamus data juga menyimpan informasi seluruh user dan hak+hak istime#anya. proses transaksi database9. antar muka pemakai. . Evolusi teknologi database Database dan industri manajemen data bere*olusi didalam pengembangan dari berbagai fungsi kritikal yang dimulai dari koleksi data dan database. Indek yang saling berhubungan memungkinkan akses data dari berbagai arah. %odel relational ini didasarkan pada suatu konsep dari relational matematika. dimana suatu <uery ditampikan sebagai suatu transaksi read+only. %odel data relasional diperkenalkan perama kali oleh &. sehingga pemba!aan maupun penulisan dapat dilakukan se!ara a!ak ke re!ord tertentu. inde=ing dan metode akses. %T.

ian "ei. teknologi database bergerak maju kepada pengembangan dari sistim database yang maju.Kom. data #arehouse. %T. dan data mining untuk analisa data tingkat tinggi dan database berbasis #eb yang digambarkan oleh diagram berikut iniA Cambar 0. %i!heline Kamber. pengambilan dan pengaturan data dalam ukuran besar. etelah pengembangan dari D$% .immy. . )/0)9 Hendra. > . &*olusi teknologi database 8 umberA . 1 .Database Lanjut dengan I$% D$) substansial kepada e*olusi dan diterima se!ara luas dari teknologi relasional sebagai peralatan utama untuk penyimpanan yang efisien.ia#ei Han. .

seperti penghapusan maupun penyisipan kolom. Data yang tersimpan didalam file membutuhkan format dengan struktur yang tertentu. !ontohnya pada sistim operasi linu= menyimpan user dan pass#ord pada file pass#d dan shado#. 3 . pendekatan yang dapat dilakukan untuk pembeda terhadap masing+masing elemen data dalam file teks adalah menggunakan ukuran tetap. > . dimana Hendra. maupun menggunakan simbol pemisah seperti koma maupun titik koma. . Dalam praktek. -ontoh database dalam format teks ukuran tetap 5I% 00/0/)//0 00/0/)//) 00/0/)//1 00/0/)//3 5A%A Hendra usan ukiman .immy. "engenalan terhadap struktur data dalam teks file biasanya di hard!ode pada program aplikasi. seperti untuk penyimpanan setting parameter perangkat lunak. melakukan proses pemisahan terhadap masing+masing komponen data. sering juga dijumpai penyimpanan data dalam spreadsheet. "engolahan data dalam format teks dapat efektif dan unggul untuk pengolahan data yang ke!il dan tingkat perubahan yang rendah dan bersifat se<uential. maka keseluruhan teks file harus ditulis ulang.Kom. tidak terlepas dari pemakaian file untuk penyimpanan data se!ara permanen 8data tidak hilang ketika sistim di+shutdo#n9. .Database Lanjut dengan I$% D$) Pengelolaan Flat File "engembangan aplikasi yang berorientasi kepada data. %T. sehingga dapat dikenali dan dipisahkan kembali masing+masing elemen data. dimana data diekstrak dari suatu sistim.ika terjadi perubahan struktur data.immy %ATAKULIAH Database Database Database Database 5ILAI $ $ $ $ -ontoh database dalam format teks dengan pemisah titik koma 5I%D5A%AD%ATAKULIAHD5ILAID 00/0/)//0DHendraDDatabaseD $D 00/0/)//)D usanDDatabaseD$D 00/0/)//1D ukimanDDatabaseD$D 00/0/)//3D.immyDDatabaseD$D "enyimpanan data dalam bentuk teks membutuhkan usaha yang besar bagi programmer untuk membuat fasilitas pemba!aan teks se<uential. kemudian di load ke sistim lainnya. Data dalam bentuk format teks juga umumnya digunakan pada pertukaran data elektronis.

Menulis ke teks file alah satu !lass yang dapat digunakan untuk pengolahan file karakter adalah -lass (ileFriter. dan seterusnya. PrintWriter out = new PrintWriter(outFile). file !AGsis#a. 4 .%&! s. dan penulisan ke file menggunakan -lass "rintFriter."(en)ra".Database Lanjut dengan I$% D$) memungkinkan data dapat di!ari. masing+masing baris diakhiri dengan -'EL(. melainkan dibuka untuk append. "erintah tersebut diatas.")). Pengolahan file sequential pada Java uatu se<uential file tidak memiliki struktur yang tertentu.%%s. Deklarasi *ariabel string my(ormat diatas mempersiapkan format ukuran tetap pada masing+masing elemen yaitu 8H0I+0/s9 adalah format untuk elemen pertama sebagai string dengan panjang 0/ karakter. Hendra.". String myFormat = "% !" #s%$!"$#s%%!"$#s%&!" s". outFile = new FileWriter("c:\\siswa.".txt".format(myFormat. .true).%$s. Agar file yang telah ada tidak di+o*er#rite. Anda dapat menyimpan masing+masing elemen data dengan menggunakan pemisah titik koma 8D9 dengan format string sebagai berikutA String myFormat = "% s. " # #$## ". "erintah tersebut diatas akan menuliskan data masing+masing elemen yang telah diformat dengan fungsi format tring berdasarkan pola yang telah dipersiapkan pada *ariabel my(ormat. outFile = new FileWriter("c:\\siswa."*ata+ase". maka dapat ditambahkan argumen true pada (ileFriter. diringkas se!ara !epat. dan kebutuhan data yang dapat diakses bersama oleh beberapa pemakai dalam #aktu yang bersamaan.immy. PrintWriter out = new PrintWriter(outFile). "embuatan format te=t dengan ukuran tetap pada masing+masing elemen dapat menggunakan bantuan metoda format89 pada tring. > . maka akan di+o*er#rite.Kom.txt"). 8H1I+)/9.t=t yang baru. 8H)I+)/s9 adalah format untuk elemen kedua sebagai string dengan panjang )/ karakter. akan membuat file !AGsis#a.'rintln(String. sehingga out. pemba!aan dan penulisan data dilakukan se!ara berurutan. %T. tetapi kendala yang dihadapi adalah keterbatasan jumlah baris penyimpanan data.t=t telah ada.

out.su+string(#. System. dan trim89 untuk memotong kelebihan spasi kanan pada elemen.ama : " < s. //o'en existing 0ile inFile = new File-ea)er("c:\\siswa. Untuk memisahkan masing+masing elemen berukuran tetap dari tring.su+string(?#.'rintStac9:race().txt"). while((s = +r."). try .out. Untuk jelasnya dapat dilihat pada potongan program berikut ini A System.trim()).'rintln(".out.u00ere)-ea)er(inFile).out. untuk jelasnya dapat melihat potongan program berikut A String elemen@A. // TODO 7uto"generate) catc8 +loc9 e.im : " < s. 3 return #. %T. while((s = +r. Untuk jelasnya dapat melihat program berikut ini. elemen = s.rea)1ine()) 2= null) . System.'rintln(s). . Untuk memisahkan masing+masing elemen yang dipisahkan dengan titik koma 8D9 dari tring. System.rea)1ine()) 2= null) . File-ea)er inFile. System.out.trim()). dapat menggunakan metoda substring89. . &=).'rintln(".u00ere)-ea)er +r = new .ilai : " Hendra.'rintln(".immy.'rintln(".'rintln(">ata 9ulia8 : " < s.su+string( #.Kom.close().su+string(%#.ama : " < elemen@ A).out. String s.im : " < elemen@#A).out. System. System. 3 catch (456xce'tion e) .out. dan pemba!aan baris teks menggunakan -lass $uffered'eader. ? ).out. > .s'lit(". $=).'rintln(">ata 9ulia8 : " < elemen@$A).trim()).'rintln(". 6 . =).Database Lanjut dengan I$% D$) Memba a dari teks file alah satu !lass yang dapat digunakan untuk pengolahan file karakter adalah -lass (ile'eader. 3 inFile. dapat menggunakan metoda split89.'rintln(". System.trim()). System.ilai : " < s.

0lus8(). $uatlah sebuah folder pada dri*e &. 9 9 dan ini merupakan struktur dasar program ja*a. Praktek 1 0.io. Aktifkan 5etbeans ID&. out. dan buatlah sebuah aplikasi .a+e (e1)en*ial2 import ja*a. . akan ditampilkan struktur aplikasi sebagai berikutA dan pada %ain. otomatis akan ditampilkan struktur program sebagai berikutA /a0.a*a Appli!ation.Kom.(ileFriterD Hendra. ).$uffered'eaderD import ja*a. out.ja*a. "roje!t 5ame A e<uential "roje!t Lo!ation A &AG nim anda :tomatis pada proje!t #indo#.immy.Database Lanjut dengan I$% D$) < elemen@%A). dan ketikan program sebagai berikutA /a0.close(). %T. > .a+e (e1)en*ial2 /)-li0 0la(( Main 3 /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 3 EE lakukan pengetikan program anda disini. dengan menggunakan nomor nim Anda. 3 >enutu' 0ile esuatu hal yang perlu diingat didalam pengolahan file adalah. . .io. menutup kembali teks file setelah tidak digunakan lagi.

nama.getLogger8%ain.ArrayListD import ja*a.readLine89D ystem.out.Database Lanjut dengan I$% D$) import ja*a.util.Input tream'eaderD import ja*a.logging. nilaiR9D R else O tulisData89D R R #hile 8QP<uitP. &S&'&.readLine89D list.LoggerD /)-li0 0la(( Main 3 stati! ArrayList J tringKLM list N ne# ArrayList J tringKLM89D /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 O try O Input tream'eader !on*erter N ne# Input tream'eader8 ystem. > .get5ame899. true9D "rintFriter out N ne# "rintFriter8out(ile9D Hendra.toLo#er-ase8999 O ystem.out.e<uals8nim.println8P%asukan namaAP9D tring nama N in.in9D $uffered'eader in N ne# $uffered'eader8!on*erter9D tring nimD do O ystem.readLine89D if 8QP<uitP.out.out. .!lass.e<uals8nim.util."rintFriterD import ja*a. 2 .io.logging. %T.Le*elD import ja*a.println8P%asukan nimAP9D nim N in.immy. matakuliah.println8P%asukan matakuliahAP9D tring matakuliah N in.readLine89D ystem.log8Le*el.println8P%asukan nilaiAP9D tring nilai N in.t=tP.println8PKetik <uit untuk selesaiP9D ystem. e=9D R 9 /ri4a*e (*a*i0 in* *)li(Da*a58 O (ileFriter out(ileD try O EE!reate or append to eof out(ile N ne# (ileFriter8P!AGGsis#a. null.Kom.util.add8ne# tringKLOnim.out.io.io.I:&=!eptionD import ja*a.toLo#er-ase8999D R !at!h 8I:&=!eption e=9 O Logger.

trim899D ystem.out.print ta!kTra!e89D R return /D 9 9 1. dataK/L.out.format8my(ormat.a+e (e1)en*ialread2 import ja*a.t=t.substring84/.println8P%ata kuliah A P T s.$uffered'eaderD import ja*a.(ile'eaderD import ja*a.Kom.io.println8P5im A P T s. )79.out. /a0.println8P5ilai A P T s.println8 tring. 79.flush89D out.substring8/. 409.readLine899 QN null9 O ystem.trim899D ystem.!lose89D R !at!h 8I:&=!eption e9 O Hendra.io. . > .!lose89D R !at!h 8I:&=!eption e9 O EE T:D: Auto+generated !at!h blo!k e.immy.io. 7 .I:&=!eptionD /)-li0 0la(( Main 3 /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 3 (ile'eader in(ileD try O EEopen e=isting file in(ile N ne# (ile'eader8P!AGGsis#a.dataK)L.out.trim899D ystem.dataK0L.Database Lanjut dengan I$% D$) tring my(ormat N PH0I+0/sH)I+)/sH1I+)/sH3I+0sPD for8 tringKL data A list9 O out.trim899D R in(ile.t=tP9D $uffered'eader br N ne# $uffered'eader8in(ile9D tring sD #hile 88s N br.println8P5ama A P T s. 379.dataK1L99D R out. %T. $uatlah proje!t baru dengan nama e<uential'ead yang men!etak kembali masing+masing data dari -AGsis#a.substring81/.substring80/.

Kom.immy. %T. 0/ . $uatlah program e<uential-s*.print ta!kTra!e89D R 9 9 3. > .Database Lanjut dengan I$% D$) EE T:D: Auto+generated !at!h blo!k e. dan e<uential'ead-s* untuk pembuatan te=t file dengan pemisah data menggunakan titik !omma 8D9 Hendra. .

urusan I I I I Telepon + + + + Urutan re!ord pada tabel se!ara fisik adalah tidak berpengaruh. 00 . dimana pengetahuan struktur merupakan hal yang penting untuk mendapatkan data. 3.a 5im 00/0/)//0 00/0/)//) 00/0/)//1 00/0/)//3 5ama Hendra usan ukiman .e!. Aturan garansi akses. 0. data yang tidak ada harus dapat dibedakan dengan nilai tertentu seperti nol dan string kosong. data dapat hanya direpresentasikan dengan satu !ara. Thamrin . sebuah nama kolom. tentu hal ini berbeda dengan model hierarki maupun net#ork. dan sebuah baris.l. dan setiap re!ord dalam tabel memiliki identitas berdasarkan suatu field yang memiliki nilai uni<ue yang biasanya merupakan -andidate key) 8se!ara praktis 'D$% dideklarasikan sebagai primary key9.l. Aturan informasi. dan tidak ada proper subset untuk atribut tersebut.Database Lanjut dengan I$% D$) Bab !. -atalog relasi online. Hendra. ). yaitu pemakai tidak perlu tahu lokasi fisik dari suatu re!ord sebagai usaha untuk mengambil data tersebut. %T. %angkubumi . 'en!ong . Model Database "elational Database relasional menyimpan data dalam bentuk dua dimensi yang terlihat oleh pemakai sebagai koleksi dari relasi+relasi 8tabel+tabel9. Maha(i(. Ide -odd bah#a database harus memenuhi semua dari duabelas kriteria diba#ah ini untuk dikatakan sebagai relasional. > . . dan untuk berjuang agar modelnya tidak menjadi kabur. ebagaimana model relasional semakin popular.immy.l. "ananganan yang sistematis terhadap null. Ada dua karakteristik dari database relational yang memperbolehkan keberadaan data tidak tergantung kepada bagaimana penyimpanannya se!ara fisik dikomputer. 1. -odd memformulasikan 0) aturan yang merupakan kriteria untuk a!uan apakah suatu produk database adalah relasional. pemakai yang terotorisasi harus dapat mengakses kepada ) "ada model relational suatu !andidate key adalah minimal superkey untuk relasi tersebut yang merupakann himpunan atribut tersebut tidak ada dua tuple yang memiliki superkey yang sama. $atu . setiap nilai didalam suatu database harus dapat diakses dengan menspesifikasikan sebuah nama tabel. sebagai nilai+nilai didalam posisi kolom pada baris tertentu dari suatu tabel.immy Alamat .l. $aris tersebut dispesifikasikan oleh nilai dari /ri ar! . %asing+masing relasi terbuat dari tuple+tuple atau re!ord+re!ord dan atribut+atribut atau field+field 8untuk selanjutnya kita akan menggunakan istilah tabel. re!ord dan field yang digunakan se!ara luas9.Kom. dan banyak *endor database yang mengiklankan bah#a produk mereka merupakan $D$% .

penambahan suatu kolom baru pada suatu tabel tidak akan menghentikan suatu aplikasi yang mengakses kepada baris semula. 7.immy. hal tersebut harus tidak memungkinkan untuk digunakan mele#ati relational security ataupun integrity constraint. atau menyatakan sebagai 'D$% . distribusi dari bagian database ke berbagai lokasi tidak mengubah fungsi dari aplikasi. aat ini adalah suatu bahasa yaitu .Database Lanjut dengan I$% D$) struktur database 8katalognya9 dengan menggunakan bahasa pertanyaan yang mereka gunakan untuk mengakses kepada data di database. $ebas integritas. Tidak tergantung se!ara logika. 2. . Aturan update pada *ie#. dan tidak ada masalah terhadap penambahan kemampuan yang dapat didukung oleh sistem. semua *ie# yang mana se!ara teoritis dapat diupdate harus dapat diupdate oleh sistem. . 6. maka sistim tersebut harus mampu mengatur database se!ara keseluruhan dengan kemampuan relasional. ebagai !ontoh. integritas dari konstrain harus dinyatakan se!ara terpisah dari program aplikasi dan tersimpan didalam katalog. Untuk membuat database dengan nama Akademik dan menyimpan ke dri*e D. update. Aturan sub bahasa yang komprehensif. anda dapat menggunakan perintah sebagai berikut iniA db) !reate database akademik on dA Hendra.L. > . perubahan kepada bagaimana data disimpan haruslah tidak memberi pengaruh kepada aplikasi. 00. Pembuatan Database dengan DB! "embuatan database pada D$) uni*ersal database dapat menggunakan D$) -ommand Findo# yang dapat diaktifkan dengan perintah db)!md. Aturan nonsub*ersion. dan fungsi kendali data 8D-L9. %T. Tidak tergantung se!ara data fisik. dan delete. selanjutnya anda dapat menggunakan perintah db)start untuk mengaktifkan ser*i!e D$). sistem harus mendukung minimal satu bahasa relasional yang mana dapat digunakan bersamaan se!ara interaktif dan didalam program aplikasi. istem harus mendukung suatu himpunan pada satu operasi insert. 4. dan perintah db)stop untuk mematikan ser*i!e.. -odd menambah satu aturan tambahan yaituA untuk semua sistem yang mengiklankan sebagai. elain duabelas aturan tersebut diatas. 0/. perubahan pada tabel+tabel tidak harus mempengaruhi aplikasi. Hal ini berarti bah#a sistem harus mampu melakukan insertion. manipulasi data 8D%L9. pada tahun 077/. 0) . jika sistem menyediakan suatu interfa!e satu re!ord pada satu saat 8fasilitas fasiltias akses langsung ke tabel seperti bulk load data9. 0).Kom. yang mana mendukung definisi data 8DDL9. dan delete pada banyak baris didalam satu operasi. update. $ebas distribusi.

Database Lanjut dengan I$% D$) Kemudian untuk mengaktifkan database yang telah dibuat dapat menggunakan perintahA db) !onne!t to akademik :bjek+objek database pada db) akan dikelompokan pada suatu s!hema. 01 . 1. nama *ar!har80//9. alamat *ar!har8)//9. 4. Salues -urrent !hema. %T. . digunakan untuk menampilkan tabel atau *ie# yang ada pada s!hema tertentu. digunakan untuk menampilkan struktur dari suatu tabel se!ara detail alah satu praktek yang baik didalam pemakaian database adalah melakukan ba!kup data. dengan !ontoh sebagai berikutA db) ba!kup database akademik to eAG7)/3/1/)3 $erikut ini adalah image hasil ba!kup perintah tersebut diatasA Hendra.immy. telepon *ar!har8)/99 $erikut ini adalah beberapa perintah yang dapat digunakan untuk menampilkan objek pada db).e!. 6. List Tables. se!ara sederhana anda dapat melakukan ba!kup data dengan perintah ?ba!kup database Jdatabase aliasM to JpathM@. untuk menampilkan tabel atau *ie# yang ada pada s!hema yang sedang aktif. > . 3. untuk menampilkan daftar database yang ada pada sistem. digunakan untuk menampilkan struktur dari suatu table. untuk menampilkan s!hema yang sedang aktif. Des!ribe Table nama+tabel. 0. dan se!ara default s!hema yang digunakan adalah nama dari pemakai yang aktif. jurusan *ar!har80/9. Des!ribe Table nama+tabel Detail. untuk pembuatan s!hema baru dapat menggunakan perintah berikut iniA db) !reate s!hemaNnobody dan s!hema yang sudah tersedia dapat diaktifkan dengan perintah berikut iniA db) set s!hemaNnobody Untuk pembuatan tabel dapat menggunakan perintah data definition language 8DDL9 sebagai berikutA db) !reate table mahasis#a 8nim *ar!har80)9 n"* n)ll /ri ar! . List Tables for !hemaNnama+s!hema. ). List Database Dire!tory.Kom.

dan pilih Add jarEfolder. maka dapat menggunakan db)j!!. maka perlu ditambahkan db)j!!3.for5ame8P!om.3. anda dapat menggunakan perintah ?restore database Jdatabase aliasM from JpathM taken at JtimestampM to Jdri*eM@.'2< adalah timestamp ba!kup file.DK yang digunakan.'2<.5:D&////.2&''&:&''.jar9 kedalam proje!t anda.DK anda tidak mendukung. dan jika suatu saat hasil ba!kup perlu direstore kembali. dan kemudian bro#sing ke folder dimana jar file berada. pada saat restore anda perlu menyebutkan timestamp dari image ba!kup yang akan direstore dengan !ontoh berikut iniA db) restore database akademik from eAG7)/3/1/)3 taken at )/00/3/00440)1 "erintah untuk memutuskan koneksi dari database dapat menggunakan perintahA db) dis!onne!t all #oneksi ke DB dengan JDB$ . dan membuka koneksi dengan menggunakan url yang dispesifikasikan pada dri*er type 3 yaituA jdbc:db2://<servername>:<port number>/<database name>. Untuk melakukan koneksi ke database tertentu.D$)Dri*erP9D yang merupakan dri*er type 3. .jar yang merupakan dri*er untuk .merupakan A"I yang terdefinisi pada paket ja*a. "emakaian tipe dri*er tergantung kepada *ersi ../ 8jika . Me -).immy.db). file+file tersebut diatas dapat diperoleh dari lokasi instalasi D$) yaitu Hdb)pathHs<llibGja*a.a*a. %T.D$.s<l dan ja*a=.-AT5////. Untuk menambah file+file jar tersebut. 03 .D$).Database Lanjut dengan I$% D$) AKAD&%IK.j!!. .D$././/0 dimana 2&''&:&''.ika proses ini berhasil dilakukan maka pada node Libraries akan tampil sebagai berikutA elanjutnya untuk membuka koneksi ke database dapat menggunakan perintahA Hendra. gunakan klik kanan pada node Libraries. anda perlu memuat dri*er untuk database bersangkutan dengan metode -lass. > .Kom..ibm.a da*a-a(e Untuk dapat menggunakan dri*er koneksi ke D$). pilih file+file tersebut dan klik pada open.s<l untuk koneksi pada database tertentu melalui program .

%T.get-onne!tion8Pjdb!Adb)AEElo!alhostA4////EakademikP.immy.db).D$)Dri*erP9D !on N Dri*er%anager. pass#ord9D dan untuk menutup koneksi dapat menggunakan perintahA !on.for5ame8P!om.ibm. dengan setup !ommuni!ation pada instan!e D$). 04 . .j!!. dan tentukan nomor port 8se!ara default adalah 4////9 Hendra. untuk setting nomor port dapat dilakukan pada db)!! 8!ontrol !enter9. Kemudian klik pada "roperties8)9.Database Lanjut dengan I$% D$) -lass.Kom.!lose89D -atatanA nomor port dapat saja berbeda. username. > .

Aktifkan db)!md.L&=!eption e=9 O Logger.getLogger8%yD$:penHelper.!lass.log8Le*el.!lass. null.ibm. %T. e=9D R 9 /)-li0 (*a*i0 ="nne0*i"n +e*="nne0*i"n58 3 return !onD 9 9 (atihan 0."rd8 3 boolean berhasil N falseD try O -lass. /)-li0 0la(( M!DBO/enHel/er 3 pri*ate stati! -onne!tion !onD /)-li0 (*a*i0 -""lean -). > .Kom.immy. ). e=9D R !at!h 8-lass5ot(ound&=!eption e9 O e.L&=!eption e=9 O Logger.getLogger8%yD$:penHelper.Database Lanjut dengan I$% D$) Membuat stati lass M%Db&pen'elper Anda dapat membuat sebuah stati! !lass yang melakukan pembukaan database yang nantinya dapat digunakan oleh seluruh !lass pada daur hidup aplikasi anda. username. . pass#ord9D berhasil N trueD R !at!h 8 . &S&'&.get5ame899 .!lose89D R !at!h 8 .aDa*a-a(e5S*rin+ )(erna e.print ta!kTra!e89D R return berhasilD 9 /)-li0 (*a*i0 4"id 0l"(e="nne0*i"n58 3 try O !on. null.D$)Dri*erP9D !on N Dri*er%anager. S*rin+ /a((.log8Le*el. $uatlah sebuah database akademik Hendra.j!!.for5ame8P!om.get-onne!tion8Pjdb!Adb)AEElo!alhostA4////EakademikP.get5ame899 . &S&'&. 06 .db).

Tampilkan kembali semua database yang ada pada sistim anda. Lakukan restore kembali database anda.out. 7. > .out.Ppass#ordP99 O ystem. dan pengambilan koneksi. . 0). 3. dan buatlah !lass %yD$:penHelper yang berisi metode stati! untuk pembukaan koneksi.a+e . $uatlah perintah yang dapat menunjukan struktur dari tabel mahasis#a. 4. . Aktifkan database akademik $uatlah sebuah s!hema nobody Aktifkan s!hema nobody $uatlah sebuah tabel mahasis#a dengan struktur sebagai berikutA nim *ar!har80)9 nama *ar!har80//9 alamat *ar!har8)//9 jurusan *ar!har80/9 telepon *ar!har8)/9 Dalam hal ini nim adalah primary key.Kom. 03.bukaDatabase8Pdb)adminP. 6. 0/. .(id-2 /)-li0 0la(( Main 3 /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 3 if 8%yD$:penHelper. $uatlah suatu aplikasi KoneksiD$. penutupan koneksi. /a0.immy. Ujilah !lass tersebut dengan melakukan modifikasi pada metode main aplikasi anda.Database Lanjut dengan I$% D$) 1. %T. $uatlah perintah yang dapat menampilkan database yang ada pada sistim anda."ne. Lakukan ba!kup terhadap database akademik dengan target folder nim anda.println8PCagal buka databaseP9D R 9 9 Hendra. Hapus database akademik dengan perintah ?db) drop database akademik@ 00. 0.. 01.println8P$erhasil buka databaseP9D R else O ystem. 2.

iklus hidup database 8 umberA Toby . peran!angan se!ara fisik. Teorey. %T. S. e!ara umum tahapan ini dapat dibagi menjadi tahapan analisa kebutuhan. peran!angan se!ara logika. dan implementasi "ada masing+masing tahapan membutuhkan berbagai alat pemodelan untuk membuat proses menjadi sistematis dan terdokumentasi dengan baik. Tom 5adeau. )/009 Hendra. Cambar ).. Siklus hidup database ebagaimana siklus hidup dari sistim. . H.immy.Database Lanjut dengan I$% D$) Bab ). > .agadish . 02 .Kom. . pemanfaatan database pada organisasi juga melalui berbagai tahapan proses mulai dari analisa kebutuhan sampai kepada pemanfaatannya. Lightstone. am .

dan pada saat yang lain kita perlu meran!ang ulang dengan membuat model dan struktur baru.Kom. hubungan data se!ara alamiah. Peran angan se ara fisik "ada peran!angan logika. pembuatan indeks untuk *)nin+ . dan kaitan diantaranya melalui beberapa proses iterasi. dalam hal ini berarti kadang+kadang kita perlu membuat struktur fisik. "ada peran!angan fisik lebih terfokus pada proses optimisasi perfoman!e melalui proses den"r ali(a(i untuk mendapatkan akses yang lebih !epat dengan menghindari data join yang merupakan konsekuensi mengutamakan ke!epatan dari pada menjaga integritas. maka tahapan pemodelan ini semakin penting. dikembangkan dengan menggunakan entity+relationship 8&'9 diagram maupun unified+ modeling+language 8U%L9. menggunakan prinsip perataan 8Hohmann 077. dan struktur penyimpanan. "roses bertumbuh diperlukan untuk menghasilkan database yang dapat digunakan. > . *nalisa kebutuhan Database dimulai dari pemakai dan kebutuhan mereka. . sedangkan proses berulang bertujuan menyempurnakan maupun memenuhi perubahan spesifikasi kebutuhan terkait dengan perkembangan organisasi maupun perubahan lingkungan. %T. $erbagai *arian dari &' dapat digunakan untuk pemodelan 8Teorey 07779. tetapi merupakan proses berulang 8iteratif9 dan bertumbuh 8in!remental9. dan platform soft#are untuk database. "eran!angan fisik umumnya terdiri dari pembuatan lokasi akses. kita terfokus pada entitas. sama seperti semua peran!angan sistim. Peran angan se ara logika Tahapan a#al dari peran!angan logika adalah pemodelan.Database Lanjut dengan I$% D$) "eran!angan database tidak sifatnya linier atau sekali jalan. emakin luasnya !akupan permasalahan. "erataan adalah sama seperti air yang men!ari perataannya ketika gelas atau botol digerakan. pada tahapan ini biasanya dilakukan pengumpulan informasi a#al melalui inter*ie# baik penghasil data maupun pemakai dari data dan informasi untuk mendapatkan suatu spesifikasi kebutuhan. Abstraksi pada model menyembunyikan kompleksitas dari sistem sehingga pengembang dapat fokus kepada tujuan sistem dan batasannya yang telah disepakati. Hal ini merupakan penghubung antara kebutuhan pemakai dengan solusi soft#are yang akan dita#arkan."eran!angan database. Hendra. 07 . dimaka berfokus pada entitas dan hubungan antara mereka.immy. spesifikasi tersebut meliputi data yang diperlukan untuk proses. dimana bisa saja data timbul lebih dari satu tempat didalam database 8redundan!y9. yang merupakan suatu skema se!ara global yang menunjukan semua data dan keterkaitan antara mereka.iner>a. Ketika situasi berubah.9. anda perlu bergerak untuk menyesuaikan kebutuhan pada saat tersebut.

L dikembangkan oleh Don -hamberlin dan 'ay $oy!e dari I$% pada tahun )7./ sebagai bagian dari proyek ystem 'A yang merupakan suatu proyek yang dikembangkan untuk menyediakan implementasi praktis dari model relational -odd. Hendra. )/ . ).L diterima sebagai bahasa standard untuk database relational. et !hemaNnama+s!hema. !atalog. D$% bertanggung ja#ab untuk mengatur semua upaya untuk mendapatkan informasi tersebut.L9 merupakan bahasa tingkat tinggi yang memperbolehkan pemakai untuk melakukan manipulasi pada database relational. Pembuatan S hema !hema merupakan pengelompokan se!ara logika dari objek database. suatu database dapat terdiri dari beberapa s!hema dari pemakai maupun aplikasi yang berbeda. menampilan s!hema yang sedang aktif.uery Language 8 . sehingga siklus hidup database merupakan siklus perulangan dan pertumbuhan yang berkembang untuk memenuhi kebutuhan pemakai. -reate !hema nama+s!hema. Data Definition Language (DDL) DDL adalah singkatan dari Data Definition Language adalah bagian dari . suatu s!hema biasanya dimiliki oleh seorang pemakai atau aplikasi. .( tru!tured .LA)//2. List table for s!hema nama+s!hema. Salues -urrent !hema.Kom.L yang yang digunakan untuk melakukan definisi terhadap objek database. alah satu keunggulan dari .L adalah pemakai hanya perlu menspesifikasikan informatsi yang mereka butuhkan tanpa mengetahui bagaimana mereka akan menerimanya. Mengenal S.Database Lanjut dengan I$% D$) +mplementasi "ekerjaan peran!angan tidak selesai begitu saja pada tahapan implementasi. %T. 1. manampilan tabel+tabel yang terorganisasi pada s!hema tertentu.. 3. se!ara default s!hema yang aktif adalah sesuai dengan username dari pemakai yang sedang aktif. mengaktifkan ke s!hema yang disebutkan. Dalam hal ini objek adalah s!hema. table. . *ie#.immy. beberapa perintah terkait dengan pengelolaan s!hema adalah sebagai berikutA 0.L telah diupdate enam kali. dan update yang terakhir adalah pada tahun )//2 yang dikenal seabagai . inde= dan alias. standard . De#asa ini .L diadopsi menjadi bahasa standard pada tahun 0726 oleh A5 I dan oleh I : pada tahun 072. ejak standarisasi. se<uen!e. membuat sebuah s!hema. . tetapi membutuhkan pera#atan dan perubahan untuk merespon perkembangan kebutuhan organisasi maupun perubahan lingkungan terkait dengan tuntutan konsumen maupun perubahan peraturan pemerintah. > .

. maka dimungkinkan untuk ditambah maupun dihapus kolom+kolom yang ada. keterangan *ar!har84/9.r( add !olumn (e e(*er integer Hendra. sks integer default 39 0rea*e *a-le . )0 . id integer NOT NULL GENE$ATED AL?A@S AS IDENTIT@. > . untuk pembuatan table digunakan perintah -'&AT& TA$L&.nama+ table9. maka dimungkinkan untuk dihapus. semester integer not null. -ontohA drop table . .Database Lanjut dengan I$% D$) -able Table merupakan *isualisasi dari data yang diatur se!ara dua dimensi yang terdiri dari baris dan kolom. -ontohA alter table . (e e(*er99 -atatanA "ernyataan generated al#ays as identity akan menghasilkan auto+in!rement field pada kolom id.immy. . primary key8ni . semester integer. maka se!ara default tabel akan ditempatkan diba#ah s!hema pemakai yang menjalankan perintah !reate table tersebut.r( 8nim *ar!har80)9 not null.)liah 8kmk *ar!har869 not null primary key..r( Menambah dan menghapus column etelah suatu tabel dibentuk.Kom. Menghapus table etelah suatu tabel dibentuk. kmk *ar!har869 not null.r( drop !olumn (e e(*er alter table . -ontohA !reate table a*a.ika tidak ditentukan s!hema sebelumnya 8set s!hemaNnama+s!hema atau s!hema. %T. .

Database Lanjut dengan I$% D$)

Mengubah definisi olumn tertentu
etelah suatu tabel dibentuk, maka dimungkinkan untuk perubahan pada !olumn tertentu -ontohA alter table alter table alter table alter table alter table a*a,)liah alter !olumn (,( set default ) a*a,)liah alter !olumn (e e(*er set not null a*a,)liah alter !olumn (e e(*er drop not null a*a,)liah alter !olumn ,e*eran+an set data type varchar(100) a*a,)liah rename !olumn , , to ,"de ,

Menambah dan menghilangkan constraint
Dalam beberapa kasus tertentu, kolom+kolom tertentu membutuhkan batasan tertentu untuk memenuhi aturan bisnis tertentu, adapun jenis !onstraint yang tersedia pada D$) adalah 5:T 5ULL !onstraint, Uni<ue !onstraint, "rimary key !onstraint, (oreign key !onstraint, -he!k !onstraint. -ontohA alter table aha(i(.a add !onstraint /,A aha(i(.a primary key8nim9 "erintah tersebut diatas berfungsi menambah sebuah primary key dengan field nim pada tabel mahasis#a . -ontohA alter table aha(i(.a add !onstraint )ni,,*/ uni<ue 8noktp9 "erintah tersebut diatas akan menentukan kolom noktp menjadi unik -ontohA alter table a*a,)liah add !onstraint -a*a(A(e e(*er !he!k8semester > 0 and umur < 109 alter table ,r( add !onstraint -a*a(A(e e(*erA,r( !he!k8semester > 0 and umur < 199 alter table aha(i(.a add !onstraint -a*a(,ela in !he!k 8jkelamin in ('P',' ')9 "erintah tersebut diatas akan menambahkan !onstraint !he!k dengan kriteria tertentu.

Hendra, %T. > ,immy, .Kom.

))

Database Lanjut dengan I$% D$) -ontohA alter table (i(.a,) drop !onstraint -a*a() )r "erintah tersebut diatas akan menghapus !onstraint dengan nama batasumur

S,( statement &b.e t pada Java
uatu obje!t tatement digunakan untuk menjalankan perintah ;L seperti untuk pembuatan objek database berupa re!ord baru, table dan *ie#, se!ara sederhana anda dapat membuat suatu objek tatement dan menjalankannya dengan metode e=e!uteUpdate 8Insert, Update, Delete9 ataupun e=e!ute;uery 8 ele!t9 beserta perintah ;L yang anda inginkan, se!ara default perintah e=e!uteUpdate adalah AUT: -:%%IT, !ontohA /)-li0 (*a*i0 4"id 0rea*eDa*a-a(eO->e0*58 3 try O tatement stmt&=D stmt&= N !on.!reate tatement89D stmt&=.e=e!uteUpdate8P!reate table mahasis#a P T P8nim *ar!har80)9 not null primary key,P T Pnama *ar!har80//9,P T Palamat *ar!har8)//9,P T Pjurusan *ar!har80/9,P T Ptelepon *ar!har8)/99P9D R !at!h 8 ;L&=!eption e=9 O
Logger.getLogger8%yD$:penHelper.!lass.get5ame899.log8Le*el. &S&'&, null, e=9D

R 9

Bat h /pdate
,ika perintah update yang ingin dijalankan banyak, anda dapat menggunakan bat!hUpdate, !ontohA try O tatement stmt&=D stmt&= N !on.!reate tatement89D !on.setAuto-ommit8false9D
(* *EB.addBa*0h8Pinsert into relasi 8koderelasi, nama, alamat, hubungi, telepon9 P T P*alues 8Us//0U,U===U,UU,UU,UU9P9D (* *EB.addBa*0h8Pinsert into relasi 8koderelasi, nama, alamat, hubungi, telepon9 P T P*alues 8U!//0U,U===U,UU,UU,UU9P9D

Hendra, %T. > ,immy, .Kom.

)1

Database Lanjut dengan I$% D$) in*67 re()l* C (* *EB.eBe0)*eBa*0h582 !on.!ommit89D R !at!h 8 ;L&=!eption e=9 O
Logger.getLogger8%yD$:penHelper.!lass.get5ame899.log8Le*el. &S&'&, null, e=9D

R

(atihan
0. ). 1. 3. Tampilkan database yang ada di sistem, dan hapus semua database tersebut $uatlah database akademik yang se!ara fisik disimpan di dri*e DA $uatlah masing+masing tabel mahasis#a, matakuliah, dan krs. $uatlah !he!k !onstraint untuk semester pada matakuliah dalam batasan 0 sEd 7 semester dan krs dalam batasan 0 sEd 02 semester. 4. Aktifkan kembali proje!t KoneksiD$ pada bagian sebelumnya, dan tambahkan metode !reateDatabase:bje!t pada !lass %yD$:penHelper, dan kemudian jalankan metode !reateDatabase:bje!t pada metoda main. 6. Tambahkan kemampuan pada metode !reateDatabase:bje!t dengan pembuatan tabel %atakuliah, dan Krs, serta !he!k !onstraint pada soal no. 3.

Hendra, %T. > ,immy, .Kom.

)3

%A5 K0 K) K1 K3 . Ujian. %asing+masing entitas digambarkan sebagai persegi panjang. %T. dan atribut.urusan %ahasis#a Kelas Absensi 'uang Ujian 'ubungan Hubungan merepresentasikan asosiasi dunia nyata antara entitas yang satu dengan yang yang lain 8%ahasis#a e ilih jurusan.... Hubungan dinyatakan dalam istilah dari tingkatan. Dosen %atakuliah . ataupun sesuatu. Hubungan ini digambarkan sebagai suatu bentuk ketupat. Entitas &ntitas adalah objek data dimana informasi diambil. &'+Diagram a#alnya diusulkan oleh "eter -hen pada tahun 07. "ada dasarnya pemodelan &' menggunakan tiga jenis objek yaitu entitas.i IjaVah9. 0A0 0 ) 1 3 . konekti*itas. se!ara notasi matematika hubungan tersebut dapat digambarkan sebagai berikutA %ahasis#a %0 %) %1 %3 .. )4 .Database Lanjut dengan I$% D$) Bab 0. hubungan. Kelas.. mereka biasanya berupa orang. -ardinalitas mereferensikan jumlah maksimal dari suatu instant didalam suatu entitas dapat berasosiasi dengan instant lainnya pada entitas yang berhubungan. %0 %) %1 %3 . dan many+to+many. maupun kejadian dari sumber informasi seperti %ahasis#a.. %A0 1 .6.urusan %ahasis#a %atakuliah %ahasis#a IjaVah I TI %0 %) %1 %3 . E"1Diagram &ntity+'elationship Diagram merupakan salah satu alat pemodelan database yang banyak digunakan untuk memodelkan data pada tahapan analisa kebutuhan dan peran!angan logika serta dokumentasi. . Hubungan antara entitas dapat berupa !ardinalitas1 one+to+one. tempat. dan keberadaan. Dosen.. Absensi.Kom. %ahasis#a e ili. %ahasis#a en+a -il %atakuliah. > . Hendra. one+to+many.immy.. %atakuliah...

jurusan. nim nama alamat Asal smu %ahasis#a Hendra. Atribut key digambarkan dengan garis ba#ah pada &'+Diagram.urusan %ahasis#a 0 %emilki 0 IjaVah *tribut Atribut adalah karakteristik dari entitas yang menyediakan keterangan detail tentang mereka. sebagai !ontoh indentifier atau key dari mahasis#a adalah nim.Database Lanjut dengan I$% D$) e!ara notasi -hen dapat digambarkan sebagai berikutA % %ahasis#a memilih 0 . asal smu. dst. elanjutnya atribut lainnya adalah deskriptor 8bukan key9 digunakan untuk menspesifikasikan karakteristik tidak uni<ue dari keberadaan entitas tertentu. sebagai !ontoh nama.Kom. alamat. . )6 . Atribut dari seorang manhasis#a dapat terdiri dari nim. nama orangtua. telepon. nama orang tua. > .immy. telepon.urusan %ahasis#a % %engambil 5 . asal smu. %T. dst. Ada dua jenis atribut yaitu indentifier 8atau key9 yang digunakan se!ara unik untuk menentukan keberadaan dari suatu entitas. sehingga tidak ada duplikasi dari nim pada himpunan mahasis#a. nama. alamat. masing+masing mahasis#a memiliki nim yang berbeda.

.D( %""* N"*a(i =hen Hendra.Kom. . > .immy.Database Lanjut dengan I$% D$) Berapa notasi E" N"*a(i =r". %T. ).

. 3 %odalitas mereferensikan jumlah minimal dari suatu instant didalam suatu entitas dapat berasosiasi dengan instant lainnya pada entitas yang berhubungan. dan %odalitas dapat berupa 0 atau /. Hendra. %T.Kom. )2 . > .immy. -ardinalitas dapat berupa 0 atau $anyak. dan tidak menunjukan modalitas3 dibandingkan dengan notasi lainnya.Database Lanjut dengan I$% D$) N"*a(i Ba0h an N"*a(i Mar*in "ada notasi -hen hanya menunjukan !ardinalitas.

hal tersebut untuk menjaga nilai dari atribut berada didalam jangkauan yang ditentukan untuk menjadi *alid.)liah add !onstraint -a*a(A(e e(*er !he!k8semester > 0 and umur < 109 alter table .ela in !he!k 8jkelamin in ('P'. dimana untuk menjaga agar masing+masing re!ord didalam tabel adalah memiliki identitas uni<ue dan dalam hal ini adalah "rimary Key dimana tidak memperbolehkan terjadinya nilai duplikat dan bersifat not null. )7 . misalnya pada tabel mahasis#a ter!atat bah#a mahasis#a ini mengambil jurusan TI.Database Lanjut dengan I$% D$) Men. 4ar0har5E8 n"* n)ll /ri ar! . -ontohA alter table a*a. semester integer. . .Kom. integritas data dibagi menjadi empat jenis yaitu domain integrity. integritas referensial diaplikasikan pada relasi. !ontoh untuk jenis kelamin nilai yang *alid adalah W"X atau WFX.)liah 5. sks integer9 In*e+ri*a( $eFeren(ial 'eferential integrity diperlukan untuk menjamin semua nilai atribut 8foreign key9 pada suatu tabel juga ada sebagai satu nilai atribut 8primary key9 pada tabel yang memiliki hubungan.r( !he!k8semester > 0 and umur < 199 alter table aha(i(. keterangan *ar!har84/9. -ontohA !reate table a*a. entity integrity. integritas entitas diaplikasikan pada re!ord. > .immy. Umumnya integritas domain diaplikasikan pada atribut.aga integritas alah satu !iri utama dari sistem database adalah perhatian terhadap integritas data. dan integritas semantik memastikan data se!ara logika pada database.e!.' ')9 In*e+ri*a( En*i*a( Digunakan untuk menjaga konsistensi dari database pada le*el re!ord. !ontoh perintah untuk menspesifikasikan integritas domain. tetapi ternyata Hendra. %T.r( add !onstraint -a*a(A(e e(*erA. ke!uali kalau nilai atribut pada foreign key tersebut adalah null. dan semanti! integrity.a add !onstraint -a*a(. referential integrity. In*e+ri*a( D" ain Digunakan untuk menspesifikasikan untuk masing+masing atribut dengan mendefinisikan suatu jangkauan tertentu.

!he!k !onstraint.A( ) foreign key 8smu9 referen!es ( ) In*e+ri*a( Se an*i.e!.e!. tentu saja data jurusan TI pada tabel mahasis#a adalah tidak konsisten. > . jlhsemester integer9 !reate table smu 8smu *ar!har8)/9 n"* n)ll /ri ar! . namaortu *ar!har80//9. ke!uali kalau jurusan pada tabel mahasis#a diisi sebagai null. -ontohA !reate table mahasis#a 8nim *ar!har80)9 n"* n)ll /ri ar! . jenjang *ar!har80/9. berikut ini beberapa konstraint untuk memaksakan integritas semantik seperti tipe data. kota *ar!har84/9. kepalasekolah *ar!har80//9.immy. karena merujuk kepada sesuatu nilai yang tidak pernah ada. %asing+ Hendra. jurusan *ar!har80/9. alamat *ar!har8)//9.e!. telepon *ar!har8)/9. Membuat inde2 uatu inde= adalah himpunan dari pointer kepada baris+baris pada tabel dasar. telepon *ar!har8)/99 alter table aha(i(.a add !onstraint F. nilai default. emanti! integrity memastikan bah#a data yang dimasukan pada suatu re!ord merefleksikan nilai yang diperbolehkan pada re!ord tersebut. nilai tersebut harus berada dalam domain. 1/ . keterangan *ar!har80//9. smu *ar!har80/99 !reate table jurusan 8jurusan *ar!har80/9 n"* n)ll /ri ar! .Database Lanjut dengan I$% D$) ditabel jurusan tidak terdapat atribut jurusn TI. keterangan *ar!har80//9. alamat *ar!har8)//9. atau himpunan nilai yang diperbolehkan. nama *ar!har80//9. . %T.Kom.A>)r)(an foreign key 8jurusan9 referen!es >)r)(an alter table aha(i(.a add !onstraint F.

3. Ketika suatu inde= dibuat. matakuliah. dimana se!ara DDL mereka disimpan pada tabel yang berbeda pada system !atalog. #alaupun suatu inde= tidak dapat dibuat untuk sebuah *ie#. -ontohA alter table mahasis#a add !olumn kodepos *ar!har849 !reate inde= alamatYid= on mahasis#a8alamat. -atatanA harus dapat dibedakan antara uni<ue !onstraint dengan uni<ue inde=. $uatlah inde= yang memungkinkan akses data yang !epat untuk pembuatan laporan tertentu atau pen!arian berdasarkan kriteria tertentu. semester9 . tetapi gagal pada uni<ue inde= kolom. Definisikan entitas+entitas yang mungkin pada suatu database Akademik. Hendra.e)ni.Kom.. 10 . database manager akan membangun objek tersebut dan se!ara otomatis melakukan maintainan!e terhadapnya. > . uatu tabel dengan suatu inde= unik tidak dapat memiliki baris dengan nilai yang sama pada key tersebut.ika anda memberikan perintah update ==== set kolom N kolom T 0.an.an /erF" an0e. Definisikan atribut+atribut untuk masing+masing entitas dan tentukan mana yang merupakan Atribut key. Definisikan hubungan antara entitas+entitas tersebut dengan menggambarkannya dalam bentuk notasi -hen. maka perintah ini akan berhasil pada uni<ue !onstraint kolom. integritas referensial dan integritas semantik. maka anda dapat menggunakan perintah ?'&:'C TA$L& namaYtable@ untuk menghilangkan reorg pending state setelah pemberian perintah ALT&'.Database Lanjut dengan I$% D$) masing inde= didasarkan pada nilai dari data dalam satu atau lebih kolom pada tabel.a*.immy. Inde= digunakan oleh database manager untukA  Menin+. Dalam banyak kasus. tetapi inde= yang dibuat untuk tabel akan menjadi dasar bagi *ie# untuk meningkatkan perfoman!e operasi terhadap *ie# tersebut  Me a(*i. integritas domain. kemudian se!ara D%L. ). (atihan 0.@. %odifikasi metoda !reateDatabase:bje!t untuk menghasilkan database Akademik seperti ran!angan anda dan team. 4. 6.an .ika anda mendapatkan pesan kesalahan ?:peration not allo#ed for reason !ode ?. . ebagai !ontoh anda memiliki suatu kolom yang berisi nilai 0.@ on table . . %T. tetapi pada uni<ue inde= pemeriksaan dilakukan se!ara baris+per+baris. 1. ). $uatlah perintah .. kodepos9 !reate uni<ue inde= krsYid= on krs8nim.L untuk pembuatan masing+masing entitas dengan memperhatikan integritas entitas. pemeriksaan terhadap uni<ue !onstraint dilakukan pada akhir statement. dan 1. akses kedata menjadi lebih !epat dengan suatu inde=.

%T./I0. AT TABL berikut5 C. 1) . & B& Dia tidak dapat dibuat se!ara ekplisit oleh user& C& Dia harus memiliki atribut .Kom./I0.eferential D& Informational Q3) Mana yang berikut ini benar dari suatu inde. /OT /. . 12 .LL dan dapat direferensikan pada tabel lain sebagai foreign key D( COL# tidak akan menerima nilai /.& D& Dia harus memiliki atribut .yang sama sebagaimana TABL #& 2 akan memiliki referential !onstraints sebagaimana TABL # Q7 3ika )0L statements berikut ini dieksekusi5 Hendra.ui3 Q1) Manakah yang berikut ini yang akan menjadi konsekuensi dari mendefinisikan kolom IDCOL2 pada TAB L2 sebagai foreign key yang menga!u pada primary key "IDCOL#$ pada TAB L#% A& DB2 tidak akan pernah lagi memperbolehkan update nilai pada IDCOL# pada TABL # B& 'etika penyisipan suatu baris pada TAB L2( hanya nilai yang diperbolehkan untuk IDCOL2 adalah yang terdapat nilainya pada IDCOL# C& 'etika penyisipan suatu baris pada TAB L2( hanya nilai diperbolehkan untuk IDCOL2 adalah yang tidak terdapat nilainya pada IDCOL# D& 'etika suatu perintah ) L CT join TAB L# dengan TAB L2( DB2 akan se!ara otomatis menambahkan kondisi TABL #&IDCOL#*TABL 2&IDCOL2 jika tidak dituliskan didalam perintah tersebut& Q2) !onstraint apa yang dapat diberikan untuk memastikan bah+a( setiap baris yang dimasukan kedalam dalam suatu tabel( sehingga nilai pada suatu kolom tidak dapat melebihi nilai pada kolom lain% A& Che!k B& .LL dan dapat direferensi pada tabel lain sebagai spesifikasi bagi foreign key& B& COL# tidak akan menerima nilai /. AT TABL table2 LI' table# Dua hal diba+ah ini tidak akan terjadi ketika perintah tersebut dijalankan% A& TABL B& TABL C& TABL D& TABL & TABL 2 akan memiliki nama kolom dan tipe data sama sebagaimana TABL # 2 akan memiliki kolom default sebagaimana TABL # 2 akan memiliki karakteristik nullability sebagaimana TABL # 2 akan memiliki inde.LL Q4) 3ika suatu constraint unique didefinisikan pada kolom COL# pada tabel TAB#( apa yang menjadi karakteristik dari COL#% A& COL# akan menerima nilai /.LL dan tidak dapat direferensikan pada tabel lain sebagai foreign key& C& COL# tidak akan menerima nilai /. % A& Dia harus memiliki atribut . > .LL Q6) 4emberian perintah C./I0. dan CL.)T .menggunakan dukungan dari suatu !onstraint ./I0.ange C& .Database Lanjut dengan I$% D$) .LL dan tidak dapat direferensikan pada tabel lain sebagai foreign key Q5) Dua diantara ini yang bersifat optional pada saat penbuatan tabel% A& /ama tabel B& /ama kolom C& Default !onstraint D& Tipe data Column & !onstraint /OT /.immy.

. AT TABL tab2 "empid )MALLI/T( +eekno )MALLI/T( payamt D CIMAL":(2$( CO/)T.4DAT /O ACTIO/$9 4ernyataan berikut ini yang benar adalah% A& 2anya nilai yang terdapat pada kolom ID pada TAB# yang diperbolehkan untuk disisipkan pada kolom empid pada tabel TAB2 B& .T M / Q12) Berikut ini yang tidak dapat digunakan untuk membatasi nilai tertentu yang akan disisipkanpada Hendra.O.'D 4T ke kolom D 4T/O pada tabel D 4A.Database Lanjut dengan I$% D$) C.pdate terhadap nilai pada kolom ID ditabel TAB# tidak diperbolehkan C& 2anya nilai yang tidak terdapat pada kolom ID ditabel TAB# yang diperbolehkan disisipkan pada kolom M4ID pada tabel TAB2 D& 'etika nilai yang telah ada dikolom ID pada tabel TAB# diupdate( nilai yang bersesuaian pada kolom M4ID di tabel TAB2 juga akan diupdate Q8) Mana dari skenario berikut ini yang akan memastikan bah+a nilai pada kolom / =T>)T 4/O pada baris di tabel TABL = nilainya ada pada kolom )T 4/O "biasanya pada baris lain$ ditabel yang sama% A& Mendefinisikan !onstraint .LL 4.ni?ue B& Che!k C& .eferential D& Informational Q11) 3enis !onstraint apa yang digunakan untuk memastikan bah+a setiap baris yang disisipkan pada tabel M4LO6 dengan suatu nilai pada kolom 1O."28$$9 C. pada suatu kolom hanya akan berisi nilai positif% A& .IMA.BLIC akan digunakan& D& )uatu s!hema memungkinkan untuk pembuatan banyak objek pada suatu database tanpa terhadap bentrokan terhadap namespa!e& Q10) 3enis !onstraint berikut ini yang dapat digunakan untuk memastikan nilai I/T < . .'D 4T C& )uatu referensi foreign key dari tabel D 4A.T M / kolom D 4T/O ke kolom 1O. .immy. %T.Kom.C2A.6 ' 6( name 7A.AI/T !onst# ./I0.'D 4T memiliki baris nilai yang berkoresponden pada kolom D 4T/O pada tabel D 4A.eferensi foreign key tidak dapat keluar dari batasan s!hema& B& )uatu pemakai DB2 harus dibuat terlebih dahulu sebelum suatu s!hema dengan nama yang sama dapat dibuat& C& 3ika tidak ada s!hema yang ditentukan ketika suatu objek dibuat( maka se!ara default s!hema 4. > .T M /% A& )uatu !onstraint !hek pada tabel M4LO6 B& )uatu !onstraint uni?ue pada tabel kolom 1O. pada kolom / =T>)T 4/O dan )T 4/O& B& Mendefinisikan !onstraint C2 C' pada kolom / =T>)T 4/O "/ =T>)T 4/O * )T 4/O$& C& Mendefinisikan kolom )T 4/O sebagai primary key dari tabel TABL = dan kolom / =T>)T 4/O sabagai suatu foreign key yang menga!u pada kolom )T 4/O pada tabel yang sama& D& Mendefinisikan kolom / =T>)T 4/O sebagai primary key pada TABL = dan kolom )T 4/O sebagai suatu foreing key yang menga!u pada kolom / =T>)T 4/O pada tabel yagn sama& Q9) Berikut ini yang mana merupakan karakteristik dari s!hema% A& .'D 4T pada tabel M4LO6 D& )uatu referensi foreign key dari tabel M4LO6 kolom 1O. 11 . I</ ' 6 "empid$ . AT TABL tab# "id )MALLI/T /OT /. /C ) tab#"id$ O/ .

"2A$ )ALA. /AM C2A. I/D = empid>ui O/ employees "empid$ Dimana dua pernyataan berikut ini yang benar% A& Lebih dari satu nilai null diperbolehkan pada kolom M4ID di tabel M4LO6 )& B& /ilai not null diperbolehkan pada kolom M4ID pada tabel M4LO6 )& C& )atu "dan hanya satu$ nilai null yang diperbolehkan pada kolom M4ID pada tabel M4LO6 D& Tidak ada inde.AI/T !st# C2 C' "!ol# in "#( 2( @$$$ Dimana yang berikut ini akan berhasil disisipkan pada tabel TAB#% A& I/) B& I/) C& I/) D& I/) .LL( !ol2 C2A.LL( CO/)T. .6 D CIMAL"#A(2$ 3ika perintah berikut ini dijalankan5 C.T I/TO tab# 7AL.LT( Bab!B$ Q14) 4erhatikan definisi tabel berikut ini5 M4LO6 ) CCCCCCCCCCCCCCCCCCCCCC M4ID I/T < . AT . AT TABL tablea "!ol# I/T < .T I/TO tab# 7AL.T I/TO tab# 7AL.eferential !onstraint D& Default !onstraint Q13) 3ika tabel TAB# dibuat dengan menggunakan perintah berikut5 C. ."8$( CO/)T.immy.LL C& #AA D& B#AAB Q16) <ambar entitasCentitas yang mungkin pada database perpustakaan( gambarkan hubungan yang mungkin( dan definisikan atributCatribut dalam notasi Chen& Q17) Buatlah perintah )0L untuk pembuatan tabel( dan !he!k !onstraint serta referensial integritas& Q18) Buatlah aplikasi jaDa yang dapat membuat database yang dimasuk beserta tabel( referensial integritas yang ada& )& Hendra. /OT /.T I/TO tab# 7AL.uni?ue lainnya yang dapat dibuat pada tabel M4LO6 )& & )etiap nilai yang ditemukan didalam kolom M4ID dari tabel M4LO6 ) akan berbeda& Q15) 4erhatikan perintah berikut5 C. .A.LL( Bab!B$ ) "AB)"2$( Bab!B$ ) "D . /OT /.Database Lanjut dengan I$% D$) kolom di tabel tertentu% A& IndeB& Che!k !onstraint C& . 13 . > ./I0. .AI/T !onst# C2 C' "!ol# in "#AA( 2AA( @AA$$ Berikut ini mana yang dapat disisipkan pada TABL A % A& A B& /. AT TABL tab# "!ol# I/T < . %T. ) "A( Bab!B$ ) "/.Kom.

'en!ong 5o./// 5o. mengurangi kompleksitas.l. normal dua. .9 Tanggal 829 Tgl.l. 4)+ A %edan.. dan mempermudah perbaikan data 8menghilangkan anomali9. Kartu "iutang Kode 'elasi A H//0 5ama A Hendra oe#arno Alamat A . 879 5ilai 80/9 5o. "iutan 8.Tempo 04+jan+00 07+jan+00 5ilai 0//. ./// 0// )4/. "ada proses normalisasi akan dilakukan pengujian pada beberapa kondisi apakah ada anomali pada proses insert. %T. DK0 839 Hubungi Hendra Hendra 849 Telepon /20411001)24 /20411001)24 869 5o.Database Lanjut dengan I$% D$) Bab 4. > . 'en!ong 5o. Tujuan dari normalisasi adalah untuk menghilangkan duplikasi data. memfasilitasi integritas data 8konstraint9.Tempo 8009 Tanggal DK0 80)9 KodeDK 0 8019 Keterangan0 8039 5ilai DK0 Hendra./// "ada tahapan a#al kita akan mentransformasikan kartu piutang tersebut diatas menjadi sebuah tabel flat yang berisi semua informasi tersebut diatas sehingga menjadi sebagai berikut.0// )4/. 'en!ong 5o. dan seterusnya. "roses normalisasi lebih mudah dijelaskan dengan !ontoh dari pada pernyataan apa itu normal satu. . sehingga perlu dipe!ahkan relasi pada tabel tersebut menjadi beberapa tabel baru dan membuat relasi antar tabel tersebut. bila terdapat anomali pada pengujian tersebut berarti ran!angan basis data yang ada belum optimal. . update. oleh karena itu kita akan mulai dari !ontoh terlebih dahulu.immy. 4)+ A %edan. 4)+A %edan Hubungi A Hendra Telepon A /20411001)24 5o. delete. diorganisasikan dan menjaga akurasi data didalam database. DK $//0 $//) $/00 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 Kod eDK 0/0 0/) 0/1 Keterangan "embayaran "otongan tambahan 'etur 5ilai DK 0//. 5ormalisasi 5ormalisasi digunakan oleh peran!ang database untuk meran!ang database sehingga data mudah diatur.l. 809 Kode 'elasi H//0 H//0 8)9 5ama Hendra oe#arno Hendra oe#arno 819 Alamat . "iutang A//0 A//) Tanggal 0+jan+00 4+jan+00 Tgl.Kom. 14 .

dan relasi tersebut belum memiliki Hendra. 'en!ong 5o. tetapi ran!angan tersebut diatas menghadapi masalah insert anomali. update anomali dan delete anomali. sehingga tabel diatas menjadi sebagai berikutA 809 Kode 'elasi H//0 H//0 H//0 8)9 5ama Hendra oe#arno Hendra oe#arno Hendra oe#arno 819 Alamat .l. . .// / )4/.l. 0) dan 06. maka telah memenuhi 05(. olusi agar tabel diatas memenuhi 05( adalah mengeluarkan kelompok data yang berulang menjadi baris baru.ika dilihat tabel tersebut diatas. DK) $//) 8069 Tanggal DK) 06+jan+00 80. 4)+ A %edan./// $//0 $/00 04+jan+00 07+jan+00 0/0 0/0 "embayaran 'etur 0//. . In(er* an" ali Ketika kita menyisipkan relasi baru ke tabel diatas. > .0// )4/. dimana nilai pada masing+ masing kolom bersifat atomi! dan perulangan kelompok telah dihilangkan. 879 5ilai 0//.Kom..9 Tanggal 0+jan+00 0+jan+00 4+jan+00 829 Tgl. atau dengan kata lain adalah tidak ada perulangan kelompok 8repeating group9 data pada kolom yang sama atau berbeda pada tabel yang sama. serta kolom 04 dan 07. .// / 8049 5o. DK $//0 $//) $/00 8009 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 839 Hubungi Hendra Hendra Hendra 849 Telepon /20411001)24 /20411001)24 /20411001)24 869 5o.0// )4/. 4)+ A %edan./// .9 KodeD K) 0/) 8029 Keterangan) "otongan tambahan 8079 5ilai DK) 0// DeFini(i 'N%: uatu tabel dikatakan memenuhi bentuk normal pertama jika dan hanya jika setiap atribut pada tabel tersebut adalah atomi!.immy. kolom 03 dan 02. $erdasarkan tabel tersebut diatas terlihat bah#a ada perulangan kelompok data pada kolom 00 dan 04. 01 dan 0. 'en!ong 5o.Tempo 04+jan+00 04+jan+00 07+jan+00 80)9 KodeD K 0/0 0/) 0/1 8019 Keterangan "embayaran "otongan tambahan 'etur 8039 5ilai DK 0//. 'en!ong 5o.l. %T. 16 ./// 80/9 5o. 4)+ A %edan. "iutang A//0 A//0 A//) 8./// 0// )4/.0// 0//.Database Lanjut dengan I$% D$) g A//0 A//) 0+jan+00 4+jan+00 04+jan+00 07+jan+00 0//.

Dele*e an" ali %isalkan dilakukan penghapusan data pembayaran pada baris ketiga. U/da*e an" ali %isalkan terjadi perubahan telepon pada kode relasi H//0. dalam hal ini berarti bah#a A menentukan $. sedangkan kolom 6. 4)+ A %edan.Database Lanjut dengan I$% D$) piutang. dan 4 adalah memiliki ketergantungan se!ara fungsional terhadap Kode 'elasi. . $ela(i 809 Kode 'elasi 8"K9 H//0 8)9 5ama Hendra oe#arno 819 Alamat . dan 4 berasosiasi tepat pada satu 5o "iutang. maka tabel 'elasi telah memenuhi )5(. 3.3. jika masing+masing nilai dari A berasosiasi dengan persisnya satu nilai $. DeFini(i 2N%: untuk memenuhi bentuk normal kedua. menyebabkan terhapusnya data relasi dan piutang./// 0// )4/. 1./// 869 5o. dan $ disebut sebagai objek dari determinan. 2. otomatis kolom yang terisi adalah 0.1. dan 4. suatu tabel harus dalam bentuk 05(. %T.9 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 829 Kode DK 0/0 0/) 0/1 879 Keterangan "embayaran "otongan tambahan 'etur 80/9 5ilai DK 0//. A B $. ditambah dengan setiap kolom bukan key didalam tabel harus bergantung se!ara fungsional4 terhadap primary key. tetapi 4 5otasi dari ketergantungan fungsional adalah A B $. > .Tempo 04+jan+ 00 04+jan+ 00 07+jan+ 00 849 5ilai 0//. 1. 'en!ong 5o. 7.. 3. $ se!ara fungsional tergantung kepada $. .Kom. masalah inilah yang disebut sebagai update anomali. ).ika kita analisa. sehingga A se!ara fungsional menentukan $. sehingga perlu dipe!ah menjadi dua tabel berbeda.0// )4/.0// 0//. 839 Hubungi Hendra 849 Telepon /20411001)24 #i)*an+ 809 5o. sedangkan kolom 6 sEd 03 harus diisi sebagai null./// . . tetapi tergantung kepada 5o. dan 0/ tidak berasosiasi tepat pada satu 5o. sedangkan kolom 6 sEd 03 adalah tidak memiliki ketergantungan se!ara fungsional terhadap Kode 'elasi. "iutang. tetapi untuk tabel "iutang belum memenuhi.l. "iutang A//0 A//0 A//) 8)9 Kode 'elasi 8(K9 H//0 H//0 H//0 819 Tanggal 0+jan+00 0+jan+00 4+jan+00 839 Tgl. A disebut sebagai determinan. hal inilah yang disebut sebagai delete anomali. DK $//0 $//) $/00 8. .immy. "iutang. masalah inilah yang disebut sebagai insert anomali. 1.ika kita melakukan analisa terhadap tabel tersebut diatas maka kolom ). Hendra. sehingga perubahan tersebut harus dilakukan pada 1 re!ord yang berbeda. . dimana kolom ).

sehingga kolom Keterangan harus dikeluarkan. "iutang 8"K9 A//0 A//) 8)9 Kode 'elasi 8(K9 H//0 H//0 819 Tanggal 0+jan+00 4+jan+00 839 Tgl. DK. ditambah dengan semua atribut yang tidak tergantung se!ara langsung terhadap "rimary Key harus dikeluarkan 8tidak boleh membuat ketergantungan transiti*e69. kita dapat mengetahui nilai $. %T.yang memiliki koneksi sebagai berikut A B $ dan $ B -. sedangkan Kode DK bergantung se!ara langsung kepada 5o./// . karena semua atribut bergantung kepada "rimary Key+nya masing+masing. tetapi khusus untuk tabel pembayaran. kolom keterangan tidak bergantung langsung kepada 5o.Tempo 04+jan+00 07+jan+00 849 5ilai 0//. . dengan kata lain A B -. yaitu masing+ masing kolom berasosiasi tepatnya pada masing+masing "rimary Key. dalam hal ini kolom Keterangan bergantung kepada 5o DK dengan transisi melalui KodeDK. 839 Hubungi Hendra 849 Telepon /20411001)24 #i)*an+ 809 5o.9 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 829 KodeDK 0/0 0/) 0/1 879 Keterangan "embayaran "otongan tambahan 'etur 80/9 5ilai DK 0//. 4)+ A %edan.ika dianalisa. jika kita mengetahui nilai A. Hendra. .0// )4/. dan . maka tabel 'elasi. tetapi tergantung kepada Kode DK.Kom. ketergantungan jenis inilah yang disebut sebagai ketergantungan transiti*e. misalkan kita memiliki tiga buah atribut A. K"deDK 809 KodeDK 8"K9 0/0 6 8)9 Keterangan "embayaran Untuk memahami ketergantungan transiti*e. $ela(i 809 Kode 'elasi 8"K9 H//0 8)9 5ama Hendra oe#arno 819 Alamat .l. DK 8"K9 $//0 $//) $/00 8)9 5o "iutang 8(K9 A//0 A//0 A//) 8. .ika dianalisa bah#a tabel+tabel tersebut diatas telah memenuhi )5(. 12 . DK sebagai primary key./// DK#i)*an+ 809 5o.Database Lanjut dengan I$% D$) kepada 5oDK./// 0// )4/. dan "iutang telah memenuhi 15(. dan dapat kita gunakan untuk mendapatkan nilai -.immy. > . DeFini(i <N%: Agar berada dalam bentuk normal ketiga. 'en!ong 5o. suatu tabel harus memenuhi semua syarat pada )5(. sehingga tabel "iutang dipe!ah menjadi dua tabel berbeda. $.

immy. D&L&T& dan U"DAT&. nama. %T.a da/a* *erliha* -ah.). Hendra./// Se*elah /r"(e( n"r alia(i dila. alamat. . Adapun beberapa perintah D%L yang akan dibahas pada bagian ini adalah I5 &'T. telepon *ar!har8)/99 alter table relasi add !onstraint pYkey primary key 8koderelasi9 insert into 'elasi 8koderelasi.an. -ontoh A !reate table relasi 8koderelasi *ar!har80/9 not null. telepon9 *alues 8UH//0U. U.9 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 829 KodeDK 8(K9 0/0 0/) 0/1 80/9 5ilai DK 0//. +5SE""erintah insert digunakan untuk menyisipkan re!ord kedalam tabel atau *ie#. ) )n!a -en*).)/i . 4)+A %edanU.l.a *a-elG*e-el *er(e-)* *elah *erhindar dari a(alah an" ali /ada in(er*. <N% *elah en0). )/da*e dan dele*e. "enyisipan baris pada *ie# juga menyisipkan menyisipkan baris kedalam tabel. > . nama *ar!har84/9. hubungi *ar!har84/9.an di-aha( /ada -a+ian (elan>)*n!a. :N% dan . a. U/20411001)24U9 "erintah tersebut diatas akan menyisipkan satu re!ord baru ke tabel relasi. 'en!ong 5o. DK 8"K9 $//0 $//) $/00 8)9 5o "iutang 8(K9 A//0 A//0 A//) 8.N% !an+ a. UHendra oe#arnoU.Kom. alamat *ar!har80//9. hubungi. 17 . Mengenal DM( Data manipulation language adalah perintah yang digunakan untuk mengatur data didalam objek skema database.a()( /ra. UHendraU.Database Lanjut dengan I$% D$) 0/) 0/1 "otongan tambahan 'etur DK#i)*an+ 809 5o. #ada .*e.ala)/)n a(ih *erda/a* B=N%./// 0// )4/.

L statement dengan masing+masing parameter ditandai sebagai Z. Me -)a* "->e.L tersebut telah dikompilasi terlebih dahulu 8pre!ompiled9. elain itu pemakaian prepared statement juga dapat menghindarkan terjadinya eksploitasi SHL In>e0*i"n. nilai dari masing+masing parameter belum diketahui. karena nanti pada saat kompilasi a#al.Database Lanjut dengan I$% D$) /PD*-E "erintah update digunakan untuk mengupdate data pada suatu tabel atau *ie#. Hendra menjadi sebagai berikutA DE(E-E "erintah delete digunakan untuk menghapus re!ord+re!ord dari suatu tabel atau *ie#. untuk jelasnya lihat koding berikut iniA Hendra.immy. jadi proses kompilasi hanya terjadi sekali saja. maka otomatis data pada tabel relasi khususnya nomor telepon dr. Anda dapat menghapus semua re!ord dalam tabel yang memenuhi kondisi.L se!ara berulang+ulang. Hendra menjadi /2061/6133. . sehingga perintah update yang diberikan adalahA update relasi set teleponNU/20411001)24U #here koderelasiNUH//0U etelah perintah tersebut diatas dijalankan. -ontohA delete from relasi "erintah tersebut diatas akan menghapus semua re!ord yang ada didalam tabel relasi. /re/ared (*a*e en* "ada a#alnya perlu dideklarasikan suatu *ariabel dengan type "repared tatement.Kom.ika anda mengeksekusi suatu perintah . keunggulan dari prepared statement adalah perintah . 3/ . %T. terjadi perubahan nilai H" dari dr. %isalnya berdasarkan data diatas. > . Anda dapat mengubah nilai dari satu atau lebih baris yang mana memenuhi kondisi. -ontohA delete from relasi #here koderelasiNUH//0U "erintah tersebut diatas akan menghapus semua re!ord yang memiliki koderelasi UH//0U Prepared Statement pada Java . sehingga hanya perlu ditentukan nilai masing+ masing parameter dan dieksekusi. adalah perlu memperhatikan bah#a setiap perintah yang dile#atkan ke database ser*er akan melalui proses kompilasi. kemudian juga disiapkan .

hubungi9D insert. maka dapat menggunakan metode e=e!uteUpdate yang akan mengembalikan suatu nilai integer yang menunjukkan jumlah re!ord yang dipengaruhi oleh perintah e=e!uteUpdate tersebut. alamat.get5ame899.Z.Kom. hubungi. koderelasi9D insert. telepon9 *alues 8Z. integritas Hendra.Z. sesuai dengan tipe data untuk masing+ masing parameter.prepare tatement8update tring9D R !at!h 8 .Database Lanjut dengan I$% D$) pri*ate "repared tatement insertD tring update tring N Pinsert into relasi 8koderelasi.set tring84.Z9PD publi! 'elasi89 O try O insert N %yD$:penHelper. alamat9D insert. > .an nilai )n*).out.set tring80.immy.P T Pnama. . dapat menggunakan metode set=== seperti set tring.L&=!eption e=9 O Logger.set tring8).P9D (atihan6 0.set tring81.Z. setDate. %T. insert.set tring83.e=e!uteUpdate89D ystem.an /re/ared (*a*e en* etelah nilai untuk masing+masing parameter telah ditentukan. setDouble.println8P$erhasil insert P T result T P baris.!lass. $uatlah sebuah database "iutang pada sistim D$) anda. &S&'&. nama9D insert. e=9D R R Men!edia.getLogger8'elasi. 30 . telepon9D Men>alan.log8Le*el. /ara e*er Untuk memasukan masing+masing nilai ke parameter.get-onne!tion89. ). kemudian lengkapi dengan metode !reateDatabase:bje!t yang mampu membuat objek+objek database "iutang beserta dengan memperhatikan dengan memperhatikan integritas entitas. $uatlah sebuah proje!t baru dengan nama "iutang. null. int result N insert. setInteger. persiapkan !lass KoneksiD$.

eBe0)*eU/da*e5I0rea*e *a-le /i)*an+ I J P8nopiutang *ar!har80/9 not null primary key.eBe0)*eU/da*e5Ial*er *a-le /i)*an+ I J Padd !onstraint periksaYtanggal P T P!he!k8tgljtempo MN tanggal9P9D (* *EB. .P T Ptgljtempo date not null.eBe0)*eU/da*e5I0rea*e *a-le DK/i)*an+ I J P8noDK *ar!har80/9 not null primary key.P T Phubungi *ar!har84/9.eBe0)*eU/da*e5I0rea*e *a-le rela(i I J P8koderelasi *ar!har80/9 not null primary key.P T PtanggalDK date not null.eBe0)*eU/da*e5I0rea*e *a-le >eni(DK I J P8kodeDK *ar!har80/9 not null primary key. Me*"de 0rea*eDa*a-a(eO->e0* /ada M!DBO/enHel/er.eBe0)*eU/da*e5Ial*er *a-le DK/i)*an+ add 0"n(*rain* I J Hendra.!reate tatement89D (* *EB.P T Pnilai de!imal80/. > .domain integrity. 1. integritas referensial dan integritas semantik.PT PnilaiDK de!imal80/.P T Pketerangan *ar!har80//99P9D (* *EB.>a4a /)-li0 (*a*i0 4"id 0rea*eDa*a-a(eO->e0*58 3 try O tatement stmt&=D stmt&= N !on.)99P9D (* *EB.)99P9D (* *EB.P T Pnopiutang *ar!har80/9 not null.eBe0)*eU/da*e5Ial*er *a-le /i)*an+ add 0"n(*rain* I J PfkYrelasi foreign key 8koderelasi9 P T Preferen!es relasiP9D (* *EB.Database Lanjut dengan I$% D$) domain. serta modifikasi metoda main untuk menjalankan Add'elasi.P T PkodeDK *ar!har80/9 not null.P T Pnama *ar!har80//9 not null.eBe0)*eU/da*e5Ial*er *a-le DK/i)*an+ I J Palter !olumn nilaiDK set default /P9D (* *EB.Kom. %T.immy. dan !lass Add'elasi.P T Ptanggal date not null.eBe0)*eU/da*e5Ial*er *a-le /i)*an+ I J Palter !olumn nilai set default /P9D (* *EB.P T Ptelepon *ar!har8)/99P9D (* *EB. $uatlah entity !lass untuk 'elasi dengan koding sebagai berikut.P T Palamat *ar!har8)//9.P T Pkoderelasi *ar!har80/9 not null. 3) .

> .Z.get-onne!tion89.Z.log8Le*el.a+e /i)*an+.log8Le*el.get5ame899.Le*elD import ja*a. &S&'&.s<l.immy.Kom. alamat.getLogger8'elasi.LoggerD import piutang.L&=!eption e=9 O Logger. telepon9 *alues 8Z.L&=!eption e=9 O Logger. e=9D R 9 /)-li0 S*rin+ +e*Ala a*58 3 return alamatD 9 Hendra.util. e=9D R 9 $ela(i.P T Pnama. %T.get5ame899.>a4a /a0.prepare tatement8insert tring9D R !at!h 8 . null.Database Lanjut dengan I$% D$) PfkYpiutang foreign key 8nopiutang9 P T Preferen!es piutangP9D (* *EB.logging. .%yD$:penHelperD /)-li0 0la(( $ela(i 3 pri*ate tring koderelasiD pri*ate tring namaD pri*ate tring alamatD pri*ate tring hubungiD pri*ate tring teleponD pri*ate "repared tatement insertD tring insert tring N Pinsert into relasi 8koderelasi. hubungi.s<l.L&=!eptionD import ja*a.eBe0)*eU/da*e5Ial*er *a-le DK/i)*an+ add 0"n(*rain* I J PfkYkodeDK foreign key 8kodeDK9 P T Preferen!es jenisDKP9D R !at!h 8 . .util.!lass.en*i*!2 import ja*a.!lass.Z. &S&'&.Z9PD /)-li0 $ela(i58 3 try O insert N %yD$:penHelper. null. 31 .logging.getLogger8%yD$:penHelper."repared tatementD import ja*a.

%T. 33 . hubungi9D Hendra. .Database Lanjut dengan I$% D$) /)-li0 4"id (e*Ala a*5S*rin+ ala a*8 3 this.set tring8).alamat N alamatD 9 /)-li0 S*rin+ +e*H)-)n+i58 3 return hubungiD 9 /)-li0 4"id (e*H)-)n+i5S*rin+ h)-)n+i8 3 this.nama N namaD 9 /)-li0 S*rin+ +e*Tele/"n58 3 return teleponD 9 /)-li0 4"id (e*Tele/"n5S*rin+ *ele/"n8 3 this. > .set tring80.Kom.set tring81.koderelasi N koderelasiD 9 /)-li0 S*rin+ +e*Na a58 3 return namaD 9 /)-li0 4"id (e*Na a5S*rin+ na a8 3 this.set tring83. alamat9D insert.hubungi N hubungiD 9 /)-li0 S*rin+ +e*K"derela(i58 3 return koderelasiD 9 /)-li0 4"id (e*K"derela(i5S*rin+ . koderelasi9D insert."derela(i8 3 this. nama9D insert.immy.telepon N teleponD 9 /)-li0 4"id 0rea*e58 3 try O insert.

out.L&=!eption e=9 O Logger.println8P$erhasil insert P T result T P baris.readLine89D ystem.println8P%asukan teleponAP9D tring telepon N in.println8P%asukan kode relasiAP9D koderelasi N in.out.set5ama8nama9D Hendra.println8PKetik <uit untuk selesaiP9D ystem.$uffered'eaderD import ja*a.logging.setKoderelasi8koderelasi9D relasi.readLine89D if 8QP<uitP. telepon9D int result N insert.logging.readLine89D relasi.rela(i2 import ja*a.log8Le*el.get5ame899.println8P%asukan alamatAP9D tring alamat N in.a+e /i)*an+.Le*elD import ja*a. null. > .!lass.util.immy.LoggerD import piutang.toLo#er-ase8999 O ystem.set tring84. &S&'&.out.out. %T.io.out.readLine89D ystem.getLogger8'elasi.>a4a /a0.Input tream'eaderD import ja*a.out.'elasiD /)-li0 0la(( Add$ela(i 3 /)-li0 4"id (*ar*58 3 Input tream'eader !on*erter N ne# Input tream'eader8 ystem.P9D R !at!h 8 .out.io. 34 . e=9D R 9 9 Add$ela(i.Database Lanjut dengan I$% D$) insert.e<uals8koderelasi. .entity.Kom.I:&=!eptionD import ja*a.readLine89D ystem.e=e!uteUpdate89D ystem.println8P%asukan namaAP9D tring nama N in.util.in9D $uffered'eader in N ne# $uffered'eader8!on*erter9D 'elasi relasi N ne# 'elasi89D tring koderelasiNPPD do O try O ystem.io.println8P%asukan hubungiAP9D tring hubungi N in.

bukaDatabase8PhendraP.e<uals8koderelasi. . &S&'&.Kom.!reate89D R R !at!h 8I:&=!eption e=9 O Logger.setAlamat8alamat9D relasi.setHubungi8hubungi9D relasi.!reateDatabase:bje!t89D Add'elasi add'elasi N ne# Add'elasi89D add'elasi.log8Le*el. null. > . 36 .relasi.out.>a4a /a0.out.toLo#er-ase8999D 9 9 Main.start89D R else O ystem.a+e /i)*an+2 import piutang.get5ame899.immy.P7)/3/1/)3P99 O ystem.!lass.setTelepon8telepon9D relasi.Add'elasiD /)-li0 0la(( Main 3 /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 3 if 8%yD$:penHelper.Database Lanjut dengan I$% D$) relasi.getLogger8Add'elasi.println8P$erhasil buka databaseP9D EE%yD$:penHelper. e=9D R R #hile 8QP<uitP. %T.println8PCagal buka databaseP9D R 9 9 Hendra.

N A. dimana $ ⊄ A. sehingga diperlukan bentuk normal berikutnya yang $-5(. %T. jika $ bukan merupakan subset dari A. 3R. 1. suatu ketergantungan fungsional dari bentuk A B $ dikatakan sebagai non+tri*ial.immy . > .. 3.Database Lanjut dengan I$% D$) Bab 7. uatu -andidate key dari suatu tabel adalah suatu uperkey minimal untuk tabel tersebut. Untuk berada dalam $-5(. Tri4ial F)n0*i"n de/enden0!. tetapi .immy Tabel tersebut diatas memenuhi 15(. 3R. A adalah suatu super key. %ataKuliah. anda dapat mengatakan bah#a .Kom. ).utan B$5F 8$o% e1$odd 5ormal Form9 etelah diteliti lebih lanjut. didalam suatu tabel '. tetapi dapat terjadi anomali.adalah subset dari A. A B A adalah suatu tri*ial fun!tional dependen!y. tabel harus berada dalam bentuk 15( dan untuk setiap n"nG *ri4ial F)n0*i"n de/enden0! A K B. dan .bukan merupakan suatu proper subset dari A karena . didalam suatu tabel '. Hendra. ebagai !ontoh. Dengan kata lain. 5ormalisasi (an. suatu tabel dalam $-5( jika dan hanya jika setiap determinan adalah suatu -andidate key. ehingga tabel pertemuan tersebut dapat diubah menjadi $-5( dengan meme!ah tabel tersebut kedalam . ubset dan "roper subset. misalkan A N O0. $ N O0. ). 1R. ). dimana kita tidak dapat menambahkan dosen dan matakuliah tanpa memasukan mahasis#a.immy.N O0. dimana $ ⊆ Α. 1. . suatu ketergantungan fungsional dalam bentuk A B $ disebut sebagai tri*ial fun!tional dependen!y. sedangkan $ adalah proper subset dari A karena $ ≠ A 8dimana terdapat menimal satu elemen didalam A tidak ada didalam $9. N"nG*ri4ial F)n0*i"nal de/enden0!. Dosen9 sebagai berikutA "ertemuan %ahasis#a Tony Thomas Indra Filson %atakuliah D$Lanjut D$Lanjut -lient er*er -lient er*er Dosen Hendra Hendra . . jika $ adalah himpunan bagian dari A 8tidak perlu berupa proper subset9. %isalkan kita memiliki tabel "ertemuan8%ahasis#a. ternyata bentuk 15( masih dapat terjadi redundan!y.

immy. "ertemuan8%ahasis#a. tetapi tidak semua 15( adalah $-5(. Dosen9 T) 8Dosen. 32 . se!ara ringkas proses normalisasi sampai kepada $-5( diillustrasikan sebagai berikutA 05F dan 45F $entuk normal sampai dengan $-5( telah !ukup untuk tingkat normalisasi. %atakuliah9 %ahasis#a Tony Thomas Indra Filson %atakuliah D$Lanjut D$Lanjut -lient er*er -lient er*er %atakuliah D$Lanjut -lient er*er Dosen Hendra . %atakuliahR B Dosen %atakuliah B Dosen ehingga T0 8%ahasis#a. > . Dosen9 O%ahasis#a. %atakuliah.immy "erlu diketahui bah#a semua $-5( adalah dalam bentuk 15(.Kom. tetapi pada kenyataannya ada dua bentuk normal yang diperlukan untuk mengeleminasi sisa dari Hendra. %T. .Database Lanjut dengan I$% D$) dua tabel .

$. tetapi jika keterbatasan ini mun!ul. dimana untuk setiap nilai didalam A adalah himpunan untuk nilai $ dan himpunan untuk nilai -.Database Lanjut dengan I$% D$) anomali yang diketahui yaitu terjadinya multi*alued dependen!y2 dan join dependen!y pada suatu tabel. %esin9 yang menunjukan departemen dan pekerjaan yang ditanggani serta mesin yang dimiliki. 37 . . Hendra. $. dengan demikian terjadi ketergantungan multi*alued antara atribut A. "ekerjaan. dan -.didalam tabel '. maka kita perlu menyisipkan beberapa baris.tidak tergantung satu sama yang lain. DeFini(i :N%: suatu tabel dalam bentuk 35( jika dan hanya jika berada dalam $-5(. pada situasi umumnya semua tabel $-5( adalah se!ara otomatis memenenui 35( dan 45(. diperlukan perbaikan lanjutan untuk mengkoreksi anomali. joborder departemen d0 d0 d0 d0 d) d) d) d) pekerjaan j0 j0 j) j) j1 j1 j3 j3 mesin p0 p) p0 p) p1 p3 p1 p3 .Kom. maka dapat menyebabkan kehilangan pekerjaan yang ditangani departemen tersebut. > . dan jika kita ingin menghapus suatu mesin dari departemen.menyatakan untuk setiap nilai A terdapat himpunan nilai untuk -. dan hanya memiliki satu ketergantungan multi*alued didalam ' 8sebagai !ontoh [ B \9. dan . 2 %isalkan sebuah tabel ' memiliki tiga buah atribut yaitu A. 05F Tujuan dari bentuk normal keempat adalah mengeleminasi n"nG*ri4ial )l*i4al)ed de/enden0! dari suatu tabel dengan memproyeksi mereka kedalam tabel yang lebih ke!il.immy. A B $ menyatakan bah#a untuk setiap nilai dari A terdapat himpunan nilai untuk $. dan tetapi himpunan nilai $ dan . -ontohA joborder8Departemen. %T. paling sedikit satu dari padanya mengandung ketergantungan multi*alued adalah tri*ial atau [ adalah uperKey dari tabel '. A B .ika kita ingin menambah suatu mesin kepada departemen.

Kom. Hendra. mesin9 DekomposisiA proses meme!ah suatu tabel menjadi dua tabel atau lebih. D9 dari relasi diberikan '8A. diaman menyatakan bah#a satu departemen dapat memiliki beberapa mesin8multi*alued dependen!y9 "ada tabel joborder. 4/ . dapat dikatakan ada jika gabungan dari '0 dan ') melalui . untuk mengubah tabel tersebut menjadi 35( dengan dekomposisi menjadi dua tabel sebagai berikutA T0 8departemen.adalah sama dengan relasi '. $. > . . pekerjaan9 T) 8departemen. dimana menyatakan bah#a satu departemen dapat mengerjakan beberapa pekerjaan 8multi*alued dependen!y9 Departemen B %esin.Database Lanjut dengan I$% D$) Dalam hal ini terjadi ketergantungan multi*alued yaituA Departemen B "ekerjaan. $. -. dengan kata lain suatu tabel dalam bentuk 45( jika dia tidak ada join dependen!y. -9 dan ')8-. D9 uatu tabel berada dalam bentuk 45( jika setiap join dependen!y adalah suatu konsekuensi dari -andidate key relasinya. dimana '0 dan ') adalah dekomposisi dari '08A. departemen d0 d0 d) d) pekerjaan j0 j) j1 j3 departemen d0 d0 d) d) mesin p0 p) p1 p3 45F .oin dependen!y . %T. departemen bukan merupakan uperKey.immy.

ohn Abhishek Ke-)*)hanKe*ra /ilan "ekerjaan "+0 "+) "+) "+1 Ketrampilan Analyst Analyst D$A Analyst Ketrampilan Analyst Analyst D$A D$A Hendra. "+)@ 8mengeluarkan Thomas dari "ekerjaan "+)9. sehingga tabel diatas dapat didekomposisi menjadiA Ke*ra /ilan Karya#an Thomas Thomas . %T. dapat menimbulkan anomali karena terjadi saling ketergantungan diantara gabungan.immy.Kom.Database Lanjut dengan I$% D$) -ontohA Karya#an Thomas Thomas Thomas Thomas . sebagai !ontoh Thomas dimana memiliki ketrampilan ?Analyst@ dan ?D$A@ ditugaskan kepada "+). Karya#an yang sama ?Thomas@ ditugaskan hanya sebagai ?Analyst@ pada "+0 yang hanya membutuhkan ketrampilan ?Analyst@ dan bukan ketrampilan ?D$A@. karena kita kehilangan data bah#a Thomas memiliki ketrampilan ?D$A@. . 40 .ohn Abhishek Ketrampilan Analyst Analyst D$A Analyst D$A Analyst "ekerjaan "+0 "+) "+) "+1 "+0 "+0 Tabel tersebut dalam bentuk $-5( dan 35(. %aka timbul anomali ketika kita menghapus ?Thomas. > . dimana "+) membutuhkan kedua ketrampilan tersebut.

ika Thomas dikeluarkan dari "+).Kom. "+)@. maka kita menghapus ?Thomas. 4) .immy. tetapi tidak mempengaruhi tabel lainnya.ohn Abhishek "ekerjaan "+0 "+) "+1 "+0 "+0 . e!ara ringkas proses 5ormalisasi didalam peran!angan database adalah ditunjukan pada Cambar Hendra. . %T.Database Lanjut dengan I$% D$) "enugasan Karya#an Thomas Thomas Thomas . > .

-ontohA sele!t ] from relasi #here koderelasi like ?. Anda dapat melakukan filter dengan menggunakan kondisi untuk membatasi pengambilan data tertentu. TDD&S. . > . U% dan SA'IA5-&. -:U5TY$IC. alamat from relasi "erintah diatas akan mengambil kolom nama dan alamat dari semua baris ditabel relasi. %I5. sedangkan untuk perintah lainnya dapat menghasilkan jika diaplikasi pada suatu himpunan kosong.. ASC.H@ "erintah diatas akan mengambil semua baris yang memiliki kode relasi dimulai dengan huruf . %A[. -ontohA sele!t !ount8]9 as hitungYbaris from relasi "erintah diatas akan mendapatkan jumlah baris yang ada pada tabel relasi -ontohA sele!t !ount8]9 as hitungYbaris from relasi #here nama like UhendraHU Hendra.Kom.immy. 41 . *ggregate (ungsi aggregate yang tersedia pada D$) terdiri dari -:U5T.uer% (anguage "erintah sele!t digunakan untuk mengambil data dari satu atau beberapa tabel maupun *ie#. -ontohA sele!t ] from relasi "erintah diatas akan mengambil semua data dari tabel relasi -ontohA sele!t ] from relasi fet!h first 4 ro#s only "erintah ditas akan mengambil lima baris pertama dari tabel relasi. %T. untuk perintah -:U5T dan -:U5TY$IC hasilnya tidak dapat berupa nilai null. -ontohA sele!t nama.Database Lanjut dengan I$% D$) Mengenal Data .

maka pada perintah ele!t dapat dilengkapi dengan pernyataan :'D&' $\ -ontohA sele!t ] from relasi order by nama sele!t ] from relasi order by nama D& sele!t ] from relasi order by nama. &"DE" B: Untuk mendapatkan hasil pengembalian data sesuai dengan urutan berdasarkan kolom tertentu. > . "iutang 8fk9 A//0 A//0 A//) A//) sele!t nopiutang./// 0// )// 4/. sum8nilaidk9 as jumlahYbayar from bayar group by nopiutang Akan mengembalikan 5o"iutang A//0 A//) .immy. kota D& - ./// 849 5o. &*aluasi kondisi terhadap nilai yang merupakan hasil dari fungsi Aggregate dapat Hendra. DK 8pk9 $//0 $//) $/00 $/0) 8)9 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 )4+jan+00 Tabel $ayar 819 Kode DK 8fk9 0/0 0/) 0/0 0/0 839 5ilai DK 0//. '*<+5. -ontoh A 809 5o.umlahYbayar 0//0// )4//// "erintah tersebut diatas akan meringkas data jumlah pembayaran untuk masing+masing nopiutang. $iasanya pemakaian perintah C':U" di kombinasikan dengan pemakaian aggregate. ."&/P B: "erintah C':U" $\ dapat digunakan untuk meringkas data berdasarkan pengelompokan kolom tertentu.Database Lanjut dengan I$% D$) "erintah diatas akan mendapatkan jumlah baris yang namanya dia#ali dengan kata Hendra.Kom. 43 . kota sele!t ] from relasi order by nama D& -. %T.

Kom. Untuk pengambilan nilai dari masing+masing kolom menggunakan metoda dengan format sebagai berikutA type getType8int ^ tring9 Dalam hal ini berupa getInt. telepon9 *alues 8Z.s<l. hubungi. -ontohA $ela(i.>a4a /a0.logging. alamat. %T.Z.L adalah sebuah 'esultset. > .Database Lanjut dengan I$% D$) dilakukan dengan menggunakan pernyataan Ha*ing. maka akan mengembalikan true.util. getDate. getDouble.ika metoda ne=t89 berhasil. kemudian argumen adalah nomor kolom yang akan diambil nilainya. 44 .P T Pnama. sele!t nopiutang.Z. get tring. suatu resultset dapat berupa satu baris baris tunggal maupun lebih. . .a+e /i)*an+. karena resultset bekerja pada satu baris suatu saat.L&=!eptionD import ja*a.en*i*!2 import ja*a.immy."repared tatementD import ja*a. dan false jika tidak ada baris berikutnya.%yD$:penHelperD /)-li0 0la(( $ela(i 3 pri*ate tring koderelasiD pri*ate tring namaD pri*ate tring alamatD pri*ate tring hubungiD pri*ate tring teleponD pri*ate "repared tatement insertD tring insert tring N Pinsert into relasi 8koderelasi. sum8nilaidk9 as jumlahYbayar from bayar group by nopiutang ha*ing sum8nilaidk9 M )///// "erintah tersebut diatas akan menampilkan data pembayaran piutang dinama jumlah pembayaran per+nomor piutang memiliki nilai diatas )///// "esultset ebagai hasil dari eksekusi D.'esult etD import ja*a.s<l.util. .Z.Z9PD Hendra.s<l.logging.Le*elD import ja*a.LoggerD import koneksidb. untuk berpindah ke baris berikutnya dapat menggunakan metoda ne=t89.

null. alamat.log8Le*el. .getLogger8'elasi. &S&'&. %T. 46 .immy.Database Lanjut dengan I$% D$) pri*ate "repared tatement updateD tring update tring N Pupdate relasi set namaNZ.L&=!eption e=9 O Logger.alamat N alamatD 9 /)-li0 S*rin+ +e*H)-)n+i58 3 return hubungiD 9 /)-li0 4"id (e*H)-)n+i5S*rin+ h)-)n+i8 3 this.prepare tatement8sele!t tring9D R !at!h 8 . hubungiNZ.P T PalamatNZ.prepare tatement8update tring9D sele!t N %yD$:penHelper.get-onne!tion89."derela(i8 3 this.!lass.prepare tatement8insert tring9D update N %yD$:penHelper. teleponNZ #here koderelasiNZPD pri*ate "repared tatement sele!tD tring sele!t tring N Psele!t nama. hubungi. e=9D R 9 /)-li0 S*rin+ +e*Ala a*58 3 return alamatD 9 /)-li0 4"id (e*Ala a*5S*rin+ ala a*8 3 this.get-onne!tion89. telepon P T Pfrom relasi #here koderelasiNZPD /)-li0 $ela(i58 3 try O insert N %yD$:penHelper.Kom.get5ame899.hubungi N hubungiD 9 /)-li0 S*rin+ +e*K"derela(i58 3 return koderelasiD 9 /)-li0 4"id (e*K"derela(i5S*rin+ .get-onne!tion89.koderelasi N koderelasiD 9 Hendra. > .

getLogger8'elasi. alamat9D insert.Kom. koderelasi9D insert. nama9D insert.set tring84.nama N namaD 9 /)-li0 S*rin+ +e*Tele/"n58 3 return teleponD 9 /)-li0 4"id (e*Tele/"n5S*rin+ *ele/"n8 3 this. nama9D update.Database Lanjut dengan I$% D$) /)-li0 S*rin+ +e*Na a58 3 return namaD 9 /)-li0 4"id (e*Na a5S*rin+ na a8 3 this.e=e!uteUpdate89D ystem.L&=!eption e=9 O Logger. e=9D Hendra.set tring8). null.set tring81. %T. alamat9D update. telepon9D int result N insert.telepon N teleponD 9 /)-li0 4"id 0rea*e58 3 try O insert.get5ame899. hubungi9D update.out.log8Le*el.getLogger8'elasi. > .set tring8).set tring84.log8Le*el. .get5ame899.immy.println8P$erhasil update P T result T P baris.!lass.set tring83.e=e!uteUpdate89D ystem. hubungi9D insert.L&=!eption e=9 O Logger.set tring80.!lass. telepon9D update. &S&'&.P9D R !at!h 8 .println8P$erhasil insert P T result T P baris. . 4.P9D R !at!h 8 .out.set tring80. koderelasi9D int result N update.set tring83.set tring81. e=9D R 9 /)-li0 4"id )/da*e58 3 try O update. &S&'&. null.

io.LoggerD import koneksidb.entity.get tring809D alamat N rs.get tring819D telepon N rs.koderelasi N koderelasiD nama N rs."derela(i8 3 boolean result N falseD try O 'esult et rsD sele!t.get tring8)9D hubungi N rs.!lass.e=e!ute.immy.io.util.logging.getLogger8'elasi.ne=t899 O this. 42 .!lose89D R !at!h 8 .util.'elasiD /)-li0 0la(( Edi*$ela(i 3 /)-li0 4"id (*ar*58 *hr".get5ame899. .log8Le*el.io.logging.rela(i2 import ja*a.>a4a /a0.uery89D if 8rs.L&=!eption e=9 O Logger.( IOEB0e/*i"n 3 Input tream'eader !on*erter N ne# Input tream'eader8 ystem.I:&=!eptionD import ja*a. null. &S&'&. koderelasi9D rs N sele!t.in9D $uffered'eader in N ne# $uffered'eader8!on*erter9D 'elasi relasi N ne# 'elasi89D tring koderelasiNPPD Hendra. > .set tring80. %T.a+e /i)*an+.get tring839D result N trueD R rs.Database Lanjut dengan I$% D$) R 9 /)-li0 -""lean +e*B!Id5S*rin+ . e=9D R return resultD 9 R Edi*$ela(i.Kom.Input tream'eaderD import ja*a.Le*elD import ja*a.$uffered'eaderD import ja*a.

readLine89D ystem.setAlamat8alamat9D relasi.out.out. > .immy. %isalkan anda diberi sebuah K' sebagai berikut iniA Kar*) $en0ana S*)di 5im A 7)/3/1/)3 5ama A Hendra .!lass.toLo#er-ase8999 O if 8relasi.println8PUbah hubungi P T relasi.out.getLogger8Add'elasi.setHubungi8hubungi9D relasi.toLo#er-ase8999D 9 9 (atihan 0.println8PUbah alamat P T relasi. %T.setKoderelasi8koderelasi9D relasi.log8Le*el.set5ama8nama9D relasi.get$yId8koderelasi99 O ystem.println8PUbah telepon P T relasi.out.println8PKetik <uit untuk selesaiP9D ystem. null.readLine89D ystem.getTelepon89TPAP9D tring telepon N in.println8PUbah nama P T relasi.out.getHubungi89TPAP9D tring hubungi N in.urusan A Teknik Industri (akultas A Teknik emester A ) Tahun AkademikA 077)E0771 Hendra.e<uals8koderelasi.readLine89D relasi.out.e<uals8koderelasi.readLine89D ystem.readLine89D if 8QP<uitP. &S&'&.get5ame899.setTelepon8telepon9D relasi. e=9D R R #hile 8QP<uitP.Database Lanjut dengan I$% D$) do O try O ystem. 47 .get5ama89TPAP9D tring nama N in.getAlamat89TPAP9D tring alamat N in.update89D R R R !at!h 8I:&=!eption e=9 O Logger.Kom. .println8P%asukan kode relasiAP9D koderelasi N in.

). 0/ . .println8P).out. Harmein 5asution.Database Lanjut dengan I$% D$) Kode%K %KU+/0 %KI+/0 %KU+/) %KI+/) dst %atakuliah $ahasa Indonesia "engantar Teknik Industri Agama Kalkulus 0 .e<uals8pilih99 O Add'elasi add'elasi N ne# Add'elasi89D add'elasi.umlah K 1 3 ) 3 02 %edan.immy. 6/ .anuari 0771 Disetujui. Tambah 'elasiP9D ystem.print8PKetik pilihan andaAP9D Input tream'eader !on*erter N ne# Input tream'eader8 ystem.out.readLine89D if 8P0P.start89D Hendra.println8P0. Lakukan peran!angan database melalui proses normalisasi sampai kepada 45( jika diperlukan untuk menghilangkan anomali+anomali.bukaDatabase8PhendraP. > . /)-li0 (*a*i0 4"id ain5S*rin+67 ar+(8 3 if 8%yD$:penHelper. dan diaktifkan melalui pilihan pada main.println8P[.start89D R else if 8P)P. $uatlah program yang dapat melakukan proses perbaiki data relasi.P7)/3/1/)3P99 O try O ystem. Ir. % I&.e<uals8pilih99 O &dit'elasi edit'elasi N ne# &dit'elasi89D edit'elasi.out.println8P$erhasil buka databaseP9D ystem. "esiapan DataP9D ystem.out. %T. "erbaiki 'elasiP9D ystem.out.Kom.in9D $uffered'eader in N ne# $uffered'eader8!on*erter9D tring pilih N in.

&S&'&. hubungi. jika \a. kemudian dilakukan pen!arian ke tabel 'elasi.!lass.get5ame899.log8Le*el. jika ditemukan.toUpper-ase8999 O %yD$:penHelper.!lose-onne!tion89D R !at!h 8I:&=!eption e=9 O Logger. kemudian dikonfirmasi apakah pemakai yakin akan menghapus data tersebut. maka proses penghapusan dilakukan. null.getLogger8%ain. 60 .out. maka ditampilkan detail data relasi 8nama.!reateDatabase:bje!t89D R %yD$:penHelper. > . telepon9. alamat. $uatlah aplikasi hapus data relasi 8Delete'elasi. Hendra.immy. e=9D R R else O ystem.e<uals8pilih.Kom.ja*a9 "etunjukA "rogram meminta pemakai memasukan koderelasi. .Database Lanjut dengan I$% D$) R else if 8P[P. %T.println8PCagal buka databaseP9D R 9 1.

D.Database Lanjut dengan I$% D$) Bab =.umlah kritikal <uery atau laporan yang diperlukan lebih dari satu tabel. dan memakan tempat penyimpanan ketika disimpan sebagai foreign key pada tabel yang berhubungan. jika kebutuhan ini perlu diproses pada lingkungan transaksi online. $anyak primary key berukuran besar sehingga menyebabkan proses <uery yang besar. . . 3. Tabel+tabel perlu diakses dengan !ara yang berbeda dan oleh pemakai yang berbeda pada kerangka #aktu yang bersamaan. Denormalisasi Denormalisasi adalah proses yang berorientasi kepada optimisasi unjuk kerja pemba!aan dari database dengan memperbolehkan redundan!y data ataupun melalui proses pengelompokan data. 1. maka unjuk kerja database menjadi rendah. pengurutan. $anyaknya kalkulasi perlu diterapkan pada satu atau banyak kolom sebelum <uery dapat berhasil menja#ab. > . ebagaimana kita ketahui bah#a proses normalisasi dilakukan dengan memisahkan tabel untuk menghindari terjadinya redundan!y dan timbulnya masalah anomali pada insert. update dan delete.( bagian ! "ada bagian ini kita akan melakukan eksplorasi yang lebih lanjut terhadap perintah &L&-T. dimana dimungkinkan pemakaian fungsi aggregate. "roses pengelompokan data pada denormalisasi umumnya digunakan untuk data#arehouse maupun database transaksi online yang membutuhkan respon yang !epat. menyimpan nilai yang diturunkan atau pre+ kalkulasi dapat menurunkan IE: dan -"U sehingga perolehan data menjadi !epat.( S. %T.:I5 !ukup banyak. $erikut ini adalah kriteria yang dapat digunakan untuk pertimbangan denormalisasiA 0. suatu proses denormalisasi dapat meningkatkan kinerja. Tetapi sesuatu hal yang perlu diperhatikan pada denormalisasi adalah menjaga semua data yang redundan tersebut dalam kondisi akurat. dan sesuatu hal yang perlu diperhatikan adalah denormalisasi berbeda dengan database yang tidak dinormalisasi. termasuk latar belakang alasan terkait dengan keputusan tersebut. D&L&T&9. jika proses . Ingat hanya ada satu alasan yang *alid untuk proses denormalisasi pada saat peran!angan database relasional. peringkasan. "emisahan data tersebut menyebakan data tersebar pada bebera tabel yang berbeda akan meningkatkan proses IE: ketika data perlu diba!a dan dirakit kembali menjadi informasi melalui perintah .:I5. "roses denormalisasi dilakukan dengan memperbolehkan terjadinya redundan!y pada kolom tertentu sehingga meningkatkan kinerja pemba!aan 8 &L&-T9 tetapi beresiko terhadap kinerja penulisan 8I5 &'T.immy. etiap keputusan proses denormalisasi perlu didokumentasi. U"DAT&. yaitu untuk peningkatan kinerja. ).Kom. Hendra. 6) .

0// )4//// 849 Kode 'elasi 8fk9 .e -en*). "iutang 8pk9 A//0 A//) 8)9 Tanggal 0+jan+00 4+jan+00 Tabel "iutang 819 Tgl.e -ali .nopiutang.l.hubungi." /"(i(i elal)i din"r ali(a(i . 2N%. #e a.in.2 5opiutang Tgljtempo 5ilai A//0 A//) /0E04E00 /0E07E00 0//0// )4//// $erdasarkan !ontoh tersebut diatas.an . a.immy -ruV . a.immy Hendra 849 Telepon /20)134. b. a. %T.2 20)134. +55E" J&+5 .an da*a dari -e-era/a *a-el ha(il de.//0 . di ana (erin+ di-)*)h. 2N% Koderelasi 5ama hubungi Telepon .Database Lanjut dengan I$% D$) dan pengabungan. 00 %edan . 'en!ong 5o. b.an da*a dala -en*).an /ada (aa* /ena /ilan da*a a)/)n /e -)a*an la/"ran . kemudian dilakukan proses join.nama.immy 20)134. dari dua tabel yang telah dinormaliasi.tgljtempo.Tempo 04+jan+00 07+jan+00 839 5ilai 0//.immy -ruV .koderelasi N b.enis join ini akan mengembalikan hasil yang memiliki baris dari tabel pertama yang memiliki pasangan terhadap tabel kedua berdasarkan ekspresi join.koderelasi Mena /il. sehingga dapat diambil kolom+kolom dari masing+masing tabel yang bersesuaian. J&+5 "ernyataan join digunakan untuk memasangkan data suatu tabel dengan tabel lainnya yang berhubungan.2 20411001 809 5o. -ontohA 809 Kode 'elasi 8pk9 .immy -ruV Hendra Tabel 'elasi 819 Alamat . > .i*a ena /il.Kom. menghasilkan tampilan tabel dalam bentuk normal kedua.immy . Hendra.immy. %angkubumi 5o. b. . 61 .//0 .telepon.l. .//0 ele!t a. 4)+A 839 Hubungi .aian >"in e )n+.//0 H//0 8)9 5ama .//0 .koderelasi.nilai from relasi a inner join piutang b on a.

dan bagi tabel pertama yang tidak memiliki pasangan pada tabel kedua. a.tgljtempo. maka untuk kolom+kolom yang berasal dari tabel pertama akan berisi null.2 20411001 5opiutang Tgljtempo 5ilai A//0 A//) N)ll /0E04E00 /0E07E00 N)ll 0//0// )4//// n)ll edangkan pernyataan 'ICHT .telepon.Kom.immy . maka pernyataan (ULL .:I5 akan mengambil baris baik dari tabel pertama maupun tabel yang kedua. > .nopiutang.2 20)134.&/-E" J&+5 dan "+. a. bagi masing+masing sisi yang tidak ada pasangannya akan diisi sebagai null. dan bagi tabel kedua yang tidak memiliki pasangan pada tabel pertama.:I5 mengembalikan semua baris yang memiliki padangan pada kedua tabel. maka untuk kolom+kolom yang berasal dari tabel kedua akan berisi nilai null. maka pernyataan L&(T . a.:I5 akan mengembalikan semua baris yang memiliki pasangan pada kedua sisi.:I5 maupun 'ICHT :UT&' .&/-E" J&+5 . b.//0 H//0 .'.immy -ruV Hendra hubungi .hubungi.immy.immy Hendra Telepon 20)134. b.ika L&(T :UT&' .koderelasi Koderelasi 5ama .nama. 5ilai) )/ 63 . b.Database Lanjut dengan I$% D$) (EF. %T.nilai from relasi a left join piutang b on a.//0 .koderelasi N b.immy -ruV .koderelasi.:I5 hanya mengambil baris penuh dari salah satu sisi saja. -ontohA ele!t a. -ontohA T0 Kode A $ 5ilai0 0/ )/ T) Kode $ Hendra.ika perintah inner join hanya mengembalikan baris+baris yang memiliki pasangan saja pada kedua tabel sesuai dengan ekspresi join. . F/(( J&+5 .

b.Database Lanjut dengan I$% D$) 1/ ele!t a.kode as kodeb. a. 64 . b.Kode Akan menghasilkan Kode A $ null 5ilai0 0/ )/ null Kodeb null $ 5ilai) null )/ 1/ $*SE >'E5 ? -'E5 ? E(SE E5D "ernyataan -A & FH&5 dapat digunakan untuk menge*aluasi nilai hasil sele!t. a.8 end a( -a!ar from piutang a left join dkpiutang b on a.nopiutang N b. 0a(e .nilai atau dapat juga dengan menggunakan fungsi -:AL& -& Hendra. a./// 0/) 0// 0/0 )///// 849 5o.nilaid. "iutang 8fk9 A//0 A//0 A//) ele!t a. -ontohA 809 5o.nilai) from T0 a (ull .nilai. a.//0 . "iutang 8pk9 A//0 A//) 8)9 Tanggal 0+jan+00 4+jan+00 Tabel "iutang 819 839 Tgl. > .nopiutang group by a. dan menentukan nilai baru bardasarkan hasil e*aluasi.tgljtempo. %T.immy. 5ilai .0// )4/.tgljtempo.//0 809 5o.nopiutang.nopiutang./// 849 Kode 'elasi 8fk9 .8 i( n)ll *hen & el(e () 5-.nilaid.nilai0.Kode N b.oin T) b on a.Tempo 04+jan+00 07+jan+00 0//. DK 8pk9 $//0 $//) $/00 8)9 Tanggal DK 04+jan+00 06+jan+00 07+jan+00 Tabel DK"iutang 819 839 Kode DK 5ilai DK 8fk9 0/0 0//. . a.kode.hen () 5-.Kom.

nilaid.nilai ha4in+ a.nilai LM () 5-.nopiutang group by a.nopiutang N b./// 849 $ayar )///// Kemudian jika kita menjalankan <uery sebagai berikut iniA ele!t a.nilaid.uery 819 Tgl.tgljtempo.nilai esuai dari sifat dari L&(T . > .Tempo 07+jan+00 839 5ilai )4/.8 as bayar from piutang a left join dkpiutang b on a. a.8 Akan menghasilkan tampilan data piutang yang belum lunas.tgljtempo.nopiutang group by a.nilai. 809 5o.8. .nilaid. a.nilaid.nopiutang.nopiutang group by a. .nopiutang. 0"ale(0e5() 5-.nilai.nilai ha4in+ a. sehingga nilai bayar perlu dikon*ersi menjadi nol.8 as sisaA' from piutang a left join dkpiutang b on a.tgljtempo.nopiutang N b.nopiutang N b.nilai + () 5-. () 5-. a. a. a. a.nopiutang.nopiutang.uery 819 Tgl. dimana dimungkinkan nilai null jika pasangan tabel pertama tidak ditemukan pada tabel kedua. .Kom.:I5.nopiutang.tgljtempo. "iutang 8pk9 A//) 8)9 Tanggal 4+jan+00 Hasil .nopiutang.Tempo 04+jan+00 07+jan+00 839 5ilai 0//.0// )4/. a. a.nilai LM () 5-.Database Lanjut dengan I$% D$) ele!t a. "iutang 8pk9 A//0 A//) 8)9 Tanggal 0+jan+00 4+jan+00 Hasil .tgljtempo. a. a.nilaid. %T.immy. a./// 849 $ayar 0//0// )///// Kemudian jika kita menjalankan <uery sebagai berikut iniA ele!t a.&8 a( -a!ar from piutang a left join dkpiutang b on a.tgljtempo. 66 . Kedua <uery tersebut menghasilkan tampilan sebagai berikutA 809 5o. a.8 Hendra.

berikut ini !ontoh menampilkan sisa A' dengan sub<uery sele!t nopiutang. b.Tempo 4+jan+00 07+jan+00 839 isaA' 4//// Subquer% Didalam suatu <uery dimungkinkan terdapat perintah <uery didalamnya. sum8nilai+bayar9 from 5(ele0* a. +a.nodk. a.n"/i)*an+. .Database Lanjut dengan I$% D$) 809 5o. a. 6.nilaidk from dkpiutang A inner join jenisDK $ on a.kodeDK. > .uery 8)9 819 Tanggal Tgl.nilai. a.keterangan. U"iutang DagangU as UKeteranganU. "iutang 8pk9 A//) 839 isaA' 4//// -ontoh lainA ele!t nim from !alonYmahasis#a #here umur N 8sele!t min8umur9 from !alonYmahasis#a9 /nion Union digunakan untuk mengabung hasil dua <ueri menjadi satu tampilan dengan menghilangkan data yang sama.&8 a( -a!ar Fr" /i)*an+ a leF* >"in d.n"/i)*an+ C -. dengan !ontoh sebagai berikutA sele!t a.*+l>*e /".8. a.n"/i)*an+.kodeDK ehingga dihasilkanA Hendra. "iutang 8pk9 A//) Hasil . U3/0/U as U5operkU . a. a. .n"/i)*an+ +r")/ -! a. %T.Kom.nilaid.tanggal. . 0"ale(0e5() 5-.uery 809 5o.tanggal.kodeDK N b.nilai8 group by nopiutang Hasil .nopiutang as U5o'efU . a.nilai as U5ilaiDKU from piutang A union sele!t a./i)*an+ "n a.immy.

$uatlah program input kodeDK 1. . juga tersedia operator Interse!t yang digunakan untuk menampilkan baris yang sama untuk dua hasil <ueri.8 as bayar from piutang a left join dkpiutang b on a. "etunjukA "ada a#alnya akan ditanyakan no. $uatlah program input pembayaran piutang. %T. $uatlah program input piutang ).piutang. a. > . () 5-. jenisDK dan nilai bayar.nopiutang. a. (atihan 0.uery 809 Tanggal /0E/0E00 /0E04E00 /0E06E00 A//0 $//0 $//) 8)9 5o'ef 3/0/ 0/0 0/) 819 5o"erk "embayaran "otongan tambahan 839 Keterangan "iutang Dagang 849 5ilaiDK 0/0/// 0///// 0/// .nopiutang N b.tgljtempo.immy. a.ika penghilangan data yang sama tidak dibutuhkan.nopiutang. ele!t a. 62 . kemudian pemakai akan menginput nomor pembayaran.nilaid.Database Lanjut dengan I$% D$) Hasil .nopiutang #here a. tanggal. maka dapat menggunakan U5I:5 ALL. sedangkan perintah differen!e akan menghasilkan baris hanya terdapat pada hasil <ueri yang pertama terhadap hasil <ueri yang kedua.nopiutang N Z group by a. +nterse t dan Differen e elain operator Union. kemudian program akan menampilkan informasi terkait dengan piutang tersebut dan sisaA'. a.nilai Hendra.Kom.tgljtempo.nilai.

dan hubungan antar entitas tersebut. "eran!angan fisik *nalisa kebutuhan Analisa kebutuhan erat kaitannya dengan analisa sistim. Transformasi model konseptual ke tabel 3. pada tahapan ini hal+hal yang dilakukan adalah sebagai berikutA 0.immy. ebagaimana siklus hidup Database. Peran angan Database "ada bagian+bagian sebelumnya kita telah membahas mengenai pemodelan database. %enentukan kebutuhan informasi dari organisasi untuk mendukung tujuan dan fungsinya. area fungsional. 1. maka selanjutnya dilakukan pengambaran &'+Diagram yang merepresentasikan entitas+entitas yang terlibat didalamnya. Untuk proses peran!angan yang melibatkan beberapa team perlu dilakukan proses integrasi *ie# untuk mengabungkan bagian yang diran!ang oleh team lain menjadi suatu kesatuan ran!angan untuk menghindari redundan!y. frekuensi. posisi staf dan tanggung ja#abnya. > . Peran angan logika $erdasarkan hasil pengumpulan data dan analisa yang telah dilakukan pada tahapan analisa kebutuhan. Integrasi Sie# 1. jenis. maka bagian ini kita akan membahas lebih lanjut mengenai peran!angan database. "eran!angan logika 0. 67 . bentuk dari operasi input dan output sistim umber utama dari informasi yang dibutukan pada tahapan ini adalah #a#an!ara dengan orang yang terlibat didalamnya.Kom. informasi. Analisa kebutuhan ). peran!angan database dimulai melalui tahapan sebagai berikutA 0. %emahami organisasi perusahaan. dokumen dan laporan yang diperloleh selama proses tersebut. ). %emspesifikasikan sistem yang akan dikembangkan terkait dengan kebutuhan data. Hendra. dan atribut+atribut untuk masing+masing entitas. %T. mengindentifikasi tujuan dan strategi perusahaan. dan proses normalisasi untuk menghilangkan berbagai anomali. "roses normalisasi 4. "emodelan konseptual ).Database Lanjut dengan I$% D$) Bab @. . "ada tahapan ini dilakukan analisa karakteristik dan kebutuhan penghasil dan pemakai data yang mana akan disimpan didalam database.

dimana untuk user tertentu hanya diperbolehkan untuk melihat bagian dari tabel maupun partisi dari data. .  Sie# dapat menyembunyikan kerumitan dari data. dan pembuatan inde= untuk kinerja pen!arian data dan peringkasan data. > . %isalkan untuk suatu in*oi!e perlu didekomposisi menjadi tabel header dan detail. suatu *ie# terdiri dari perintah . Proses normalisasi %asing+masing tabel perlu dilakukan proses normalisasi untuk menghilangkan berbagai anomali yang mungkin timbul. suatu *ie# bukan bagian dari s!hema fisik. misalnya "enjualan)/0/.  "ada D$) *ie# dapat digunakan untuk tujuan keamanan.  Sie# dapat mengabungkan dan menyederhanakan beberapa tabel kedalam suatu tabel *irtual tunggal.L yang tersimpan sebagai suatu tabel *irtual yang merupakan hasil dari . integritas domain.uery. termasuk partisi dan !lustering. a*erage. termasuk tipe data dengan memperhatikan integritas entitas.Kom. $erbeda dengan tabel biasanya didalam database relational. melakinkan bersifat dinamis. . dimana data yang besar dapat dipartisi menjadi sub+sub data sesuai dengan kronologisnya. dll9.  Sie# dapat bertindak sebagai aggregate dari tabel+tabel sebagai hasil fungsi aggregate 8sum. Peran angan Fisik "eran!angan fisik dilakukan dengan nati*e terhadap target sistim database yang digunakan.Database Lanjut dengan I$% D$) transformasi model ke tabel etelah mendapatkan suatu model yang disepakati. integritas referensial dan integritas semantik./ . -ontohA !reate *ie# piutangHendra as sele!t ] from piutang #here koderelasi N UH//0U Hendra. hasil komputasi atau pengabungan dari data didalam database.immy. "emakaian *ie# memiliki beberapa keuntungan dibandingkan dengan tabelA  Sie# dapat merepresentasikan suatu bagian dari tabel yang terdapat didalam tabel. "enjualan)/00. maka langkah selanjutnya adalah melakukan transformasi masing+masing entitas beserta dengan atributnya kedalam bentuk tabel untuk melakukan proses normalisasi. <ieA atau -abel <irtual Didalam teori database. %T.

8. =rea*e 4ie.nopiutang.UH//0U9D update piutangHendra set nilaiN0.koderelasi.nilaid. > .Kom.immy. a.nilai G 0"ale(0e5() 5-.tgljtempo. arA+in+ a( sele!t a. !ase #hen 8days8!urrentYdate9 + days8a. !ase #hen 8days8!urrentYdate9 + days8a. tgljtempo.8.0 . a.tgljtempo9 M 1/9 then a.U/0+)/+)/00U. a.Database Lanjut dengan I$% D$) Kemudian kita dapat menggunakan perintah sele!t untuk menampikan hasil dari *ie# sama seperti tabel biasanya.nilaid.nopiutang group by a.tgljtempo.nilai G 0"ale(0e5() 5-.nilaid.nilai G 0"ale(0e5() 5-.tanggal. %T.4/// #here nopiutangNUA//1UD "erintah insert dan update tersebut diatas mempengaruhi tabel piutang yang merupakan tabel dasar bagi *ie# piutangHendra. -ontohA insert into piutangHendra 8nopiutang. nilai.nilai ha4in+ a.tgljtempo9 M / and days8!urrentYdate9 + days8a.koderelasi.&8 else / end as tunggakYdiatasY6/ from piutang a left join dkpiutang b on a. a.&8 else / end as belumYjto.tgljtempo9 JN1/9 then a.&8 else / end as tunggakYdiba#ahY1/.nopiutang N b. koderelasi9 *alues 8UA//1U. dan akan mempengaruhi data pada tabel yang menjadi dasar dari *ie# tersebut. a.nilaid.tanggal. a. !ase #hen 8days8!urrentYdate9 + days8a. ele!t ] from piutangHendra /PD*-E data pada <ieA esuatu hal yang perlu anda ketahui adalah pada *ie# tertentu memungkinkan update data 8lihat 0) aturan -:(( tentang 'D$% 9 dilakukan.nilai G 0"ale(0e5() 5-.8.tgljtempo9 JN/9 then a. . a. . tanggal.&8 LM & Hendra.04////.nopiutang.8.U/0+1/+)/00U.

LoggerD import koneksidb.immy. ."repared tatementD import ja*a.uery89D tring my(ormat N PH0I+0/sP T PH)I+)/s PT PH1Ite+H1Itm+H1It\ PT PH3Ite+H3Itm+H3It\ PT PH4I04.Kom.a+e /i)*an+.rela(i2 import ja*a.s<l.L&=!eptionD import ja*a.)fPD #hile 8rs.logging.ne=t899 O ystem.util.I04.logging.prepare tatement8sele!t tring9D 'esult et rsD rs N sele!t. > .s<l.out.%yD$:penHelperD publi! !lass TampilA'Aging O publi! *oid start89 O try O "repared tatement sele!tD tring sele!t tring N Psele!t ] from A'AgingPD sele!t N %yD$:penHelper. Hendra.)f PT PH6I04.e=e!ute.) .util.uery tersebut diatas dijalankan akan menghasilkan tampilan sebagai berikutA 5opiutang Koderelasi Tanggal Tgljtempo $elum jto Tunggakan Tunggakan J 1/ hari 1/ keatas Ta /ilA$A+in+.get-onne!tion89.format8my(ormat.)f PT PH. %T.Database Lanjut dengan I$% D$) ele!t ] from ArAging .Le*elD import ja*a. .s<l.'esult etD import ja*a.>a4a /a0. .println8 tring.

!lose89D R !at!h 8 .get tring8)9.immy.999D R rs.getLogger8TampilA'Aging. rs. e=9D R R R (atihan 0. rs.getDate819.getDate839.getDouble8.!lass. .getDouble869. . $uatlah program yang dapat menampilkan kartu piutang dari nomor A' yang diberikan dengan bentuk sebagai berikutA 809 Tanggal /0E/0E00 /0E04E00 /0E06E00 A//0 $//0 $//) 8)9 5o'ef 3/0/ 0/0 0/) 819 5o"erk "embayaran 839 Keterangan "iutang Dagang "otongan tambahan 849 5ilaiDK 0/0/// 0///// 0/// Hendra.log8Le*el.L&=!eption e=9 O Logger. Tambahkan pada 0rea*eDa*a-a(eO->e0* untuk membuat *ie# A'Aging.Database Lanjut dengan I$% D$) rs. kemudian buatlah program yang dapat menampilkan daftar A'Aging.getDouble849. > . rs. null.get tring809. rs. %T. ).1 . rs. rs.get5ame899. &S&'&.Kom.

Database Lanjut dengan I$% D$)

,ui36
Q1) )uatu Die+ dibuat dengan perintah berikut ini5 C, AT 7I 1 D# A) ) L CT !ol#( !ol2( !ol@( !olE ;,OM t# 12 , !olE F #AAA 1IT2 C2 C' O4TIO/ Apa yang menjadi efek dari pernyataan C2 C' O4TIO/% A& )etiap baris yang diinsert atau diupdate melalui Die+ D# harus memenuhi kondisi dimana !olE F #AAA& B& Mulai saat ini( setiap baris yang diinsert pada tabel T# harus memenuhi kondisi dimana !olE F #AAA( tetapi baris yang ada pada tabel saat ini tidak diperiksa& C& 4ada pembuatan Die+( DB2 memeriksa data pada tabel T#( dan jika ada baris yang tidak memenuhi kondisi !olE F #AAA( pembuatan Die+ tersebut akan ditolak& D& )etiap baris yang diinsert atau diupdate melalui Die+ 7# harus memenuhi kondisi !olE F #AAA dan tidak ada baris pada tabel T# yang dapat diupdate dengan !olE G* #AAA( tetapi baris baru yang diinsert pada tabel T# dapat dengan !olE G* #AAA& Q2) Berikut ini bukanlah alasan untuk membuat Die+ pada suatu tabel% A& Membatasi akses pemakai terhadap bagian data tertentu pada tabel B& Memastikan baris yang disisipkan berada pada batasan dari definisi C& Membuat aksi sebagai hasil dari perubahan terhadap tabel D& Memberikan alternatif bagi pemakai untuk menampilkan data pada tabel Q3) )uatu aplikasi perlu untuk menyimpan gambar 34 < berukuran 8 MB pada tabel DB2( mana tipe data berikut ini yang harus digunakan pada kolom yang akan menyimpan gambar tersebut% A& <,A42IC B& BI/A,6 C& IMA< D& BLOB Q4) )uatu Die+ dibuat dengan perintah berikut ini5 C, AT 7I 1 D# A) ) L CT !ol#( !ol2( !ol@ ;,OM t# 12 , !olE F #AAA 9 'apan DB2 mengakses data dari tabel T# ke 7ie+ 7#% A& 'etika 7# dibuat B& )etiap +aktu perintah , ;, )2 7I 1 D# dieksekusi C& )etiap +aktu suatu perintah )0L dieksekusi terhadap Die+ 7# D& 2anya pertama kali +aktu perintah )0L dieksekusi terhadap Die+ 7# Q5) 3ika perintah )0L berikut dijalankan5 C, AT TABL make "makeid )MALLI/T /OT /.LL 4,IMA,6 C, AT TABL model "modelid )MALLI/T( ' 6( make 7A,C2A,"28$$9

Hendra, %T. > ,immy, .Kom.

.3

Database Lanjut dengan I$% D$)
model 7A,C2A,"28$( makeid )MALLI/T( CO/)T,AI/T !onst# ;O, I</ ' 6 "makeid$ , ; , /C ) make"makeid$ O/ D L T , )T,ICT$9 Dan pada masingCmasing tabel diisikan nilai berikut ini5 >7B6 >7B64* >7B6 """""" """""""" For) $ C8eDrolet % :oyota >5*61 >5*614* >5*61 >7B64* """"""" """"""" """""""" >ustang $ 6scort % >ali+u $ & Camry % 3ika perintah )0L berikut ini dijalankan5 D L T ;,OM make 12 , makeid * # Berapa jumlah baris yang akan terhapus% A& A B& # C& 2 D& @ Q6) 4erhatikan perintah berikut5 C, AT TABL tablea "!ol# I/T < , /OT /.LL( CO/)T,AI/T !onst# C2 C' "!ol# in "#AA( 2AA( @AA$$ Berikut ini mana yang dapat disisipkan pada TABL A % A& A B& /.LL C& #AA D& B#AAB Q7) Berikut ini yang mana aturan penghapusan pada C, AT TABL akan memperbolehkan baris pada table parent akan dihapus jika suatu baris yang tergantung ada% A& O/ D B& O/ D C& O/ D D& O/ D L L L L T T T T , )T,ICT /O ACTIO/ ) T /O 7AL. CA)CAD

Q8) Berikut ini yang bukan merupakan karakteristik dari suatu uni?ue inde-% A& )etiap kolom pada tabel dasar hanya dapat berpartisipasi disatu uni?ue inde-( tanpa memperhatikan bagaimana kolom tersebut dikelompokan "kolom yang sama tidak dapat digunakan pada banyak uni?ue inde-$ B& Agar suatu inde- dapat digunakan untuk mendukung suatu !onstraint uni?ue( dia harus didefinsikan dengan atribut ./I0. & C& )uatu inde- uni?ue tidak dapat dibuat untuk sebuah tabel yang telah terisi dengan nilai /.LL lebih dari

Hendra, %T. > ,immy, .Kom.

.4

Database Lanjut dengan I$% D$)
satu untuk kolom tersebut D& )uatu uni?ue inde- hanya dapat dibuat untuk suatu kolom nonCnullable Q9) 3ika perintah berikut ini dijalankan5 C, AT TABL employee "empid I/T /OT /.LL < / ,AT D B6 D ;A.LT A) ID /TIT6 ")TA,T 1IT2 #( I/C, M /T B6 8$( name 7A,C2A,"2A$( dept I/T C2 C' "dept B T1 / # A/D 2A$( hiredate DAT 1IT2 D ;A.LT C.,, /T DAT ( salary D CIMAL"H(2$( 4,IMA,6 ' 6"empid$( CO/)T,AI/T !st# C2 C' "6 A,"hiredate$ F 2AA: O, )alary F :A8AA$$9 Mana yang berikut ini yang perintah I/) ,T akan gagal% A& I/) B& I/) C& I/) D& I/) ,T I/TO employee 7AL. ,T I/TO employee 7AL. ,T I/TO employee 7AL. ,T I/TO employee 7AL. ) "#8( B)mithB( 8( BA#I22I2AAEB( J28AA&AA$ ) "D ;A.LT( B)mithB( 2( B#AIAHI2AA2B( KA28A&AA$ ) "2A( B)mithB( 8( /.LL( :8AAA&AA$ ) "D ;A.LT( B)mithB( #A( B##I#KI2AAEB( :A28A&AA$

Q10) Dimana tipe data berikut ini pada DB2 yang memiliki ukuran tetap% A& =ML B& BLOB C& DO.BL D& DBCLOB Q11) Berikut ini yang digunakan untuk menyatakan suatu kolom tidak akan menerima nilai null dan dapat direferensi oleh foreign key pada tabel lain% A& Che!k !onstraint B& .ni?ue !onstraint C& Default !onstraint D& Informational !onstraint Q12) Diberikan skenario berikut5 Tabel TABL # perlu untuk menyimpan nilai tertentu sampai kepada JJJJJJJ&JJJ didalam kolom COL#& )esaat setelah TABL # dipopulasikan( operasi aritmatika akan dilakukan pada data yang tersimpan pada kolom COL#& Berikut ini mana yang menjadi tipe data yang paling sesuai di DB2 untuk COL#% A& I/T < , B& , AL C& /.M ,IC"H( @$ D& D CIMAL"#A( @$ Q13) 4erhatikan perintah berikut ini5 C, AT TABL tab# "!ol# )MALLI/T /OT /.LL 4,IMA,6 ' 6( !ol2 7A,C2A,"2AA$ /OT /.LL 1IT2 D ;A.LT /O/ ( !ol@ D CIMAL"8(2$ C2 C' "!ol@ F* #AA&AA$( !olE DAT /OT /.LL 1IT2 D ;A.LT$

Hendra, %T. > ,immy, .Kom.

.6

> ..oreign key D& Composite key Q15) Berikut ini mana yang tidak benar tentang s!hema% A& 3ika suatu nama s!hema tidak ditentukan( baik pada penyebutan objek database maupun pemakaian perintah ) T C. . .ni?ue key B& 4rimary key C& .. AT TABL gagal% A& COL# B& COL2 C& COL@ D& COLE Q14) 3enis key yang mana didefinisikan pada tabel anak untuk mengimplementasikan suatu referential !onstraint% A& .Database Lanjut dengan I$% D$) Definisi yang manakah yang menyebabkan perintah C. .immy.. %T. /T )C2 MA akan dipertahankan +alaupun database diaktifkan ulang C& )uatu s!hema memungkinkan pembuatan banyak objek database tanpa mengalami bentrokan pada namespa!e D& 'etika objek database dibuat mereka se!ara impli!it maupun ekspli!it dimasukan kedalam s!hema Q16) Buatlah aplikasi pengelolaan ata piutang! "ulai ari pe"buatan atabase! ta"bah! e it! hapus untuk "asing#"asing tabel relasi! ko e$%! piutang an pe"ba&aran piutang! sa"pai kepa a pencetakan '('ging) Hendra. /T )C2 MA( id otorisasi sesi pemakai yang aktif digunakan sebagai default B& /ilai yang diberikan pada register khusus C...Kom.

. ataupun baris dari tabel+tabel yang berbeda. eorang D$A menentukan ukuran a#al dari data file yang membentuk database. kinerja database dipengaruhi oleh dua hal. .Kom. uatu datafile dapat mengandung baris dari satu tabel tunggal. D$% menjalankan <uery tersebut 3. Untuk mendapatkan ke!epatan yang terbaik dari suatu sistim membutuhkan pendekatan holistik dari hal tersebut diatas. sebagai !ontoh jika lebih banyak ruang yang dibutuhkan.2 . ketersediaan memori utama. > . uatu database enterprise biasanya terdiri dari beberapa data file. alangkah baiknya kita memahami dasar bagaimana penangangan re<uest dari klien ditangani oleh D$% adalah sebagai berikutA • emua data didalam suatu database tersimpan didalam data file. "ada bagian ini kita akan lebih memfokuskan pada peran!angan database yang baik dan efisien. ke!epatan IE: dan jaringan. lingkungan D$% harus dikonfigurasikan dengan baik untuk menja#ab permintaan klien se!epat mungkin dengan batasan resou!es yang tersedia dan dalam hal ini kita berurusan dengan D$% perfoman!e tuning. Apa yang dimaksud dengan suatu ran!angan database yang baik dan efisienZ Dari sudut pandang perfoman!e tuning. Perfomance tun n! alah satu dari tujuan utama database adalah menyediakan #aktu yang tepat untuk menja#ab pemakai. Untuk memahami perfoman!e tuning.L yang mengembalikan ja#aban yang benar dengan jangka #aktu yang pendek. D$% mengirim himpunan data yang dihasilkan kepada aplikasi klien. "emakai mengharapkan <uery mereka mengembalikan hasil se!epat mungkin.immy. %T.uery tersebut dikirim ke ser*er D$% 1.L perfoman!e tuning. "ada le*el ran!angan. dalam hal ini kita berurusan dengan . . ran!angan database harus memastikan integritas dan kinerja yang baik dari database. Aplikasi klien membuat suatu <uery ). sehingga semua hal tersebut diatas perlu diperiksa untuk memastikan masing+masing bekerja pada tingkatan optimal berdasarkan sumber daya yang tersedia untuk meminimalkan terjadinya bottlene!ks. salah satunya adalah hard#are dari sistim yang digunakan seperti kekuatan -"U.Database Lanjut dengan I$% D$) Bab 9. pada sisi klien bertujuan menghasilkan perintah . dan terakhir adalah ran!angan dari database. yaitu pada sisi klien dan sisi ser*er. #alaupun sebenarnya datafile dapat se!ara otomatis berkembang menurut suatu in!rement yang telah ditentukan sebelumnya yang dikenal sebagai e=tends. "emakai berinteraksi dengan D$% menggunakan <uery untuk menghasilkan informasi dengan urutan kerja sebagai berikutA 0. kemudian komponen berikutnya adalah sistim operasi dan aplikasi klien. maka datafile Hendra. "ada sisi ser*er. bagaimana anda bisa tahu bah#a kinerja dari suatu database adalah baikZ Faktu yang diperlukan oleh <uery untuk untuk mengembalikan suatu hasil tergantung kepada banyak faktor.

%isalkan anda memiliki suatu system table spa!e yang menyimpan data dis!tionary dari tabel. suatu table spa!e data user yang menyimpan tabel yang dibuat oleh userD suatu table spa!e inde= yang menyimpan semua indeksD dan suatu table spa!e temporary yang melakukan proses pengurutan. .Database Lanjut dengan I$% D$) diperbesar dalam ukuran 0/K$ ataupun 0/%$. D$% mengeluarkan IE: re<uest dan menunggu ja#aban. D$% se!ara otomatis membuat suatu himpunan table spa!e yang minimal. Untuk bekerja dengan data. • • • • • Data files biasanya dikelompokan didalam File +r")/ atau ta-le (/a0e(.L !a!he atau pro!edure !a!he adalah sesuatu yang berbagi.L yang paling terakhir dieksekusi atau "LE . dan fungsi.immy. Data !a!he atau buffer !a!he adalah sesuatu yang berbagi. Data !a!he juga men+ !a!he !atalog sistim dan isi dari indeks. pengelompokan sementera.7 Hendra. etiap kali anda membuat suatu database baru. Untuk memindahkan data dari penyimpanan data permanen 8data files9 ke 'A% 8data !a!he9. %T. ukuran blok tergantung pada sistim . D$% harus mengambil data dari penyimpanan data permanen dan menempatkannya ke 'A%. termasuk trigger. Data !a!he adalah data yang diba!a dari data files disimpan setelah data tersebut diba!a ataupun sebelum file tersebut ditulis ke data files database. . dan permintaan tersebut dalam ukuran blok fisik media yang dapat terdiri dari banyak baris dari media permanen ke memori.Kom. > . !adangan area memori yang menyimpan perintah . !adangan area memori yang menyimpan data blok yang paling terakhir diakses ke 'A%. uatu table spa!es atau file group adalah pengelompokan se!ara logika dari beberapa data files yang mana menyimpan data dengan karakteristik yang sama.L pro!edure. .

63K bahkan lebih besar.immy.Kom. listener mele#atkan permintaan tersebut kepada user pro!ess yang sesuai. 2/ . termasuk disk page. adalah pro!ess yang mendengar kepada permintaan klien dan menangani proses .Database Lanjut dengan I$% D$) operasi. Table A!!ess 8ro# id9. Lo!k manager. %T. dari baris satu sampai terakhir 8paling lambat9 ). D$% membuat proses user untuk menangani masing+masing sesi klien. Listener. sehingga tidak ada operasi IE: hardisk.L re<uest. proses s!heduler mengatur konkurensi eksekusi dari .L re<uest.L untuk mengumpulkan statisti!s seperti prosedur 'U5 TAT pada D$). tidak perlu men!ari 1. anda akan diberikan satu user pro!ess. User. Database statisti!s digunakan D$% untuk membuat keputusan kritikal bagaimana meningkatkan efisiensi didalam memproses <uery. karena D$% tidak berlu menunggu hardisk untuk mendapatkan data tersebut. 06K. memba!a file indeks untuk mendapatkan ro# id dan Hendra. 2K. > . memba!a satu baris pada tabel se!ara langsung menggunakan nomor ro# id 8paling !epat9. karena IE: merupakan memiliki perfoman!e yang paling rendah didalam sistim database. dan kemudian dianalisa oleh <uery optimiVer untuk men!ari !ara yang paling efisien untuk mendapatkan data. pro!ess yang mengatur semua lo!k yang ditempatkan pada objek database. !heduler. memba!a keseluruhan tabel se!ara berurutan. Ketika anda melakukan login ke D$% . Inde= !an 8'ange9. 'en!ana akses dapat melakukan berbagai operasi sebagai berikutA 0. • :ptimisasi melalui transformasi menjadi s<l <uery yang lebih efisien • %empersiapkan eksekusi dengan menentukan ren!ana akses yang paling efisien. sesaat suatu permintaan diterima. misalkan *endor database mendukung perintah A5AL\_& pada . uatu perintah <uery yang diberikan akan di parse menjadi bagian+bagian yang lebih ke!il. Table !an 8full9. Database statisti!s dapat dikumpulkan oleh D$A atau se!ara otomatis oleh D$% . 1)K. . • • • • • • Komponen lainnya yang memiliki peran penting didalam optimalisasi <uery adalah database statisti!s. adapun langkah pada <uery parser adalah sebagai berikutA • Salidasi kebenaran sintak • Salidasi kebenaran nama tabel dan kolom terhadap data di!tionary • Salidasi kebenaran hak pemakai • Analisa dan dekomposisi menjadi komponen atomi!. "ada umumnya aktifitas performan!e+tuning terfokus pada meminimalkan operasi IE:. dapat berupa 3K. $ekerja dengan data yang berada pada data !a!he adalah berkali+kali lebih !epat dari pada bekerja dengan data didalam data files.

pengurutan. . . memba!a dan membandingkan sekelompok dari nilai dengan kelompok nilai lainnya 8lambat9 %erge 8untuk operasi join9. uatu inde= s!an adalah lebih efisien dibandingkan dengan table s!an. elanjutnya data diurut. suatu algoritma hash digunakan untuk membuat nilai hash dari kolom kun!i. digunakan untuk aplikasi data #arehouse dalam tabel yang memiliki banyak baris dengan nilai kolom yang berulang banyak kali.. 4. maka dilakukan eksekusi. "ohon inde= disimpan terpisah dari data. digunakan ketika tabel memiliki uni<ue inde= pada kolom. 8lebih !epat dari pada Table !an9 Inde= A!!ess 8uni<ue9. !ara konseptual suatu inde= menyerupai indeks pada buku. +nde2 dan &ptimisasi . Inde= $+tree digunakan pada tabel yang memiliki perulangan nilai yang relatif sedikit. $+tree inde= adalah suatu struktur data berurut yang diatur dari atas keba#ah.D$% dapat saja menggunakan table spa!e sementara untuk menyimpand ata sementara. "eningkatan ke!epatan dapat terjadi karena inde= adalah suatu himpuan nilai+nilai yang mengandung inde= key dan pointer yang berupa ro# id terhadap tabel sebenarnya. 5ested Loop 8untuk operasi join9. dikelompokan. ini merupakan default untuk kebanyakan inde= yang digunakan didalam database. • $+tree inde=.Kom. Daun pada le*el lebih rendah dari inde= $+tree mengandung pointer kepada ro# id yang sebenarnya.enis inde= ini bagus untuk operasi pen!arian yang sederhana dan !epat. pada tahapan ini dilakukan pengun!ian jika perlu untuk mendapatkan data yang akan diakses dari data file dan ditempatkan pada data !a!he. etelah ditentukan akses plan.Database Lanjut dengan I$% D$) kemudian mnelakukan Table A!!ess. • $itmap inde=. > .immy. maka dapat dilihat bah#a suatu inde= memiliki peran penting untuk memper!epat akses data. diaggregasi 8jika perlu9 untuk kemudian dikembalikan ke klien. dan aggregasi dan bahkan operasi pengabungan 8join9. Kebanyakan D$% mengimplementasikan inde= dari salah satu struktur data sebagai berikutA • Hash inde=. karena mereka memfasilitasi pen!arian. . memngabungkan dua kelompok data 8lambat9 ort. Inde= $+tree adalah ?self+balan!ed@ yang mana berarti mengambil jumlah akses yang sama untuk men!ari suatu barid didalam inde=. dalam hal ini database ser*er berkoordinasi dengan klien untuk memindahkan baris+baris yang dihasilkan se!ara bertahap.ika kita memperhatikan rangkaian eksekusi terhadap suatu <uery. 20 . 6. $itmap indeks menggunakan tempat yang lebih ke!il dibandingkan dengan inde= $+tree. nilai ini menunjuk kepada suatu daftar di hash table yang mana merupakan titik balik ke ro# id. %engurut kelompok data 8lambat9 3.uer% . Hendra. %T.

Disamping keunggulan pemakaian inde=. • Ketika kolom yang diinde= mun!ul pada kolom C':U" $\ atau :'D&' $\ !lause. update ataupun delete yang terkait dengan kolom yang diinde=.Kom.Database Lanjut dengan I$% D$) $erdasarkan karakteristik tersebut diatas. juga memiliki beberapa konsekuensi sepertiA • Inde= membutuhkan tempat penyimpanan tambahan • ketika anda melakukan insert.immy. D$% perlu melakukan update terhadap inde=. Pemakaian +nde2 Inde= merupakan teknik yang paling penting didalam optimaliasi kinerja . hal ini tentu saja mempengaruhi operasi modifikasi data. > . %T. Tetapi aturan jempol yang dapat digunajan adalah senantiasa melakukan inde= terhadap kolom yang sering digunakan sebagai kriteria pada <uery untuk mendapatkan data.L. • Ketika fungsi %A[ atau %I5 digunakan pada kolom yang diinde=. Hendra. terutama untuk tabel yang memiliki banyak data. key diketahui ketika suatu inde= digunakan dengan aturan sebagai berikutA • Ketika kolom yang diinde= mun!ul pada kriteria FH&'& atau HASI5C !lause. seorang peran!ang database dapat menentukan jenis indeks yang digunakan. 2) . .

Partitioning "artitioning adalah kebalikan dari !lustering. sedangkan se!ara *ertikal dilakukan dengan memisahkan kolom pada tabel menjadi Hendra. . 21 .Database Lanjut dengan I$% D$) $lustering +nde2 uatu !lustering inde= menentukan bagaimana baris se!ara fisik diurut pada table spa!e. sehingga D$% tidak perlu memba!a banyak data pada satu saat. karena baris pada suatu table tersebar pada banyak disk page. Falaupun suatu tabel dapat memiliki beberapa inde=. se!ara horiVontal dilakukan dengan memisah baris antar tabel 8!ontoh pemisahan data transaksi untuk tahun yang berbeda9. yang melakukan pemisahan tabel besar ke tabel yang lebih ke!il. sehingga untuk memba!a data tahun tertentu. dapat dilakukan pada tabel untuk tahun.Kom. • %enyebabkan operasi perubahan data terkait dengan kolom yang diinde= menjadi lambat. • %enyebabkan operasi insert data menjadi lambat. misalnya memisahkan data berdasarkan tahun transaksi. !ontohA !reate inde= piutangYi= on piutang8koderelasi9 !luster Falaupun !lustering inde= memiliki keuntungan. %T. "embuatan inde= !lustering dengan menambahkan -LU T&' !lause. Ada dua !ara melakukan partitioning yaitu se!ara horiVontal dan *ertikal. suatu perintah I5 &'T menyebabkan D$) menyisip re!ord sedekat mungkin dengan urutan nilai inde= mereka. -lustering inde= menghasilkan kinerja yang signifikan didalam operasi+operasi tertentu yang melibatkan banyak re!ord. operasi yang dapat mengambil manfaat dari !lustering inde= adalah operasi pengelompokan. Ketika suatu tabel memiliki !lustering inde=. dan perbandingan diluar dari sama. > . pengurutan. tetapi hanya satu inde= yang dapat !lustering. tetapi juga memiliki kekurangan yaituA • :perasi yang membutuhkan table s!an.immy.

. > .L didalam bentuk grafik. E) P7-:4:45.G6(tanggal) ( S:7-:4. dan menghubungkan tabel+tabel tersebut dengan primary key.Kom. untuk keperluan tersebut kolom+kolom yang tidak rutin digunakan dapat dipisahkan ke suatu tabel baru dengan menggunakan primary key yang sama dan membentuk hubungan one+to+one.F -7.16 'iutang (no'iutang Darc8ar( #). %isalkan tabel profile karya#an yang dapat terdiri dari banyak kolom.G H / /$##IH 6. se!ara otomatis sistim akan melakukan partisi database setiap 1 bulan dengan skema sebagai berikutA * ess plan pada DB! A!!ess plan menspesifikasikan suatu urutan dari operasi pengaksesan data. inde= atau kolom yang terpilih. uatu ren!ana akses memperbolehkan anda untuk melihat statistik untuk tabel. data partisi se!ara horiVontal dapat dilakukan se!ara otomatis oleh sistim. -ontohA db)sampl +dbpath dA Hendra.immy. "ada D$) *ersi &nterprise. 23 . .:(S ) "embuatan tabel tersebut diatas. dan ditentukan pada saat pembuatan suatu tabel C-67:6 :7. %T.G H $/% /$##IH 6J6-F % >5.*4. Dengan menggunakan Sisual &=plain anda dapat melihat ren!ana akses untuk suatu . dan tentu saja tidak semua kolom yang ada se!ara rutin digunakan.Database Lanjut dengan I$% D$) beberapa tabel.

Kom.uebe!UU. A!!ess plan tanpa inde= !reate inde= salesYregion on sales8region9 sele!t ] from sales #here region N U. %T. .uebe!U Cambar 7. > . yaitu untuk kondisi pertama sebelum pembuatan inde=.Database Lanjut dengan I$% D$) !onne!t to sample sele!t ] from sales #here region N U. maka filter data dilakukan se!ara T$ !an 8Table Hendra. 24 .) terlihat ada perbedaan a!!ess plan dari perintah . dengan mengetikan ele!t statement.L yang sama yaitu Usele!t ] from sales #here region N U.). A!!ess plan dengan inde= A!!ess plan dapat dilihat dengan menggunakan D$) !ommand editor.0.immy.0 dan Cambar 7. dan menjalankannya dengan A &=e!ute and A!!ess "lan A!!ess "lan "ada Cambar 7.uebe!U Cambar 7.

Database Lanjut dengan I$% D$) !an9, dengan setelah adanya inde=, maka proses filter dilakuakn se!ara I[ !an 8Inde= !an9, baru data di ambil 8(&T-H9 dari tabel sales. Analisa terhadap a!!ess plan adalah penting untuk melakukan optimalisasi terhadap perintah ;L yang mengalami isu perfoman!e.

-"+;;E"
ebuah trigger merupakan suatu himpunan dari aksi yang otomatis dijalankan sebagai respon terhadap kejadian pada operasi I5 &'T, U"DAT& atau D&L&T& pada suatu tabel tertentu. Ketika suatu operasi ;L dijalankan, trigger tersebut akan diaktifkan. Trigger tersebut dapat diaktikan sebelum atau sesudah operasi ;L dan berjalan didalam transaksi perintah yang membangkitkannya. Anda dapat menggunakan trigger sebelum operasi ;L 8update atau insert9 untuk keperluan sebagai berikutA  Untuk menge!ek atau mengubah nilai sebelum mereka benar+benar diupdate atau disisipkan pada database.  %enjalankan operasi non+database yang dikodekan didalam user+defined fun!tion. edangkan trigger yang dijalankan setelah operasi ;L 8update, insert atau delete9 untuk keperluan sebagai berikutA  Untuk meng+update data pada tabel+tabel lain. Kemampuan ini berguna untuk menangani relationship antar data atau men!atat informasi jejak rekam audit.  Untuk menge!ek data didalam tabel atau didalam tabel lainnya. Kemampuan ini adalah berguna untuk memastikan integritas data ketika referential integrity !onstraint sulit diterapkan, atau ketika !he!k !onstraint pada tabel sulit diterapkan.  %enjalankan operasi non+database yang dikodekan didalam user+defined fun!tion. Kemampuan ini berguna ketika membuat suatu peringatan atau informasi update diluar database. Anda dapat juga mendapatkan beberapa keuntungan dari triggerA 0. #en+e -an+an a/li,a(i !an+ le-ih 0e/a*, dimana trigger tersimpan didalam database, dan tersedia bagi semua aplikasi, sehingga anda tidak perlu melakukan pengkodean pada fungsi pada masing+masing aplikasi. ). #e -erla,),an -)(ine(( r)le (e0ara en!el)r)h, sekali trigger terdefinisi, akan berlaku terhadap semua aplikasi yang menggunakan tabelE*ie# yang mengandung trigger tersebut. 1. #e eliharaan !an+ le-ih Hendra, %T. > ,immy, .Kom. )dah, setiap perubahan !ukup dilakukan sekali pada 26

Database Lanjut dengan I$% D$) trigger dari masing mengubah pada masing+masing aplikasi

Pembuatan trigger
Ketika anda membuat sebuah trigger, anda harus mendeklarasikan atribut dan prilaku sebagai berikutA  5ama dari trigger  5ama dari tabel yang menjadi subje!t trigger  Faktu akti*asi dari trigger 8$&(:'& atau A(T&' operasi9.  Kejadian pemi!u trigger 8I5 &'T, D&L&T&, atau U"DAT&9.  5ama *ariabel untuk transisi nilai lama, jika ada 8untuk insert tidak ada nilai lama9  5ama *ariabel untuk transisi nilai baru, jika ada 8untuk delete tidak ada nilai baru9  5ama *ariabel untuk transisi tabel nilai lama, jika ada 8hanya untuk A(T&' atau I5 T&AD :(9  5ama *ariabel untuk transisi tabel nilai baru, jika ada 8hanya untuk A(T&' atau I5 T&AD :(9  Tingkat kedetailan perlakukan trigger 8(:' &A-H TAT&%&5T atau (:' &A-H ':F9.  Aksi dari trigger 8terdiri dari aksi kondisi dan perintah ;L yang dipi!u9  ,ika kejadian pemi!u adalah U"DAT&, maka didaftarkan kolom yang memi!u trigger. 8FH&5 !ondition tidak tersedia untuk I5 T&AD :(9 KeteranganA I5 T&AD :( Digunakan untuk trigger pada *ie#, dan hanya diperbolehkan satu trigger untuk satu *ie#. (:' &A-H ':F Aksi trigger untuk setiap baris pada tabel yang dipengaruhi oleh perintah operasi yang membangkitkan trigger. (:' &A-H TAT&%&5T Aksi hanya dilakukan sekali untuk satu operasi perintah yang membangkitkan trigger triggered+a!tion Aksi+aksi yang akan dilakukan oleh trigger, suatu aksi terdiri dari perintah ;L dan kondisi yang bersifat opsional. FH&5 8search!condition9 "emeriksaan kondisi yang bernilai true atau false untuk menentukan apakah suatu aksi trigger dijalankan atau tidak. -ontohA

Hendra, %T. > ,immy, .Kom.

2.

Database Lanjut dengan I$% D$) "ada !ontoh ini akan dibuat dua trigger before insert, dan before update yang akan melakukan perubahan pada nilai kolom !reaby, !reatime, modiby dan moditime, untuk jelasnya perhatian perintah ;L pada trigger. !onne!t to piutang alter table relasi add !olumn !reaby *ar!har84/9 alter table relasi add !olumn !reatime timestamp alter table relasi add !olumn modiby *ar!har84/9 alter table relasi add !olumn moditime timestamp 0rea*e *ri++er rela(iAin(er* -eF"re in(er* on relasi referen!ing ne# as baru for ea!h ro# mode db)s<l .hen 5'C'8 begin set baru.!reaby N !urrentYuser, baru.!reatime N !urrentYtimestampD end` 0rea*e *ri++er rela(iA)/da*e -eF"re )/da*e on relasi referen!ing ne# as baru old as lama for ea!h ro# mode db)s<l .hen 5'C'8 begin set baru.modiby N !urrentYuser, baru.moditime N !urrentYtimestampD end` "ada !ontoh ini akan direkam setiap aktifitas penambahan pemakai baru, maupun perubahan data pada tabel pemakai pada suatu tabel pemakaiYlog 0rea*e *a-le a0*i4i*!Al"+ 5 "di-! 4ar0har5;&8, moditime timestamp, keterangan *ar!har80//99 0rea*e *ri++er rela(iAin(er*Aa)di* after insert on relasi referen!ing ne# as baru for ea!h ro# mode db)s<l Hendra, %T. > ,immy, .Kom. 22

moditime.4///U &T %& AC&YT&[TNU'elasi bla!klistQUD end Hendra.here .Kom.baru. lama.hen 5 'C'8 begin atomi! insert into a!ti*ityYlog8modiby.Umenjadi U9. keterangan9 *alues 8!urrentYuser.li(* before insert on piutang referen!ing ne# as baru for ea!h ro# mode db)s<l .L TAT& U. !urrentYtimestamp."derela(iC-ar). keterangan9 *alues 8!urrentYuser.hen 55(ele0* -la0. moditime.li(* Fr" rela(i . alter table relasi add !olumn bla!klist integer default / 0rea*e *ri++er rela(iA0he0.koderelasi99D end "ada !ontoh berikut akan dilakukan penge!ekan integritas konstraint dimana piutang baru tidak dapat diberikan untuk relasi yang telah dibla!klist. keterangan9 *alues 8!urrentYuser. > . baru.Database Lanjut dengan I$% D$) . !urrentYtimestamp. !urrentYtimestamp. moditime. %T.."derela(i8C'8 begin IC5AL .A-la0. !on!at8Utambah relasiU.immy.hen 5 'C'8 begin atomi! insert into a!ti*ityYlog8modiby. !on!at8Uhapus relasiU. .koderelasi99D end 0rea*e *ri++er rela(iA)/da*eAa)di* after update on relasi referen!ing ne# as baru old as lama for ea!h ro# mode db)s<l .hen 5 'C'8 begin atomi! insert into a!ti*ityYlog8modiby. 27 . !on!at8!on!at8!on!at8Uperbaiki relasiU.koderelasi99D end 0rea*e *ri++er rela(iAdele*eAa)di* after update on relasi referen!ing old as lama for ea!h ro# mode db)s<l .lama.koderelasi9.

%T.nilai.4///U &T %& AC&YT&[TNU'elasi o*erdueQUD end ifD endN Prioritas -rigger . $uatlah trigger yang se!ara otomatis yang dapat mengupdate masing+masing kolom berdasarkan aktifitas dari pemakai 8insert. piutang. 7/ . 3.nilaidk9. $uatlah sebuah tabel A!ti*ityYlog yang berisi kolom modiby *ar!har84/9. Informasi timestamp akan se!ara otomatis diberikan berdasarkan #aktu pembuatan trigger.koderelasi and tgljtempo J !urrentYdate group by a. $uatlah trigger yang membatasi pemberiaan piutang baru untuk seorang relasi yang telah di bla!klist.A"4erd)e before insert on piutang referen!ing ne# as baru for ea!h ro# mode db)s<l #hen 80N09 -e+in if 8sele!t !oales!e 8sum8nilai+bayar9.Database Lanjut dengan I$% D$) $erikut ini adalah !ontoh penge!ekan o*erdue pada setiap pembuatan piutang baru. Ujilah masing+masing trigger tersebut diatas dengan melakukan proses penambahan ataupun perubahan data pada masing+masing tabel. maka urutan eksekusi dari trigger adalah berdasarkan timestamp dari trigger tersebut. 6. 1. > . a. (atihan 0. atau update9. moditime timestamp. kodeDK. keterangan *ar!har80//9. "etunjukA "engetikan trigger dapat menggunakan db) !ommand editor 8db)!e9. Hendra.ika sebuah tabel memiliki beberapa trigger. a. a. Tambahkan kolom berikut ini !reatby *ar!har84/9. piutang.nopiutang #here a. )./9 as bayar from piutang a left join dkpiutang b on a.tgljtempo.koderelasi N baru. !oales!e8sum8b. dan Dkpiutang. 4. modiby *ar!har84/9. moditime pada tabel relasi.nopiutang. dan Dk"iutang agar dapat di!atat aktifitas yang dilakukan masing+masing user terkait dengan tabel tersebut./9 from 8sele!t a. !reatime.Kom.L TAT& U. kodeDK.nilai9 9 M / then IC5AL . $uatlah trigger pada masing+masing tabel relasi.immy.nopiutang.nopiutang N b. 0rea*e *ri++er /i)*an+A0he0. .

70 . dan pilih database piutang.Database Lanjut dengan I$% D$) klik pada add. > .Kom. .immy. %T. dan termination diganti menjadi `. kemudian statement Hendra.

uatu s!alar+fun!tion dapat dibuat dengan . %I5. %T. . dalam hal ini disebut sebagai e=ternal fun!tion • Ta-le F)n0*i"n memiliki satu atau lebih nilai sebagai parameter. kemudian fungsi dapat juga diklasifikasikan sebagai A • ="l) nGF)n0*i"n yang merupakan koleksi dari nilai+nilai kolom seperti fungsi U%. fungsi pada D$) dapat diklasifikasikan sebagai fungsi build+in.L "ro!edural Language atau dengan bahasa pemrograman lainnya. misalnya perusahaan anda memiliki formula khusus untuk perhitungan.a*a. misalnya anda membutuhkan proses untuk kon*ersi format pengkodean internal menjadi format eksternal untuk pertukaran data dengan pihak luar.L yang rumit. fungsi ini mengembalikan suatu tabel dan digunakan pada bagian (':%. "emakai dapat membuat sendiri (0alarGF)n0*i"n sebagai UD(. Hendra.L "EL dapat menggunakan perintah -'&AT& (U5-TI:5. Pemanfaatan UDF Kadang+kadang fungsi bantu built+in yang tersedia tidak dapat memenuhi kebutuhan. dan %A[ yang digunakan pada perintah &L&-T. • Kalkulasi tertentu. (ungsi ini mengembalikan suatu nilai s!alar. -TT.L menjadi sederhana. > . Pembuatan UDF Untuk pembuatan sour!ed UD( dengan menggunakan . edangkan untuk pembuatan UD( e=ternal dapat menggunakan bahasa -. emua table+fun!tion adalah e=ternal fun!tion atau dengan kata lain dibuat dengan menggunakan bahasa tingkat tinggi. • %igrasi dari D$% lainnya. "ada prinsipnya D$) telah menyediakan berbagai -)il*Gin F)n0*i"n.L. 7) . dan user defined fun!tion 8UD(9. dan . fungsi ini dapat digunakan pada perintah &L&-T maupun pada bagian FH&'&. sehingga diperlukan UD( untuk keperluan sebagai berikutA • %embuat transformasi khusus. D$) tidak menyediakan built+in table+fun!tion. (ungsi jenis ini tidak dapat dibuat sendiri oleh pemakai • S0alarGF)n0*i"n yang memiliki input satu atau lebih nilai sebagai parameter. -obol.Kom.Database Lanjut dengan I$% D$) Bab 1BC /DF User Defined (un!tion 8UD(9 memungkinkan user untuk menuliskan fungsi mereka sendiri dan dapat digunakan didalam perintah .immy. e!ara umum. sehingga pemakaiannya dalam . dan tidak dapat digunakan pada bagian FH&'&. misalnya anda melakukan migrasi dari D$% lainnya dan terdapat fungsi yang tidak tersedia di D$) • %enyembunyikan logika .

hen *+l i( n)ll *hen null el(e !ase #hen tgl MN !urrentYdate then 0 else / end end2 end 0rea*e F)n0*i"n >*"'. .5*+l da*e8 returns integer language s<l null !all begin return 0a(e . -ontohA 0rea*e F)n0*i"n -l >*"5*+l da*e8 returns integer language s<l null !all -e+in return 0a(e .hen *+l i( n)ll *hen null el(e !ase #hen days8!urrentYdate9 + days8tgl9 JN 04 then 0 else / end end2 Hendra. > . jika lebih ke!il maka akan dikembalikan pesan Wjatuh tempoX dan sebaliknya dikembalikan pesan Wbelum jatuh tempo.Kom. 71 .Database Lanjut dengan I$% D$) Pembuatan UDF dengan SQL PL $erikut ini akan diberikan suatu UD( yang memiliki fungsi untuk menge!ek tanggal yang dile#atkan pada fungsi dan membandingkan dengan tanggal hari ini. %T.immy.

a.koderelasi. !ase #hen blmjto8a.(d<&5*+l da*e8 returns integer language s<l null !all -e+in return 0a(e .Kom. arA+in+UD%' a( sele!t a.hen *+l i( n)ll *hen null el(e !ase #hen days8!urrentYdate9 + days8tgl9 M 1/ then 0 else / end end2 end ehingga perintah pada *ie# A'Aging menjadi sebagai berikutA =rea*e 4ie.Database Lanjut dengan I$% D$) end 0rea*e F)n0*i"n >*"'. a.nopiutang. > .immy. . 73 . a.hen *+l i( n)ll *hen null el(e !ase #hen days8!urrentYdate9 + days8tgl9 M 04 and days8!urrentYdate9 + days8tgl9 JN 1/ then 0 else / end end2 end 0rea*e F)n0*i"n >*"dia*a(<&5*+l da*e8 returns integer language s<l null !all -e+in return 0a(e . %T.tanggal.tgljtempo.tgljtempo9N0 then Hendra.

a.nilai + !oales!e8sum8b. .nilai + !oales!e8sum8b. !ase #hen jto04sd1/8a.nilai.Kom.nopiutang.nilaidk9.nopiutang N b.nilaidk9. !ase #hen jto048a. a.nopiutang.)9 language s<l null !all -e+in return !ase #hen pkoderelasi is null then / else 8sele!t sum8nilai+bayar9 from 8sele!t a./9 as bayar from piutang a left join dkpiutang b on a.nopiutang #here koderelasi N pkoderelasi group by a.nopiutang.tgljtempo./9 else / end as tunggak04sd1/. !ase #hen jtodiatas1/8a./9 else / end as belumYjto.nopiutang group by a. 0rea*e F)n0*i"n (i(aA/i)*an+5/.tgljtempo. !oales!e8sum8b.nilai $erikut ini adalah UD( yang digunakan untuk mengembalikan nilai sisa A' berdasarkan koderelasi yang diberikan.nilai9 9 Hendra.koderelasi.tgljtempo9 N 0 then a.nilai + !oales!e8sum8b. a.Database Lanjut dengan I$% D$) a. %T. 74 .nilaidk9.nopiutang N b.tanggal.tgljtempo9 N 0 then a./9 else / end as tunggakdiatas1/ from piutang a left join dkpiutang b on a.tgljtempo9 N 0 then a. > ."derela(i 4ar0har5<&88 returns de!imal804.nilaidk9./9 else / end as tunggakYdiba#ahY1/. a. a. a.nilai + !oales!e8sum8b.nilaidk9.immy. a.

76 ./9 as bayar from piutang a left join dkpiutang b on a. a.nilai9 9 end2 end Pembuatan e2ternal /DF dengan .a*a -lass Library."derela(i 4ar0har5<&88 returns de!imal804. Hendra.Kom.Database Lanjut dengan I$% D$) end2 end $erikut ini adalah UD( yang digunakan untuk mengembalikan nilai o*erdue A' berdasarkan koderelasi yang diberikan.ja*a. > .nopiutang #here a.nopiutang N b.ava "embuatan UD( dengan "LE .immy. a.koderelasi N pkoderelasi and tgljtempo J !urrentYdate group by a. "embuatan UD( dengan ja*a pada lingkungan 5et$eans dilakukan dengan membuat suatu proje!t baru 8misalkan %yUD(9 dengan type . dan didalamnya dideklarasikan stati! fun!+ tion dari masing+masing UD( yang akan dibuat. !oales!e8sum8b. 0rea*e F)n0*i"n "4erd)eA/i)*an+5/. D$) memberikan kesempatan kepada pengembang untuk membuat fungsi e=ternal dengan menggunakan ja*a.nilaidk9.L memiliki keterbatasan pada fungsi+fungsi yang dapat diturunkan dari fungsi internal D$).nopiutang.nopiutang.nilai. a. %T.)9 language s<l null !all -e+in return !ase #hen 8pkoderelasi is null9 then / else 8sele!t !oales!e 8sum8nilai+bayar99 from 8sele!t a.tgljtempo. . kemudian mem+ buat suatu !lass dengan nama %yUD(.

%T.get$ytes899D tring$uffer sb N ne# tring$uffer89D for 8int i N /D i J array.substring80.digest8te=t. > . dibuat UD( yang dideklarasikan sebagab pulbi! stati! JtypeM dengan !ontoh sebagai berikutA /)-li0 0la(( M!UD% 3 publi! stati! tring %D48 tring te=t9 O try O ja*a. 7.5o u!hAlgorithm&=!eption e9 O R return nullD R 9 elanjutnya proje!t di build menjadi %yUD(. .se!urity.se!urity.se!urity.immy.append8Integer.Kom.jar ke folder ?HD$)"ATHHs<llibGfun!tion@ 8dalam hal ini adalah -AG"rogram filesGI$%Gs<llibGfun!tion9 Hendra.to tring89D R !at!h 8ja*a.getInstan!e8P%D4P9D byteKL array N md.toHe= tring88arrayKiL > /=((9 ^ /=0//9.jar.%essageDigest md N ja*a. 199D R return sb.lengthD TTi9 O sb.Database Lanjut dengan I$% D$) Dan pada !lass %yUD(.%essageDigest. Duplikasi file %yUD(. .

Database Lanjut dengan I$% D$) elanjutnya &ksternal UD( tersebut perlu didaftarkan pada database D$) yang akan memanfaatkan fungsi tersebut dengan perintahA -'&AT& (U5-TI:5 %D4 8 te=t SA'-HA'83///9 9 '&TU'5 *ar!har83///9 (&5-&D SA'IA5T 5: . jto04sd1/. jto04. > . $uatlah *ie# yang menampilkan data menurut masing+masing kolom jatuh tempo. Ujilah masing+masing fungsi diatas dengan A • *alues blmjto8!urrentYDate9 • *alues blmjto8!urrentYDate + 0 day9 1.ASA &[T&'5AL 5A%& U%yUD(Q%D4U Kemudian kita dapat menguji eksternal UD( tersebut denganA *alues md48UHendra oe#arnoU9 (atihan 0.L LA5CUAC& . %T. Hendra. dan jtodiatas1/. . ).ASA "A'A%&T&' T\L& . $uatlah user define fun!tion memeriksa suatu tanggal berdasarkan !urrentYdate dengan mengkategorikan sebagai belumjto.Kom.immy. 72 .

. 77 . Hendra. $uatlah UD( yang dapat mengembalikan seluruh nilai sisa A' dari koderelasi yang diberikan. %T. .immy. serta ujilah fungsi tersebut. $uatlah program ja*a yang menanyakan koderelasi.Database Lanjut dengan I$% D$) 3. dan registrasi fungsi tersebut ke database piutang. $uatlah sebuah ekternal fungsi %D4 menggunakan ja*a. 6. . 4. > . kemudian men!etak nilai sisa A' untuk kode relasi tersebut 8buatlah UD( untuk menghasilkan sisa piutang9.Kom. $uatlah UD( yang dapat mengembalikan nilai sisa A' dari nopiutang yang diberikan.

4. S-&"E P"&$ED/"E "ada a#al perkembangannya. Manfaat stored pro edure tored pro!edure memiliki banyak manfaat yang dapat dilihat dari berbagai sisi seperti reusability.immy. !reate table pemakai 8username *ar!har84/9 not null primary key.Database Lanjut dengan I$% D$) Bab 11. ). 0// . karena setiap perubahan !ukup diubah pada ser*er database dan berpengaruh terhadap semua aplikasi yang melakukan !all terhadap store pro!edure. sehingga aplikasi pada klien tidak perlu di deploy ulang. Pembuatan store pro edure "embuatan store pro!edure dilakukan dengan perintah -'&AT& "':-&DU'&. "emakaian store pro!edure meningkatkan maintanan!e. store pro!edure pada D$) juga dapat ditulis baik dengan menggunakan . 3. karena !all terhadap store pro!edure dapat dibatasi dengan pembatasan authority dan pri*iledge. > . 1.ai 4ar0har5<&8. "emakaian store pro!edure meningkatkan konsistensi karena semua aplikasi menggunakan store pro!edure yang sama. "emakaian store pro!edure memungkinkan kode disimpan terpusat pada ser*er database. -TT. perfoman!e.ai5/id/e a. karena pemanggil langsung dilakukan terhadap nama pro!edure beserta dengan parameternya. !onsisten!y. "emakaian store pro!edure akan meningkatkan keamanan.Kom. -ontohA $erikut ini adalah sebuah store pro!edure yang berfungsi untuk melakukan proses tambah data pemakai.a*a. yang dia#ali dengan proses *alidasi terhadap sandi. sehingga terhindar dari kemungkinan perbedaan *ersi pada masing+masing aplikasi. pass#ord *ar!har84/99 0rea*e /r"0ed)re *a -ahA/e a. ebagaimana pada UD(. dan dalam perkembangannya sejalan dengan model komputasi !lientEser*er. /(andi 4ar0har52&88 Hendra. maintenan!e. tore pro!edure menyerupai program komputer yang disimpan pada suatu database. produk D$% diran!ang untuk hanya menangani penyimpanan data se!ara optimal.L "L maupun bahasa tingkat tinggi lainnya seperti -. maka aturan bisnis juga perlu disimpan pada sisi database dalam bentuk store pro!edure. dan se!urity yang dapat dijelaskan sebagai berikutA 0. "emakaian store pro!edure akan menghemat band#idth jaringan. -obol maupun . dari pada dilakukan koding pada setiap aplikasi. . %T.

"ada lingkungan 5etbeans. Pemanggilan pro edure "emanggilan store pro!edure dilakukan dengan perintah !all dan diikuti dengan nama pro!edure dan parameter yang disyaratkan. %T. > . pass#ord9 *alues 8pidpemakai.Database Lanjut dengan I$% D$) language s<l -e+in a*" i0 de!lare r!ount integer default /D insert into pemakai8username.immy.memiliki prilaku yaitu semua proses yang telah dieksekusi akan berlaku sebelum titik kegagalan. 0/0 . pembuatan eksternal pro!edure dilakukan dengan membuat proje!t ja*a !lass library.r!ount N ':FY-:U5TD return r!ountD end -atatanA "emakaian $&CI5 AT:%I.akan menyebabkan semua proses didalam store pro!edure akan di ':LL$A-K jika terjadi kegagalan dalam store pro!edure sebelum proses dikembalikan ke pemanggil.Kom. . sedangkan $&CI5 5:T AT:%I. md48psandi99D C&T DIAC5: TI.Xde#i!han07/. D$) juga memberi kesempatan kepada pemakai untuk membuat eksternal torepro!edure yang ditulis dengan menggunakan bahasa tingkat tinggi seperti ja*a.X9 Eksternal Storepro edure ebagaimana dengan UD(. -ontohA !all tambahYpemakai8WsusanX. Hendra.

dan menduplikasikan file jar ke folder ?HD$)"ATH Hs<llibGfun!tion@ 8dalam hal ini adalah -AG"rogram filesGI$%Gs<llibGfun!tion9 Hendra.Database Lanjut dengan I$% D$) Kemudian membuat -lass yang akan berisi rutin yang membentuk e=ternal storepro!edure kita.s<l. > .prepare tatement8s<l9D stmt.s<l.get&rror-ode89D thro# ne# .s<l.L&=!eption8error-ode T P A P T s<le. ."repared tatementD import ja*a. pidpemakai9D stmt.L&=!eption O int result N /D int error-ode N /D tring s<lD "repared tatement stmt N nullD try O -onne!tion !on N Dri*er%anager.L&=!eption s<le9 O error-ode N s<le. %yUD(. 0/) .e=e!uteUpdate89D R !at!h 8 .get-onne!tion8Pjdb!AdefaultA!onne!tionP9D s<l N PInsert into pemakai 8username.immy. tring psandi9 thro#s .L&=!eptionD /)-li0 0la(( M!S# 3 publi! stati! int jtambahYpemakai8 tring pidpemakai. pass#ord9 P T P*alues 8Z.Kom.-onne!tionD import ja*a. . uatu eksternal storepro!edure pada ja*a dideklarasikan sebagai publi! stati! *oid. import ja*a.Z9PD stmt N !on.set tring80.get%essage89 T P (AIL&DP9D R return resultD R 9 etelah itu dilakukan build proje!t.s<l.%D48psandi99D result N stmt.set tring8). %T.Dri*er%anagerD import ja*a.

Database Lanjut dengan I$% D$) elanjutnya &ksternal torepro!edure tersebut perlu didaftarkan pada database D$) yang akan memanfaatkan fungsi tersebut dengan perintahA C-67:6 P-5C6*K-6 Ltam+a8M'ema9ai (in a Darc8ar(%#).Z9P9D !stmt. Tambahkan tabel pemakai yang terdiri dari username dan pass#ord. P oe#arnoP9D !stmt. > .GK7G6 N7J7 P7-7>6:6.5 *.get-onne!tion89. in + Darc8ar(%#)) SP6C4F4C Ltam+a8'ema9ai 17.4.C6* :(-67*S7F6 6O:6-. PHendraP9D !stmt. %T. .immy. -allable tatement !stmtD !stmt N %yD$:penHelper.set tring80.set tring8).7>6 H>ySP2Ltam+a8M'ema9aiH =alla-leS*a*e en* "->e0* uatu -allable tatement objek menyediakan suatu !ara untuk pemanggilan stored pro!edure didalam suatu !ara standard untuk semua D$% . (atihan 0.Kom. "embuatan objek -allable tatement dilakukan dengan menggunakan metode prepare-all pada objek -onne!tion.71 .e=e!uteUpdate89D $erikut ini salah !ontoh pemanggilan stored pro!edure yang mengembalikan nilai melalui parameternya. 0/1 .S:F16 N7J7 . $erikut ini adalah untuk pembuatan suatu objek -allable tatement.F5 F6. Hendra. prepare-all8P!all tambahYpemakai8Z.

Kom. dan pass#ord baru diketik dua kali9. > . ubah pass#ord pemakai 8konfirmasikan pass#ord lama. $uatlah program ja*a yang memberikan fasiltas pembuatan pemakai baru. untuk masing+masing fasilitas dibuat terlebih dahulu strored pro!edurenya masing+masing. 0/3 . 1. dimana pass#ord disimpan dalam format %D4.Database Lanjut dengan I$% D$) ). $uatlah suatu internal stored pro!edure yang dapat menambahkan pemakai baru.immy. . dan hapus pemakai. %T. Hendra.

#onsistensi -ransaksi alah satu hal yang penting didalam pengelolaan transaksi pada database adalah konsistensi data. Apa itu konsistensi dataZ e!ara gampang anda dapat membayangkan bah#a anda membuka sebuah toko s#alayan.Kom. %T. dan anda memiliki sebuah gudang besar untuk penyimpanan barang. jika tidak maka seluruh transaksi harus dibatalkan. uatu transaksi harus memiliki properti sebagai berikutA • A*" i0i*! menbutuhkan bah#a semua operasi 8perintah . misalkan T0 memiliki empat perintah . 0/4 . dan Lo!k. dan menambah !atatan persediaan di toko. Untuk setiap perpindahan barang dari gudang akan mengurangi !atatan persediaan di gudang.L yang dikelompokan sebagai satu kesatuan unit untuk melakukan proses tertentu 8misalnya pada trigger maupun stored pro!edure9 sebagai a*" i0 a0*i"n yang bersifat berhasil semua atau gagal sama sekali. Kemudian anda bayangkan bah#a suatu kali terjadi perpindahan barang dari gudang di!atat sebagai pengurangan persediaan di gudang tetapi lupa di!atat sebagai penambahan persediaan di toko. Untuk penanganan konsistensi data dan konkurensi data. ketidakkonsistenan dapat terjadi oleh beberapa hal sebagai berikutA 0. dan sebagian lagi tidak berhasil dijalankan. uatu transa!tion akan diakhiri dengan perintah -:%%IT ataupun ':LL$A-K. > .Database Lanjut dengan I$% D$) Bab 1!. Isolation le*el. D$) menyediakan fasilitas Transa!tion. e!ara berkala barang dari gudang akan dipindahkan ke toko s#alayan anda. "ada database. -ransa tion uatu transa!tion dikenal juga dengan unit of #ork 8UO?9 merupakan sekelompok dari urutan perintah . maka se!ara otomatis semua efek dari perintah dalam transa!tion tersebut yang telah dijalankan akan se!ara otomatis di ':LL$A-K 8yang dalam hal ini berarti membatalkan semua perubahan yang terjadi mulai dari titik a#al transaksi atau dengan kata lain kembali kepada kondisi sebelum transaksi dimulai9. Terjadi gangguan sistim ditengah+tengah serangkaian perintah update data. dengan kata lain Hendra. pada kasus ini ketidakkonsistensian data telah terjadi.L9 dari suatu transaksi harus lengkap. jika pada situasi tertentu dimana terjadi gangguan pada sistim yang menyebabkan perintah -:%%IT tidak berhasil ter!apai. yang menyebabkan sebagian perintah berhasil dijalankan.immy. . ). Akses data oleh beberapa pemakai pada saat yang bersamaan yang dikenal dengan istilah !on!urren!y pada lingkungan multiuser dapat juga menyebabkan ketidakkonsistensian. jika tidak maka transaksi tersebut harus dibatalkan.L. semua perintah tersebut harus berhasil dan lengkap.

I("la*i"n yang berarti bah#a data yang digunakan didalam suatu transaksi tidak dapat digunakan oleh transaksi yang kedua sampai transaksi yang pertama selesai. • • • • (og file Untuk dapat mengatur proses transasi.immy. Ar!hi*e logging memiliki keunggulan yaitu memungkinkan rollfor#ard re!o*ery untuk proses restore data 8untuk jelasnya dapat diba!a pada bagian ba!kup dan restore9.Kom. artinya efek dari setiap perintah yang dilakukan se!ara otomatis di -:%%IT. D)ra-ili*! menjamin bah#a suatu perubahan transaksi dilakukan 8!ommit9. 0/6 . 'D$% membutuhkan Log files yang menyimpan informasi sepertiA • Kapan suatu transaksi dimulai • Kapan suatu operasi selesai • Kapan transaksi tersebut selesai 8di -:%%IT9 emua database pada D$) memiliki log yang berasosiasi dengan masing+masing database untuk men!atat perubahan pada masing+masing database.Database Lanjut dengan I$% D$) suatu transaksi diperlakukan sebagai suatu logika unit of #ork. Ketika suatu transaksi lengkap. "engaturan transaksi pada trigger maupun stored pro!edure dilakukan dengan menggunakan $&CI5 AT:%I. . -ontohA Hendra. -ransa tion pada DB! e!ara default D$) menerapkan automati! transa!tion mode. Hal ini bermanfaat pada lingkungan multiuser. ifat ini adalah penting didalam database multiuser dan terdistribusi. "ada D$) ada dua jenis log yaitu -ir!ular logging 8default9 yang digunakan untuk mempertahankan integritas dari transaksi. sehingga kegagalan sebelum pen!apaian &5D. jika ada bagian dari transaksi melanggar integrity !onstraint. maka keseluruhan transaksi harus dibatalkan. > .dan &5D jika perintah yang digunakan lebih dari satu. maka semua efek dari perubahan sebelumnya akan se!ara otomatis di ':LL$A-K. %T. maka tidak dapat dibatalkan ataupun mengalami kehilangan #alaupun sistim mengalami gangguan. dimana bisa saja banyak transaksi berjalan se!ara konkuren. SerialiOa-ili*! menjamin bah#a jad#al dari eksekusi konkuren dari transaksi mendapatkan hasil yang konsisten. uatu transaksi memba#a database dari suatu tahapan konsisten ke tahapan konsisten lainnya. ="n(i(*en0! menyatakan sifat permanen dari tahapan konsisten database. database harus berada dalam suatu tahapan konsisten.

keterangan. baru.kodedk9D I% -ar). nilai de!imal804.hen 5'C'8 -e+in a*" i0 insert into ledger 8noperk.tanggaldk. keterangan. noref. noref99 0rea*e *ri++er /i)*an+Ai+l after insert on piutang referen!ing ne# as baru for ea!h ro# mode db)s<l . nilai9 *alues 8U)//0/U. primary key8noperk. U"iutang dagangU.nilaid. +baru.nopiutang. .nilai9D insert into ledger 8noperk. tanggal. tempYket. baru. baru. keterangan *ar!har84/9.tanggaldk.nodk. baru.baru. +baru.nodk. baru. noref.tanggal./i)*an+Ai+l after insert on dkpiutang referen!ing ne# as baru for ea!h ro# mode db)s<l #hen 80N09 -e+in a*" i0 de!lare tempYket *ar!har84/9D set tempYket N 8sele!t keterangan from jenisdk #here kodedk N baru. > . nilai9 *alues 8U)//0/U.tanggal. keterangan. noref. baru. tanggal. U"iutang dagangU.nodk.nilaidk9D insert into ledger 8noperk. noref. nilai9 *alues 8U)//0/U. 0/.Database Lanjut dengan I$% D$) 0rea*e *a-le led+er 8noperk *ar!har80/9 not null. baru.baru. MC & THEN insert into ledger 8noperk.immy. nilai9 *alues 8baru. Hendra. nilai9 *alues 8U3//0/U.tanggaldk.nilaidk9D ELSE insert into ledger 8noperk. U"enjualanU. tanggal. baru. . id integer not null generated al#ays as identity. baru.)9. %T.nopiutang. tanggal. keterangan. noref *ar!har8)/9 not null.Kom.nilai9D end 0rea*e *ri++er d. baru. noref. keterangan. tanggal.kodeDK. tanggal date.

"engaturan auto!ommit mode pada DB2 0" and line dapat dilakukan dengan menggunakan option T! pada saat pengaktifkan D$) !ommand line. tempYket.nilaidk9D insert into ledger 8noperk. ':LL$A-K dan AS&":I5T -ontohA !onne!t to piutangD U"DAT& -:%%A5D :"TI:5 U I5C ! :((D insert into pemakai8idpemakai. -ontohA D$) T! atau D$) U#DATE =OMMAND O#TIONS USING 0 O%% "engaturan auto!ommit mode pada D$) !ommand #indo# dapat dilakukan dengan pemilihan menu Tools. sandi9 *alues 8Ua#anU. md48Ua#n!dn)//2U99D ':LL$A-KD insert into pemakai8idpemakai. md48Ujhnmsm)/0/U99D -:%%ITD Hendra. kemudian pilih tab -ommand &dtior.tanggaldk.kodeDK. noref. pilih Tools ettings. nilai9 *alues 8baru. 0/2 . D$) mendukung perintah seperti -:%%IT. atau pemberian perintah ?U"DAT& -:%%A5D :"TI:5 U I5C ! :((@ setelah pengaktifan D$) !ommand line. baru. %T. sehingga ditulis dalam struktur -e+in a*" i0 P end.nodk. > . . tanggal.nilaidk9D END I%2 end "ada !ontoh tersebut diatas kita menginginkan setiap pen!atatan piutang baru otomatis diposting ke Ledger sebagai double entry yang merupakan satu kesatuan transaksi. keterangan.L statements@.immy. baru.Kom. +baru.Database Lanjut dengan I$% D$) U"iutang dagangU. sandi9 *alues 8UjohanU. baru. dan buang tanda !he!k pada ?Automati!ally !ommit .

immy. dapat menggunakan metoda !ommit ataupun rollba!k. 0/7 .L.and . maka D$) database manager melakukan operasi !ommit pada setiap selesaikan perintah .setAuto-ommit8false9 untuk mematikan modus auto!ommit. sedangkan data johan akan di ':LL$A-K. %T. -ransaksi pada JDB$ $ommit dan "ollba k "ada koneksi ke sumber data D$).md48Ujhnmsm)/0/U99D ':LL$A-K T: AS&":I5T (e-el) /e a. sedangkan data a#an akan di ':LL$A-K.setAuto-ommit8true9 untuk mengaktifkan modus auto!ommit.ika modus auto!ommit adalah aktif. "ada . se!ara default auto!ommit adalah true.setAuto-ommit8false9D a !on.md48Ua#n!dn)//2U99D AS&":I5T (e-el) /e a. . untuk melakukan !ommit ataupun rollba!k pada transa!tion se!ara e=pli!it.ai2 -:%%ITD "erintah tersebut diatas menyebabkan data a#an akan tersimpan pada tabel pemakai.L.Kom.!ommit89D edangkan pengaturan auto!ommit mode dapat menggunakan perintah -onne!tion. -ontohA -onne!tion !onD !on. mendukung Hendra. sandi9 *alues 8Ua#anU. "ada I$% D$) Dri*er for .L sa*epoint me#akili dari status dapat dan s!hema pada suatu titik #aktu tertentu didalam suatu unit kerja. Save Point uatu .ai2 :5 ':LL$A-K '&TAI5 -U' :' D insert into pemakai8idpemakai. sandi9 *alues 8UjohanU.D$-. . dan -onne!tion. > .Database Lanjut dengan I$% D$) "erintah tersebut diatas menyebabkan data johan akan tersimpan pada tabel pemakai. -ontohA !onne!t to piutangD U"DAT& -:%%A5D :"TI:5 U I5C ! :((D insert into pemakai8idpemakai.D$.

m)?(Hlima)a $%&?IPQH))").executeK')ate("4nsert into no+o)y.setSaDe'oint().set a*epoint89 atau -onne!tion. dan mengembalikan sebuat objek a*e"oint yang nantinya akan digunakan pada operasi release a*epoint atau rollba!k. Hendra. %etoda tersebut diatas akan membuat suatu sa*epoint.'ema9ai (i)'ema9ai. con. stmt.executeK')ate("4nsert into no+o)y. Database%etaData. san)i) " < "Dalues (HtonyH.setAutoCommit(false). Connection con.createStatement(). san)i) " < "Dalues (Hlima)aH. %T.executeK')ate("4nsert into no+o)y. con. .roll+ac9(se+elum:iga).getConnection().'ema9ai (i)'ema9ai. con. m)?(Htony $%&?IPQH))").immy. stmt. stmt.m)?(HraRali $%&?IPQH))"). stmt = con.Database Lanjut dengan I$% D$) pemakaian metode sa*epoint sebagai berikutA -onne!tion.rollba!k8 a*epoint sa*epoint9 Untuk memeriksa apakah suatu sumber data mendukung sa*epoint dapat mengunakan metoda. try . 00/ . maka D$) database manager akan menjalankan perintah seperti AS&":I5T yang meliputi :5 ':LL$A-K '&TAI5 -U' :' .Kom. con = >y*+5'en(el'er. Statement stmt. SaDe'oint se+elum:iga = con. > .release a*epoint8 a*epoint sa*epoint9 atau -onne!tion.set a*epoint8 tring name9 Ketika salah satu perintah ini dijalankan. public static void main(String@A args) . -onne!tion.commit().supports a*epoints89 -ontohA -atatanA untuk username dan pass#ord diganti sesuai petunjuk dosen anda. san)i) " < "Dalues (HraRaliH.'ema9ai (i)'ema9ai.

con. Hendra. tanggal date. 000 . . 1.Kom. $uatlah trigger auto posting setiap dkpiutang se!ara otomatis dijurnal sebagai KodeDK *s piutang dagang. buatlah juga trigger untuk update dan delete terhadap piutang.Database Lanjut dengan I$% D$) stmt.close(). %T.close(). nilai de!imal804. buatlah juga trigger untuk update dan delete terhadap piutang. $uatlah trigger auto posting setiap penambahan piutang otomatis dijurnal sebagai piutang dagang 8)//0/9 *s penjualan 83//0/9.'rintStac9:race(). id integer not null generated al#ays as identity.)9.immy. noref99 ). primary key8noperk. > . noref *ar!har8)/9 not null. 3 3 (atihan 0. keterangan *ar!har84/9. Tambahkan tabel ledger kedalam database piutang. -atatanA "embuatan proses diatas perlu memperhatikan kesatuan dari proses transaksi. e. 0rea*e *a-le led+er 8noperk *ar!har80/9 not null. 3 catch (SS16xce'tion e) .

3. $uatlah DDL untuk pembuatan database. dan buatlah trigger yang dapat se!ara otomatis mengupdate posisi saldo akhir berdasarkan transaksi penerimaan dan pengeluaran yang dilakukan 8dengan memperhatikan proses insert. %T. 00) .//0 Lokasi A 'ak/1/) %asuk 1 1 / Keluar / / 0 aldo Akhir 1 6 4 0. .ui3 Anda diberikan data Kartu "ersediaan sebagai berikutA KA$TU #E$SEDIAAN Kode $arang A "//0 Keterangan A "rinter H" 0/0/ atuan A "Tgl /0E/0E0) /0E/0E0) /0E/)E0) Keterangan aldo A#al "enerimaan "engeluaran 'eferensi A/0 "//0 . delete9 tabel $arang. tabel transaksi. update. Lakukan proses normalisasi untuk meran!ang database "ersediaan. $uatlah suatu UD( yang dapat mengembalikan posisi saldoAkhir berdasarkan kode barang yang diberikan sebagai parameter. Tambahkan field 8!reaby. 4. edit. $uatlah trigger yang se!ara otomatis membatalkan proses insert. delete9. Tambahkan field 8saldoAkhir9 pada tabel $arang. !reatime. 2. integritas referensial.immy. jika pengeluaran M posisi saldo akhir persediaan . obje!t table dengan memperhatikan integritas domain.Database Lanjut dengan I$% D$) . ). Hendra. $uatlah program ja*a !onsole untuk 8add. Definisikan inde= yang perlu ditambahkan untuk meningkatkan kinerja database. dan men!etak bentuk kartu persediaan. 1. moditime9 pada masing+masing tabel dan buatlah trigger yang se!ara otomatis men!atat data user untuk aktifitas insert dan update.Kom. modiby. 6. integritas entitas. > .. dan integritas semantik.

#onsistensi #onkurensi "ada lingkungan satu pemakai.immy. tetapi pada lingkungan banyak pemakai.Database Lanjut dengan I$% D$) Bab 1). 001 . Transaksi yang memiliki potensi untuk mempengaruhi transaksi lainnya disebut sebagai transaksi interleaved atau parallel. %T. dan setelah itu transaksi tersebut di rollba!k. Kondisi a#al 0 ) 1 aldo N 0// T0 $a!a aldo N 0// Tulis aldo N aldo T 4/ Tulis aldo N aldo T )4 T) $a!a aldo N 0// Kondisi akhir aldo N 0// aldo N 04/ Sald" C '2. melakukan kalkulasi dan meng+update kembali data. > .& T0 T) Kondisi akhir aldo N 0// aldo N 0// aldo N 04/ aldo N 04/ Sald" C '&& Hendra. dalam arti menjalankan mereka bersamaan tidak berbeda dengan hasil menjalankannya masing+masing se!ara serial. )9 Dir*! read 5D$8 atau Un0" i**ed $ead 5U$8A fenomena ini terjadi ketika suatu transaksi memba!a data yang belum di !ommit oleh transaksi lain. yaituA 09 L"(* )/da*e 5LU8A fenomena ini terjadi ketika dua transaksi memba!a data yang sama. ebagai akibatnya setiap transaksi berpotensi untuk saling mempengaruhi transaksi lainnya. Ketika transaksi parallel dijalankan pada lingkungan multiuser. . sedangkan transaksi yang terisolasi satu sama lainnya disebut sebagai seriali"a#le. maka salah satu update tersebut akan hilang 8ditimpa oleh update yang terakhir9. setiap transaksi berjalan se!ara berurutan 8serial9 dan tidak mengalami inteferensi dari transaksi lainnya. beberapa transaksi dapat berjalan se!ara bersamaan. dapat berpotensi menimbulkan empat jenis fenomena.Kom. sehingga akibatnya data yang terba!a sebelumnya seharus tidak ada. Kondisi a#al 0 ) 1 3 4 'ollba!k aldo N 0// $a!a aldo N 0// Tulis aldo N aldo T 4/ Ba0a Sald" C '.

immy. 003 .Kom. maupun menghapus data. hal ini dapat terjadi karena pada pemba!aan yang kedua ada transaksi lain mengupdate.Database Lanjut dengan I$% D$) 19 N"nGre/ea*a-le read 5N$8A fenomena ini terjadi ketika suatu transaksi memba!a data yang sama dua kali. S heduler !heduler adalah proses khusus didalam D$% yang mengatur operasi berjalannya transaksi+transaksi konkuren. Kondisi a#al 0 ) Dua re!ord $a!a semua re!ord 5F")nd 2 re0"rd8 Tambah re!ord baru $a!a semua re!ord 5F")nd < re0"rd8 T0 T) Kondisi akhir Dua re!ord Dua re!ord 1 3 Tiga re!ord Tiga re!ord -atatan A Konkurensi bukan merupakan isu pada global temporary tables. . karena mereka hanya tersedia pada aplikasi yang mendeklarasikan dan membuatnya. %T. tetapi ketika operasi pemba!aan berikutnya mun!ul akibat adanya penambahan data oleh transaksi lain. Kondisi a#al 0 ) aldo N 0// $a!a aldo N 0// $a!a data dengan saldo 0// 5F")nd ' re0"rd8 T0 T) Kondisi akhir aldo N 0// aldo N 0// 1 3 Tulis aldo N aldo T 4/ $a!a data dengan saldo 0// 5n"* F")nd8 aldo N 04/ aldo N 04/ 39 #han*" $ead 5#$8A fenomena ini terjadi ketika suatu data yang memenuhi kriteria tertentu tidak nampak a#alnya. > . !heduler memisahkan eksekusi dari operasi database Hendra. dan mendapatkan nilai yang berbeda pada masing+masing pemba!aan.

Da*a-a(e le4el l"0. $erikut ini adalah beberapa istilah yang terkait dengan lo!king. kebanyakan D$% se!ara otomatis melakukan prosedur pengun!ian yang diatur oleh l"0. dan metode lo!king merupakan yang paling sering digunakan. T1.. tetapi dua transaksi dapat mengakses database yang sama sepanjang mereka mengakses tabel yang berbeda. !heduler mengatur eksekusi transaksi yang terjadi bersamaan 8T0. time stamping dan optimisti!. 004 . dll9 untuk mendapatkan hasil sebagaimana jika transaksi tersebut dijalakan se!ara berurutan 8satu setelah lainnya9. s!heduler mendasarkan aksinya pada algoritma pengendalian konkurensi. Untuk mendapatkan pengaturan yang sesuai. Ta-le le4el l"0. mengun!i keseluruhan database. e!ara umum. jika transaksi membutuhkan akses ke beberapa tabel. %etode ini diklasifikasikan sebagai lo!king. %T. sehingga tidak dimungkinkan untuk menggunakan tabel manapun oleh T) ketika T0 sedang berjalan. > . . maka masing+masing tabel akan dikun!i.Database Lanjut dengan I$% D$) untuk memastikan (erialiOa-le dan isolasi dari transaksi. pen!egahan akses kepada baris didalam tabel oleh T) tidak dimungkinkan ketika T0 sedang menggunakan tabel tersebut. Tingkat lo!k ini !o!ok untuk proses bat!h.in+ dan *i e (*a /in+. uatu da*a-a(e le4el l"0. ana+er yang bertanggung ja#ab untuk tugas dan kebijakan lo!k dari suatu transaksi. sebagaimana kemungkinan konflik yang ditunjukan pada matrik berikut iniA T0 $a!a $a!a Tulis Tulis T) $a!a Tulis $a!a Tulis Hasil Tidak konflik Konflik Konflik Konflik $eberapa metode telah diusulkan untuk menjad#alkan eksekusi dari operasi yang konflik didalam transaksi konkuren.immy. tetapi tidak !o!ok untuk kondisi multiuser.Kom. "ada *a-leGle4elGl"0. T). uatu transaksi harus mengun!i data sebelum mengaksesnya. dan pengun!ian dilepas ketika transaksi telah selesai. keseluruhan tabel dikun!i. dengan kata lain transaksi T) tidak dapat mengakses data yang sedang digunakan oleh T0. sehingga dapat digunakan oleh transaksi lainnya. seperti metode l"0. Hendra. (o king uatu lo!k menjamin data digunakan se!ara eksklusif oleh transaksi yang berjalan. !heduler juga memfasilitasi isolasi untuk memastikan bah#a dua transaksi tidak mengupdate elemen data yang sama pada saat yang bersamaan.

dan hal dikenal sebagai mutual transa!tion ruleA hanya ada satu transaksi yang dapat melakukan e=!lusi*e lo!k. dan satu page dapat terdiri dari banyak baris dari satu tabel ataupun beberapa tabel. "ada /a+e le4el l"0. tetapi dapat menyebabkan dua persoalan utama yaituA 0. jika tidak maka transaksi tersebut harus menunggu sampai transaksi lainnya mengakhiri proses lo!k 8-:%%IT9. .immy. 006 . suatu disk page atau page adalah setara dengan satu disk blo!k alokasi oleh sistim operasi yang dapat berukuran 3K. pada kondisi ini kedua transaksi berada dalam kondisi saling menunggu. Deadl"0. . adalah akses hanya diperbolehkan bagi transaksi yang mengun!i objek tersebut. le4el l"0. adalah metode yang paling banyak digunakan oleh D$% multiuser. dan inilah yang disebut sebagai deadlo!k. misalnya T0 mengun!i disk page satu. 06K. maka keseluruhan satu blok 3K akan diba!a ke memori. uatu shared l"0. kemudian transaksi T0 men!oba mengun!i disk page dua 8menunggu sampai T) !ommit9. %T. pada saat yang sama T) men!oba mengun!i disk page satu 8menunggu sampai T0 !ommit9. uatu eB0l)(i4e l"0. D$% akan mengun!i keseluruhan disk page. karena menggunakan satuan yang terke!il pada le*el baris. Falaupun lebih fleksibel tetapi metode ini membutuhkan usaha yang besar. %isalnya anda ingin menulis hanya menulis data 0// byte. > . dilakukan proses update 0// byte pada memori dan ditulis kembali sebanyak 3K ke disk. atu tabel dapat terdiri dari banyak page. merupakan metode yang paling tidak membatasi. %enyebabkan jad#al menjadi deadlo!k. $". "emakaian lo!k dapat menjaga konsistensi transaksi. suatu shared lo!k tidak menghasilkan konflik pada transaksi konkuren hanya read only.Database Lanjut dengan I$% D$) #a+e le4el l"0. #a+e le4el l"0. 2K. uatu shared lo!k dilakukan ketika suatu transaksi memba!a data dari database. dan suatu eB0l)(i4e l"0. %enyebabkan jad#al transaksi menjadi tidak serialiVable ). terjadi ketika dua transaksi mengakses sumber daya se!ara bersilangan. dilakukan ketika transaksi melakukan proses update data dan tidak ada lo!k yang dilakukan oleh transaksi lainnya.. dan T) mengun!i disk page dua. le4el l"0. adalah ketika transaksi konkuren diperbolehkan untuk akses ba!a. Hendra. uatu deadl"0.enis lo!k ini dilakukan jika ada potensi terjadinya konflik pada proses read dan #rite. SharedQEB0l)(i4e l"0. $".Kom. sehingga baris lain tetap dapat diakses oleh transaksi lainnya.

Database Lanjut dengan I$% D$)

&ptimisti lo k
uatu mekanisme yang bekerja dengan asumsi bah#a operasi database tidak mengalami konflik. "endekatan optimistik tidak membutuhkan lo!king maupun time stamping, dimana transaksi dijalankan tanpa pembatasan sampai di !ommit. Dengan metode optimisti!, setiap transaksi melalui dua atau tiga fase sebagai as read, *alidation dan #rite. • "ada fase read, transaksi memba!a databse, menjalankan proses komputasi, mengupdate ke suatu duplikat nilai pri*asi, semua operasi update di!atat pada suatu file update sementara, dimana tidak dapat diakses oleh transaksi lain. • "ada fase *alidation, transaksi memastikan perubahan tidak mengganggu integritas dan konsistensi database, jika berhasil, maka dilakukan proses #rite, jika tidak maka transaksi diulangi dan perubahan dibatalkan. • "ada fase #rite, data dibuat permanen ke database.

Penanganan konkurensi pada DB!
"enanganan terhadap konsistensi database dan integritas data dimana lebih dari satu aplikasi mengakses data yang sama pada saat yang sama, dikenal dengan istilah konkurensi. alah satu usaha D$) untuk menjaga !on!urren!y adalah melalui isolation level, dimana menentukan bagaimana data dikun!i dan diisolasi terhadap transaksi lainnya. D$) menyediakan beberapa tingkat isolasi sebagai berikutA 09 'epeatable read )9 'ead stability 19 -ursor stability dan semantik currently committed 39 Un!ommitted read

"epeatable read 8""9
%erupakan tingkat isolasi yang /alin+ ,e*a* dan -"r"( resour!es karena melakukan $e0"rd le4el l"0, *erhada/ (e )a re0"rd !an+ en>adi a0)an ha(il 1)er!, misalkan hasil <uery 0/ re!ord berasal dari hasil pemba!aan 0//// re!ord, maka 0//// re!ord akan dikun!i, dan memungkinkan terjadinya Ta-le le4el l"0, /ada UO?, dimana masing+masing transaksi se!ara menyeluruh terisolasi dari pengaruh transaksi lainnya, fenomena seperti dirty read, non+repeatable read, dan phantom read tidak akan terjadi. '' tidak dapat melihat data yang belum di !ommit oleh transaksi lain.

"ead stabilit% 8"S9
Tingkat isolasi ' read stability tidak begitu ketat dibandingkan dengan '', karena hanya melakukan $e0"rd le4el l"0, *erhada/ re0"rd !an+ e en)hi ,ri*eria ha(il 1)er! /ada UO?, misalnya sebuah tabel memiliki 0//// re!ord dan re!ord memenuhi kriteria <uery adalah 0/ re!ord, maka lo!k hanya dilakukan terhadap 0/ re!ord tersebut. Hendra, %T. > ,immy, .Kom. 00.

Database Lanjut dengan I$% D$) ' tidak se!ara lengkap mengisolasi efek dari suatu transaksi terhadap lainnya. Tingkat isolasi ' akan men!egah terjadinya dirty read dan non+repeatable read, 8 ' tidak dapat melihat data yang belum di !ommit oleh transaksi lain9 tetapi phantom read dapat terjadi 8T) dimungkinkan menambah re!ord yang memenuhi kriteria <uery T09, .

$ursor stabilit% 8$S9
Tingkat isolasi - sangat longgar didalam mengisolasi efek dari suatu transaksi terhadap transaksi lainnya, dimana melakukan re!ord le*el lo!k terhadap baris yang sedang ditunjuk oleh !ursor, ataupun baris yang belum di !ommit pada U:F. (enomena dirty read dapat di!egah, tetapi non+repeatable read dan phantoms dapat saja terjadi. ebagaimana pada '' dan ' , - tidak dapat melihat data yang belum di !ommit oleh transaksi lain. -atatanA - merupakan default isolation le*el, adalah !o!ok ketika anda ingin !on!urren!y yang tinggi and hanya ingin melihat data yang telah di !ommit. emantik currently committed diperkenalkan pada Sersi 7.. dan menjadi default untuk database baru, hanya data yang telah di !ommit yang akan dikembalikan, sebagaimana pada kasus sebelumnya, tetapi sekarang pemba!aan oleh T) tidak perlu menunggu sampai T0 membebaskan lo!k pada baris. "emba!aan mengembalikan data berdasarkan *ersi data yang di !ommit saat ini 8dalam hal ini data sebelum operasi penulisan9.

/n ommitted "ead 8/"9
Tingkat isolasi U' merupakan tingkat isolasi yang /alin+ l"n+ar, dimana re!ord yang diterima oleh suatu transaksi hanya akan dikun!i dari transaksi lainnya berusaha untuk melakukan drop maupun alter table dimana re!ord tersebut diambil. (enomena dirty read, non+repeatable, dan phantom dapat terjadi. esuai dengan namanya, data yang belum di !ommit oleh transaksi lainnya akan nampak oleh U'. Tetapi tidak dapat melihat tabel, *ie#, ataupun inde= yang dibuat dan belum di !ommit oleh transaksi lainnya, !o!ok digunakan untuk suatu tabel read+only. "enting untuk di!atat bah#a ketika suatu transaksi dijalankan diba#ah isolasi U' dan menggunakan suatu updatable !ursor, maka transaksi akan berprilaku sebagaimana pada tingkat isolasi - , dan batasan dari - berlaku9.

Pemilihan tingkat isolasi
"emilihan tingkat isolasi mempengaruhi sebagaimana baiknya tingkat isolasi tetapi tidak mengorbankan kinerja, dimana semakin tinggi tingkat isolasi, maka semakin rendah kemungkinan !on!urren!y, dan unjuk kerja aplikasi akan turun karena harus menunggu lo!k pada resour!es harus dilepaskan 8!ommit atau rollba!k9. ehingga bagaimana anda Hendra, %T. > ,immy, .Kom. 002

Database Lanjut dengan I$% D$) melakukan pemilihan tingkat isolasiZ 09 Cunakan tingkat isolasi '' jika anda menjalankan sejumlah besar <uery dan tidak ingin transaksi lainnya melakukan perubahan yang menyebabkan <uery anda mengembalikan hasil yang berbeda jika dijalankan lebih dari satu kali. )9 Cunakan tingkat isolasi ' ketika anda menginginkan konkurensi yang baik terhadap aplikasi lain, disamping anda juga menginginkan stabilitas re!ord pada siklus hidup transaksi anda sendiri, tetapi perintah <uery tidak diulang. 19 Cunakan tingkat isolasi - ketika anda ingin tingkat !on!urren!y penuh terhadap aplikasi lain, dan anda tidak menginginkan <uery mendapatkan data yang belum di !ommit transaksi lain. 39 Cunakan tingkat isolasi U' jika anda melakukan eksekusi <uery terhadap tabelE*ie#Edatabase read+only, atau tidak menjadi masalah kalau <uery mengembalikan data yang belum di !ommit transaksi lain.

Pengelolaan tingkat isolasi
Falaupun prilaku tingkat isolasi bekerja pada tingkat transa!tion, tetapi sebenarnya mereka ditentukan pada tingkat aplikasi. 'ingkasan dari prilaku masing+masing isolation le*el ditunjukan pada tabel 0).0. Tabel 01.0, "rilaku dari masing+masing isolation le*el
Aplikasi dapat melihat perubahan yang belum di !ommit oleh aplikasi lain Aplikasi dapat mengupdate perubahan yang belum di !ommit oleh aplikasi lain ksekusi ulang dari perintah dapat dipengaruhi oleh aplikasi lain Baris yang telah diupdate dapat diupdate oleh aplikasi lain Baris yang telah diupdate dapat diba!a oleh aplikasi lain yang mejalankan leDel isolasi selain ., Baris yang telah diupdate dapat diba!a oleh aplikasi lain yang menjalankan leDel isolasi ., Baris yang telah diakses dapat diupdate oleh aplikasi lain Baris yang telah diakses dapat diba!a oleh aplikasi lain ., 6a Tdk 6a Tdk Tdk 6a 6a 6a C) Tdk Tdk 6a Tdk Tdk 6a 6a 6a ,) Tdk Tdk 6a Tdk Tdk 6a Tdk 6a ,, Tdk Tdk 6dk Tdk Tdk 6a Tdk 6a

Pengaturan isolation level
"ada D$), pengaturan tingkat isolasi dapat menggunakan perintah -HA5C& I :LATI:5 dengan synta= berikut iniA
TT"C(7;G6""<"SS14S1""""<"":5""<"CS"<"""""""""""""""""""""""""""TU H"4S517:45;"H <"--"< <"-S"< H"K-"H atau 'a)a ting9at 'erinta8

Hendra, %T. > ,immy, .Kom.

007

and .4 akan menggunakan -ursor tability... yang mana berkorespondensi dengan tingakt isolasi pada ser*er database..Database Lanjut dengan I$% D$) &L&-T 8I5T:9.L DATA language s<l deterministi! begin SET ISOLATION C SE$IALIRABLE2 update runnum set key*al N key*al T 0D return 8sele!t key*al from runnum9D -:%%ITD end` "emakaian fungsi tersebut diatas dapat berkonsekuensi terhadap kinerja. mendukung sejumlah tingkat isolasi. D&L&T&. "roses di ba!k end harus dihentikan sebelum le*el isolasi dapat diubahA )+$ terminate )+$ c8ange isolation to ur )+$ connect to sam'le . maka pada D$) 7. U"DAT& .L.immy.D$. Hendra. !reate table runnum 8key*al bigint9` insert runnum 8key*al9 *alues 8/9` 0rea*e F)n0*i"n +enAr)nn) 58 returns bigint %:DI(I& . . U'R "erubahan le*el isolasi tidak diperbolehkan ketika koneksi ke database dengan koneksi tipe 0. akan menggunakan -urrently -ommited. dan untuk D$) 7. FITH O''. karena semua pemakai antri untuk mendapatkan runnum.Kom.. +solation level pada JDB$ "ada I$% Data er*er Dri*er for . > .ika tidak ada le*el isolasi yang ditentukan. %T. $erikut ini adalah !ontoh pemakaian isolasi pada fungsi untuk generate running number untuk memastikan hanya ada satu user yang mengupdate dan mengembalikan nilai key*al suatu saat. ' . . 0)/ .

D$-. S*e/ 0 ) 1 T' sele!t ] from !oba) !ommit T2 sele!t ] from !oba0 !ommit update !oba0 set kolom N 0 update !oba) set kolom N ) Hendra. "roses yang ter+suspended se!ara sementara berhenti berjalan dan berada dalam antri+ an yang bersifat (I(: sampai proses aplikasi lain melepaskan lo!k. %T.epeatable read . "roses yang tersuspended akan berjalan kembali jika lo!k dilepas oleh proses yang konflik dengannya.ead stability Cursor stability . AD AD>COMMITT D AD>.dapat ditentukan untuk suatu U:F didalam suatu program ./COMMITT D tingkat isolasi DB2 . jaDa&s?l&Conne!tion&T. suatu deadlo!k terjadi ketika dua atau lebih proses aplikasi masing+masing mengun!i sumber daya yang mana dibutuhkan oleh proses lainnya.D$. 0)0 . dan tanpa re+ sour!es tersebut mereka tidak dapat berlanjut. . > .A/)ACTIO/>) jaDa&s?l&Conne!tion&T. Tingkat isolasi default dapat ditentukan dengan properti defaultIsolationLe*el. )9 Deadlo!k. suatu proses aplikasi terhenti ketika ia melakukan permintaan lo!k ter+ hadap sesuatu yang telah dilakukan oleh aplikasi lain yang dan tidak dapat di share.A/)ACTIO/>. D$) dapat melakukan rollba!k untuk satu dari proses atau meminta satu proses untuk berhenti. tetapi tidak menjadi masalah pada -urrently -ommitted.A/)ACTIO/>. sehingga melepaskan lo!k dan proses yang tersisa dapat berlanjut.immy. atau men!apai suatu time out maka proses berlanjut dengan suatu kondisi error.n!ommitted read Efek dari (o k Lo!k pada lingkungan multiuser dapat menyebabkan hal berikut iniA 09 uspension.Kom. dengan menggunakan metode -onne!tion.IALILABL 4 ATABL >.Database Lanjut dengan I$% D$) Tingkat isolasi . jaDa&s?l&Conne!tion&T.setTransa!tionIsolation dan ekui*alennya pada ser*er database D$). "ada D$) berdasarkan suatu inter*al #aktu yang telah ditentukan 8nilai dari D&ADL:-K TI%&9. "ada s!enario berikut dapat menyebabkan Deadlo!k pada -ursor tability. Tabel berikut ini menunjukan nilai yang mana dapat anda tentukan di metode -onne!+ tion.A/)ACTIO/>. nilai pada 3DBC jaDa&s?l&Conne!tion&T.setTransa!tionIsolation. .

Kom. den+an (e an*i. dalam hal ini berarti semua perintah yang diketikan berada dalam suatu transaksi aktif sampai kepada perintah -:%%IT.*iF.an d-2 (e0ara A)*"G=" db) terminate db) T! list !ommand options perhatikan !urrent setting untuk Auto+-ommit apakah :5E:(( 8seharusnya adalah off. dan perhatikan nilainya :5E:(( 8se!ara default adalah :59 db) update db !fg for uji!oba using !urY!ommit disabled dalam hal ini kita menon+aktifkan !urY!ommit.immy.e d-20 d 5>endela '8 db) !reate database uji!oba on dA db) !onne!t to uji!oba db) !reate table !oba 8kolom integer9 db) !reate table !oba 8kolom integer9 db) insert into !oba0 8kolom9 *alues 809 db) insert into !oba) 8kolom9 *alues 809 db) terminate db) get db !fg for uji!oba !arilah parameter -U'Y-:%%IT. A. karena pemakaian paramter T!9. 2. A. .an . > .Database Lanjut dengan I$% D$) (atihan Si )la(i S)(/en(i"n /ada =)r("r (*a-ili*!. 0)rren*l! 0" '. !onne!t to uji!oba sele!t ] from !oba0 update !oba0 set kolom N ) sele!t ] from !oba0 pada saat ini perintah update belum di !ommit 8masih aktif pada transaksi9 i* O%% i*ed "FF Hendra.*iF. %T. 0)) .

"r *i e")*. "ada jendela 0 update !oba0 set kolomN1 ). #erha*i. /ada =)r("r (*a-ili*!. . dan menampilkan hasil !ommit oleh transaksi pada jendela 0.Database Lanjut dengan I$% D$) <. "ada jendela 0 sele!t ] from !oba) kedua transaksi tersebut diatas berada pada kondisi deadlo!k. -e0a)(e "F a deadl"0. Si )la(i Deadl"0. 1. A.Kom. 0)rren*l! 0" Hendra. den+an (e an*i.an d-20 d 5>endela 8 db) T! !onne!t to uji!oba sele!t ] from !oba0 pada tahapan ini jendela ) mengalami suspension. i*ed "n 0)1 i*ed "FF . %T.an /e(an SHL&S''N The 0)rren* *ran(a0*i"n ha( -een r"lled -a0.*iF. dan D$) akan menyelesaikan deadlo!k dengan rollba!k terhadap salah satu transaksi agar deadlo!k dapat terpe!ahkan. 0)rren*l! 0" 0. karena re!ord masih di+lo!k oleh transaksi pada jendela 0. "ada jendela ) update !oba) set kolomN1 sele!t ] from !oba0 se!ara otomatis berada pada kondisi suspension 1. den+an (e an*i.immy. > . Aktifkan kembali ke jendela 0 !ommit se!ara otomatis jendela dua akan terlepas dari suspension. dan ditampilkan pesan error pada salah satu transaksi. Si )la(i S)(/en(i"n /ada =)r("r (*a-ili*!.

T Men+a/aT i* Simulasi Bank drop se<uen!e se<Yuid` drop table a!!ount` drop table trans` drop fun!tion ambilYsaldo` drop pro!edure addYa!!ount` drop pro!edure addYtrans` drop trigger transY!he!kYsaldo` !reate se<uen!e se<Yuid as bigint start #ith 0 in!rement by 0 no ma=*alue no !a!he no !y!le` 0rea*e *a-le a00")n* 5n"a00")n* 4ar0har52&8 n"* n)ll /ri ar! . %T.)9 default /.e!. 0)3 .)9. noa!!ount *ar!har8)/9 not null. > . nama *ar!har80//9. tanggal date. lastYa!!ess timestamp9` 0rea*e *a-le *ran(5n"*ran( 4ar0har52&8 n"* n)ll /ri ar! . "ada jendela 0 terminate db) db) update db !fg for sample using !urY!ommit on db) !onne!t reset ).e!.an d-2 (e0ara A)*"G=" O%%8 A/a.Database Lanjut dengan I$% D$) 0.ah *er>adi ()(/en(i"n dan deadl"0. nilai de!imal804. mediatransaksi *ar!har819 not null. kota *ar!har8)/9.Kom. kodetransaksi *ar!har8)9 not null. (:'&IC5 K&\ 8noa!!ount9 '&(&'&5-& a!!ount8noa!!ount99` Hendra. saldo de!imal804. . !abang *ar!har8)/9.*iF.immy. Ulangi semulasi diatas mulai dari nomor ) 8A.

!abang..28.Kom.r!ount N ':FY-:U5TD return r!ountD end` 0rea*e /r"0ed)re addA*ran(5/n"*ran( -i+in*. / edia*ran(a.(i 4ar0har528. /n"a00")n* 4ar0har52&8. /0a-an+ 4ar0har52&8. nama.r!ount N ':FY-:U5TD return r!ountD end` 0rea*e F)n0*i"n a -ilA(ald"5/n"a00")n* 4ar0har52&88 returns de!imal804. > . ")* ha(il in*e+er8 language s<l begin atomi! de!lare r!ount integer default /D Hendra.immy. /nilai de0i al5'. /na a 4ar0har5'&&8. 0)4 . /.)9 language s<l begin return 8sele!t !oales!e8saldo.+09 from a!!ount #here noa!!ount N pnoa!!ount9D end` 0rea*e /r"0ed)re addAa00")n*5/n"a00")n* 4ar0har52&8. kota9 *alues 8pnoa!!ount. pnama. pkota9D C&T DIAC5: TI.(i 4ar0har5<8."de*ran(a. .Database Lanjut dengan I$% D$) 0rea*e /r"0ed)re l"0."*a 4ar0har52&88 language s<l begin atomi! de!lare r!ount integer default /D insert into a!!ount8noa!!ount. %T. /.Aa00")n*5/n"a00")n* 4ar0har52&88 language s<l begin atomi! de!lare r!ount integer default /D update a!!ount set lastYa!!ess N !urrentYtimestamp #here noa!!ountNpnoa!!ountD C&T DIAC5: TI. p!abang.

%T.noa!!ountD end` !all addYa!!ount8U7)/3/1/)3U.4///U &T %& AC&YT&[TNU aldo tidak !ukupQUD end` 0rea*e *ri++er *ran(A)/da*eA(ald" aF*er in(er* "n *ran( referen!ing ne# as baru for ea!h ro# mode db)s<l #hen 80N09 begin update a!!ount set saldo N saldo T baru.Database Lanjut dengan I$% D$) insert into trans8notrans. > .A(ald" -eF"re in(er* "n *ran( referen!ing ne# as baru for ea!h ro# mode db)s<l #hen 888sele!t saldo from a!!ount #here noa!!ountNbaru. !urrentYdate. U%D5 "T U.immy. UmedanU9` Hendra. .r!ount N ':FY-:U5TD set hasil N r!ountD return r!ountD end` 0rea*e *ri++er *ran(A0he0. pkodetransaksi.L TAT& U.Kom. kodetransaksi. nilai9 *alues 8 pnotrans.UmedanU9` !all addYa!!ount8U7)/3/1/30U.Uhendra soe#arnoU.noa!!ount9 Tbaru. pnilai9D C&T DIAC5: TI. noa!!ount. mediatransaksi.nilai #here noa!!ount N baru. tanggal.UlimadaU.U%D5 $$U. 0)6 . pmediatransaksi. pnoa!!ount.nilai9 J /9 begin IC5AL .

s<l.-onne!tionD import ja*a.for5ame8P!om.L&=!eption e=9 O Logger.ibm. .get5ame899.logging. %T.T$ANSA=TIONA$E#EATABLEA$EAD82 0"n. 0).Kom.!lass.util. e=9D R !at!h 8-lass5ot(ound&=!eption e9 O e. &S&'&.log8Le*el.immy.s<l.util.L&=!eptionD import ja*a.print ta!kTra!e89D R return berhasilD R publi! stati! *oid !lose-onne!tion89 O try O Hendra. pass#ord9D QQ$e/ea*a-le $ead /ada >a4a (e*ara den+an $ead (*a-ili*! /ada DB2 0"n.(e*A)*"=" i*5Fal(e82 berhasil N trueD R !at!h 8 .Database Lanjut dengan I$% D$) M!DBO/enHel/er.getLogger8%yD$:penHelper.Dri*er%anagerD import ja*a. null. username.db). . > .LoggerD publi! !lass %yD$:penHelper O pri*ate stati! -onne!tion !onD publi! stati! boolean bukaDatabase8 tring username.(e*Tran(a0*i"nI("la*i"n5="nne0*i"n.j!!. tring pass#ord9 O boolean berhasil N falseD try O -lass. .logging.>a4a pa!kage simulasiD import ja*a.D$)Dri*erP9D !on N Dri*er%anager.Le*elD import ja*a.get-onne!tion8Pjdb!Adb)AEElo!alhostA4////EbankP.s<l.

readLine89D if 8P<uitP. > .Database Lanjut dengan I$% D$) !on. P7)/3/1/)3P99 O try O ystem.TypesD import ja*a.logging.io.util. e=9D R R publi! stati! -onne!tion get-onne!tion89 O return !onD R R Main.bukaDatabase8PhendraP.!lass.s<l.log8Le*el. 0)2 .get-onne!tion89D try O -allable tatement lo!kA!!ount N !on. null.in9D $uffered'eader in N ne# $uffered'eader8!on*erter9D tring noa! N in.immy.Input tream'eaderD import ja*a.-allable tatementD import ja*a.s<l.s<l.io."repared tatementD import ja*a.I:&=!eptionD import ja*a.out.LoggerD publi! !lass %ain O publi! stati! *oid main8 tringKL args9 O if 8%yD$:penHelper.s<l.$uffered'eaderD import ja*a.out.>a4a pa!kage simulasiD import ja*a.Le*elD import ja*a.!lose89D R !at!h 8 .prepare-all8P!all lo!kYa!!ount8Z9P9D "repared tatement ambil aldo N !on.L&=!eption e=9 O Logger.'esult etD import ja*a.println8P ampai jumpaQP9D R else O -onne!tion !on N %yD$:penHelper.s<l.getLogger8%yD$:penHelper.io. .get5ame899.util. %T.e<uals8noa!99 O ystem.L&=!eptionD import ja*a.prepare tatement8P*alues ambilYsaldo8Z9P9D #re/aredS*a*e en* a -ilN"Tran( C Hendra.print8P5o A!!ount 8<uitNkeluar9AP9D Input tream'eader !on*erter N ne# Input tream'eader8 ystem.Kom.-onne!tionD import ja*a.s<l. .logging. &S&'&.

n"a082 QQ.ne=t89D addTrans. e=9D R R R !at!h 8I:&=!eption e=9 O Hendra. > .L&=!eption e=09 O Logger.uery89D if 8rs.get5ame899.e=e!ute. P7)/3/1/)3P9D addTrans.setInt80.L&=!eption e=9 O try O !on. %T. &S&'&.(e*S*rin+5'.ne=t899 O Double saldo N rs.register:ut"arameter86.prepare-all8P!all addYtrans8Z.rollba!k89D R !at!h 8 .out.out.log8Le*el. .Z9P9D l"0.setDouble84.I5T&C&'9D addTrans.!ommit89D R !at!h 8 .Z. &S&'&.println8P aldo andaAP T saldo9D ystem.)n0i re0"rd a00")n* 5n"a08 l"0.set tring8).getLogger8%ain.set tring81. e=09D R Logger.set tring80.A00")n*.get5ame899.getInt8099D addTrans. null. 0)7 .getInt869D if 8hasil M /9 O ystem. rsTrans5o./re/areS*a*e en*5I5VALUES neB* 4al)e F"r (e1A)id8I82 -allable tatement addTrans N !on.eBe0)*eU/da*e582 ambil aldo.e=e!uteUpdate89D int hasil N addTrans.Database Lanjut dengan I$% D$) 0"n.getDouble809D ystem.print8P5ilai depositAP9D in N ne# $uffered'eader8!on*erter9D tring ba!a N in.Kom.out.immy. noa!9D 'esult et rsD rs N ambil aldo.Z. Types.uery89D rsTrans5o.set tring83.println8PHubungi adminP9D R R R !on.parseDouble8ba!a9D if 8saldo T nilai MN /9 O 'esult et rsTrans5oD rsTrans5o N ambil5oTrans. PTL'P9D addTrans.Z.getLogger8%ain.A00")n*.println8PTransaksi berhasilP9D R else O ystem.Z.!lass.readLine89D Double nilai N Double.!lass.e=e!ute.log8Le*el. null.out. nilai9D addTrans. PTTP9D addTrans.

!lass.log8Le*el. > .getLogger8%ain.out. null.get5ame899. . 01/ .!lose-onne!tion89D R else O ystem.println8PCagal buka databaseP9D R R R Hendra. e=9D R %yD$:penHelper.Database Lanjut dengan I$% D$) Logger.immy. %T. &S&'&.Kom.

. authoriVation. %T. dan pri*ileges. > .0. 010 . D$) dapat juga bekerja dengan protokol keamanan lainnya seperti Kerberos untuk proses authentikasi user. %odel keamanan pada D$) 8sumberA I$% De*eloper Forks.0. )//49 *uthenti ation %erupakan fitur keamanan yang pertama kita jumpai ketika ingin mengakses ke D$) instan!e atau database. %odel keamanan pada D$) ditunjukan pada Cambar 2. se!ara umum D-L memiliki dua perintah utama yaitu C'A5T yang berfungsi memberikan otoritas.immy. Cambar 2. -ontohA Hendra. Untuk lebih memahami D-L pada D$). kita perlu memahami mekanisme keamanan pada database D$) yaituA authenti!ation. Data ontrol (anguage %erupakan bagian dari perintah .Database Lanjut dengan I$% D$) Bab 10.Kom. dan '&S:K& yang berfungsi men!abut otoritas yang telah diberikan melalui C'A5T.L yang digunakan untuk pengaturan hak akses pemakaian terhadap obje!t database dan data. Authentikasi pada D$) bekerja erat kaitannya dengan fitur keamanan pada sistim operasi untuk melakukan proses *erifikasi terhadap userid dan pass#ord 8se!ara default parameter AUTH&5TI-ATI:5 pada D$) di set ke &'S&'9.

dan hanya dapat diberikan kepada satu group saja.L didalam instan!e adalah5      db2startIdb2stop db2 !reateIdrop database db2 !reateIdrop tablespa!e db2 ba!kupIrestoreIrollfor+ard database db2 runtstat "any table$ db2 update db !fg for database nama database  .L kepada suatu group dengan menggunakan perintah 5 db2 update dbm !fg using )6)CT. dan L:AD0/. dan \ %AI5T adalah authorisasi le*el Instan!e. dapat memberikan authoritas )6)CT. > . se!ara otomatis user dengan nama susan akan menjadi member dari group "U$LI. Hendra. dan objek data yang dapat mereka akses. \ %AI5T7.L . 01) .ser dengan authoritas )6)CT. Tabel .-. sehingga hak diberikan atau di!abut se!ara ekplisit dengan perintah grantEre*oke.pada D$) yang memiliki authoritas untuk -:55&-T9 *uthori3ation Authorisasi meliputi penentuan operasi yang dapat dilakukan oleh user atau group.'$. \ -TL.O. Authorisasi pada D$) )6)ADM . D$AD% dan L:AD adalah authorisasi le*el database.immy.4 nama group 7 0/ \ AD%.0.L><.0.ser dengan authoritas . sehingga hak diberikan atau di!abut dengan update terhadap konfigurasi database manager 8dbm !fg9. 8pada !ontoh diatas. dan kemudian dilakukan koneksi ke database A%"L& dengan menggunakan user UsusanU dan pass#ord Udb)U sebagaimana yang buat pada sistim operasi. D$AD%. \ -TL.Kom.ser yang memiliki authoritas )6)ADM untuk suatu instan!e adalah dapat melakukan perintah DB2 apa saja terhadap instan!e( semua database yang berada diba+ah instan!e( dan semua obje!t didalam database& Mereka juga memiliki kemampuan untuk mengakses data didalam database dan melakukan <. ..Database Lanjut dengan I$% D$) db) !reate database bank on dA $uatlah satu user baru 8limited9 dengan nama UsusanU.A/T atau .L dapat melakukan semua perintah administratif dan maintenan!e didalam instan!e( tetapi mereka tidak dapat mengakses data didalam database( !ontoh perintah yang dapat dilakukan oleh )6)CT. "ada D$) ada lima tingkat authorisasi yang berbeda yaitu \ AD%. 7O' priDileges dan authorities kepada user atau group lain& 2ak ini se!ara otomatis diberikan kepada user ' "inistrator pada sisti" operasi *in o+s& )6)CT.. %T. dan set pass#ord sebagai Udb)U db) !onne!t to sample user susan pass#ordA db) "ada !ontoh tersebut diatas membuat database bank. %asing+masing authorisasi akan dijelaskan pada tabel .

Hendra.immy.-.L kepada suatu group dengan menggunakan perintah 5  db2 update dbm !fg using )6)MAI/T><.ser dengan authoritas .ser DBADM se!ara otomatis mendapatkan semua priDilege dari objek database dan semua isinya& LOAD Authoritas LOAD juga merupakan authoritas pada tingkat database( dan dapat diberikan kepada user maupun group& )esuai dengan namanya( authoritas LOAD memperbolehkan user untuk melakukan perintah LOAD terhadap tabel& 4erintah LOAD se!ara khususnya menggunakan alternatif yang lebih !epat dibandingkan dengan dengan perintah insert atau import ketika memasukan suatu tabel dengan data yang besar& 4erintah        yang dapat dilakukan oleh user dengan authoritas LOAD5 ?uies!e tablespa!es for table list tablespa!es runstat "any table$ load insert "harus memiliki priDilege insert pada tabel$ load restartIterminate after load insert "harus memiliki priDilege insert pada tabel$ load repla!e "harus memiliki insert dan delete priDilege pada tabel$ load restartIterminate after load repla!e "harus memiliki insert dan delete priDilege pada tabel$ 00 etiap perubahan terhadap konfigurasi dari database manager 8dbm !fg9.Kom.Database Lanjut dengan I$% D$) Contoh5 db2 get authoriMations Buatlah sebuah group baru pada sistim operasi +indo+s dengan nama db2group( dan tambahkan susan sebagai member dari group db2group& 'emudian jalankan perintah berikut5  )6)MAI/T db2 update dbm !fg using )6)CT.4 nama group DBADMN DBADM merupakan authoritas tingkat atabase! user DBADM memiliki kendali yang lengkap atas suatu database& . dapat memberikan authoritas )6)CT. maka instan!e dari D$) perlu distop dan distart kembali agar perubahan menjadi efektif.4 b2group## .L><. .ser DBADM tidak dapat melakukan pekerjaan administratif maupun maintenan!e seperti5    drop database dropI!reate tablespa!e ba!kupIrestore database update db !fg for database nama database  )edangkan perintah maintenan!e yang dapat dilakukan adalah5    !reateIdrop table grantIreDoke "any priDilege$ runstats on table "any table$ . > .O. %T.'$.L seperti5     db2startIdb2stop db2ba!kupIrestoreIrollfor+ard database db2 runstats "any table$ db2 update db !fg for database nama database . 011 .ser dengan authoritas )6)MAI/T hanya dapat melakukan sebagian dari authoritas yang dimiliki )6)CT.O.

Privilege "ri*ilege bersifat lebih mendetail dari pada otoritas. dimana meliputi semua objek didalam database. . "ri*ilege se!ara umum dapat ditempatkan pada dua kategori utama. dan /ri4ile+e *in+. > . *ie#.. yaitu /ri4ile+e *in+. inde= dan pa!kage. Hendra.a* da*a-a(e. "ri*ilege membantu mendefinisikan obje!t apa saja yang dapat dibuat dan di drop. %T. dan dapat diberikan kepada pemakai atau group. "ri*ilege tingkat database yang dapat diberikan kepada user adalah sebagai berikutA  -'&AT&TA$A User dapat membuat tabel didalam database  $I5DADDA User dapat membuat pa!kage didalam database dengan perintah $I5D  -:55&-TA User dapat koneksi ke database  -'&AT&Y5:TY(&5-&DA user dapat membuat unfen!ed user+defined fun!tions 8UD(s9  I%"LI-ITY -H&%AA user dapat se!ara implisit membuat s!hema didalam database tanpa menggunakan perintah -'&AT& -H&%A.a* "->e. dimana berasosiasi dengan objek tertentu. e!ara e=pli!it perintah D$AD% diperoleh melalui perintahA grant dbadm on database to userEgroup nama "erintah tersebut diatas hanya dapat dijalankan oleh seorang pemakai dengan authoritas \ AD% untuk memberikan authoritas D$AD% kepada pemakai lain.Database Lanjut dengan I$% D$) 2anya user dengan authoritas )6)ADM dan DBADM yang dapat melakukan grantIreDoke authoritas LOAD kepada seorang user atau group& Contoh5 grant load on database to user nama user grant insert on table nama tabel to user nama user grant load on database to group nama group grant delete on table nama tabel to group nama group grant insert on table nama tabel to group nama group NAuthoritas D$AD% diperoleh seorang user se!ara impli!it pada saat U!reate database nama databaseU. %ereka juga mendefinisikan perintah yang mana seorang user dapat akses seperti tabel.  L:ADA user dapat load data kedalam tabel  .UI& -&Y-:55&-TA user dapat mengakses suatu database ketika dalam tahapan <uies!ed.  -'&AT&Y&[T&'5ALY':UTI5&A user dapat membuat pro!edure untuk digunakan oleh aplikasi dan user lain dari database.Kom. 013 .immy.

I/ C. %T. sys!at.delete on table sales from susan Hendra.un!tion( Method )!hema )!hema )!hema %eterangan Memberikan authoritas penuh pada objek( user dapat melakukan grant atau reDoke priDilege pada objek& Memperbolehkan user untuk menghapus re!ord dari objek Memperbolehkan user untuk menyisip re!ord kedalam objek dengan perintah I/) . ..inde=auth.). sys!at.T& Menyediakan kemampuan untuk menampilkan isi dengan perintah ) L CT Memperbolehkan user untuk memperbaharui re!ord dalam objek dengan perintah . sys!at.OL 1b2ek terkait Table( 7ie+( Inde-( 4a!kage( Alias( Dis!tin!t Type( .i nsert. dan sys!at. .tabauth. -ontohA db) grant sele!t on table sales to susan db) re*oke sele!t on table sales from susan db) grant sele!t. .4DAT Memperbolehkan user untuk melakukan alter terhadap definisi objek Memperbolehkan user untuk membuat inde.Database Lanjut dengan I$% D$) -ontohA grant !onne!t on database to user0 grant !reatetab on database to user0 edangkan pri*ilege tingkat objek dapat ringkas pada Tabel .Kom.T ) L CT . update. update.4DAT ALT . 014 .T ataupun IM4O.T ALT . merupakan pri*ilege yang grant atau re*oke dari user atau group dengan menggunakan perintah C'A5T.delete on table sales to susan db) re*oke sele!t.( )e?uen!e Table( 7ie+ Table( 7ie+ Table( 7ie+ Table( 7ie+ Table Table Table 4a!kage 4a!kage( 4ro!edure( . > .s!hemaauth.routineauth.)..!oauth.immy.insert. AT I/ D. sys!at. Tabel . I/D = . 5ama *ie# tersebut adalah sys!at. "ri*ilege tingkat objek pada D$) /a"a pri0ilege CO/T. dan '&S:K&.pada obje!t Menyediakan kemampuan untuk !reate atau drop foreign key pada obje!t Memperbolehkan user untuk rebind pa!kage yang ada Memperbolehkan user untuk mengeksekusi pa!kage& Memperbolehkan user untuk melakukan modifikasi terhadap definisi obje!t Memperbolehkan user untuk !reate objek didalam skema Memperbolehkan user untukdrop objek didalam skema D L T I/) .O4I/ Informasi terkait dengan pri*ilege tingkat objek disimpan pada system !atalog *ie#.pa!kageauth EB/li0i* #ri4ile+e. /C ) BI/D = C.D.

sales9 on table sales to susan db) !reate *ie# sales.adalah group spesial D$) yang memasukan semua user dari suatu database tertentu.OL pada Die+ku hanya jika CO/T. yaitu -:55&-T.ser yang melakukan perintah tersebut C.ser yang melakukan perintah tersebut . -'&AT&TA$. -H&%AAUTH -ontohA sele!t ] from sys!at. AT TABL tabelku C.Database Lanjut dengan I$% D$) db) grant !ontrol on table sales to susan db) re*oke !ontrol on table sales from susan db) grant update 8region.dbauth sele!t ] from sys!at. \ -AT.TA$AUTH. -'&AT&TA$. "ri*ilege ini tetap dimiliki oleh user #alaupun authoritas D$AD% dire*oke dari user. > . ]] "U$LI. &L&-T pada tabel system. AT 7I 1 Die+ku C. . I%"LI-ITY -H&%A. dan -'&AT&Y5:TY(&5-&D.OL pada tabelku C. $ersamaan dengan authority D$AD% juga se!ara impli!it diberikan pri*ilege -:55&-T. Croup "U$LI.U&$&.tbauth #here granteeNU U A5U I /li0* /ri4ile+e. \ -AT."A-KAC&AUTH.U&$&. $I5DADD. 016 . AT I/( ALT .-:LAUTH. AT DATABA) databaseku ) L CT pada tabel system !atalog databaseku( 4.I5D&[AUTH.OL dimiliki pada seluruh tabel dan Die+ yang terhubung didalam definisi dalam Die+ku C. AT )C2 MA skemaku CO/T.Kom.I/( D. $I5DADD.as sele!t ] from sales #here regionNU. merupakan pri*ilege yang se!ara otomatis digrant oleh D$) ketika suatu perintah tertentu dilakukan. I%"LI-ITY -H&%A.D$AUTH.O4I/ pada skemaku ditambah dengan kemampuan untuk melakukan grant kepada orang lain CO/T.immy. Ada beberapa pri*ilege se!ara default di grant ke group "U$LI-. tanpa perlu pemakaian perintah C'A5T se!ara e=pli!it.BLICNN IM4LICIT>)C2 MA pada databasekuN ]Ketika user membuat database. and \ -AT. \ -AT.U&$&-U db) grant sele!t on sales. Hendra. \ -AT.to susan db) grant !reatein on s!hema hendra to susan Untuk mengetahui jenis authoritas yang dimiliki oleh user dapat dilihat pada tabel \ -AT.tidak perlu didefinisikan pada tingkat sistm operasi. se!ara impli!it user tersebut mendapatkan authoritas D$AD% pada database tersebut. !ontohA 3erintah &ang ilakukan 3ri0ilege &ang i grant 3eneri"a grant . %T.

ebagai !ontoh diasumsikan ba#a db)pa!kage0 menjalankan perintah .a00")n* 8dalam hal ini kita perlu menyebutkan nama s!hema.Kom.U%D5 $$U. dan lakukan koneksi ke database bank dengan user susan. Aktifkan db)!md. db) !onne!t to bank user susan db) get authoriVations sele!t ] from hendra. 01.L dalam format e=e!utable.ADDYA--:U5TP of type P"':-&DU'&Pha*ing !ompatible arguments #as found.'N ISUSANI d"e( n"* ha4e *he re1)ired a)*h"riOa*i"n "r /ri4ile+e * /erF"r "/era*i"n ISELE=TI "n "->e0* IHEND$A.a!!ount SHL&.L TAT&N3)223.L/33/5 5o authoriVed routine named PH&5D'A. seorang user hanya membutuhkan pri*ilege &[&-UT& terhadap pa!kage tersebut untuk berhasil menjalankan perintah didalam pa!kage.UtonyU.L stati! berikutA sele!t ] from org insert into test *alues 80. . SHLSTATEC:2. seorang user dengan pri*ilege &[&-UT& pada db)pa!kage0 akan se!ara tidak langsung mendapatkan pri*ilege &L&-T pada tabel org dan pri*ilege I5 &'T pada tabel test.. Atau dengan kata lain suatu pa!kage yang mengandung perintah . 19 maka dalam hal ini. ). uatu pa!kage yang mengandung satu atau lebih perintah . Hendra. (atihan 0. ).Database Lanjut dengan I$% D$) Indire0* /ri4ile+e.L dimana telah dikon*ersi kedalam format dimana D$) menggunakannya se!ara internal untuk mengeksekusi mereka. karena tabel a!!ount berada diba#ah s!hema hendra sebagai pembuat tabel tersebut9 !all hendra. jika semua statement tersebut adalah stati!. UmedanU9D .immy. . $uatlah sebuah limited user baru pada sistim operasi anda dengan nama susan dan pass#ord db). . > . %T.&' e!ara default user susan tidak memiliki otoritas ataupun pri*ilege untuk melakukan operasi sele!t terhadap tabel hendra.A==OUNTI. pri*ilege se!ara indire!t ketika pa!kage dieksekusi oleh database manager.addYa!!ount8U7)/3/1/64U.

!abang. .L/4405 P U A5P does not ha*e the re<uired authoriVation or pri*ilege to perform operation PU"DAT&P on obje!t PH&5D'A.Kom. dan lakukan koneksi ke database bank !onne!t to bank !reate *ie# nasabahYmedan as sele!t nama. tetapi tidak memiliki hak untuk sele!t hendra. > .adi jelas bah#a user susan dapat melakukan koneksi ke database $A5K tetapi tidak memiliki otoritas untuk mengakses objek database didalamnya. Aktifkan db)!e.Database Lanjut dengan I$% D$) .nasabahYmedan perintah diatas akan berhasil.5A A$AHY%&DA5P.A--:U5TP. kota from a!!ount #here kotaNUmedanU grant sele!t on nasabahYmedan to susan 3. karena user susan sudah diberi pri*ileges sele!t terhadap *ie# nasabahYmedan. %T.a!!ount yang menjadi sumber data dari *ie# tersebut. sele!t ] from hendra.immy.L TAT&N3)4/0 #alaupun susan dapat melakukan sele!t *ie# hendra. . "ada jendela db)!e grant e=e!ute on pro!edure addYa!!ount to susan grant e=e!ute on fun!tion ambilYsaldo to susan 6. . 1. Aktifkan kembali ke db)!md user susan sele!t ] from hendra. Hendra.L/4405 P U A5P does not ha*e the re<uired authoriVation or pri*ilege to perform operation P &L&-TP on obje!t PH&5D'A.a!!ount . $uatlah program Add a!!ount dengan menggunakan koneksi user susan.nasabahYmedan set nama N Ulimada 0)1U #here namaNUlimadaU . update hendra. 012 .nasabahYmedan.L TAT&N3)4/0 4.

. Tarik Tunai . %T.)99 language s<l reads s<l data no e=ternal a!tion Hendra. .. -ek aldo Tarik Tunai Transfer antar rekening -etak 0/ Transaksi terakhir -ek aldoA aldo anda adalah A ====== Tarik TunaiA .umlah penarikan A ====== 8transaksi di!atat dan potong saldo9 kalau berhasil A ilahkan ambil uang anda. mediatransaksi *ar!har819. 3. Transfer antar rekening 5o 'ekening tujuanA 5ilai transferA 5e=t %un!ul nama yang dimasking A H&[[[A -atat transaksi dan pindah saldo.Kom. 017 . kodetransaksi *ar!har8)9. nilai de!imal804. ). 0rea*e F)n0*i"n la(*A'&A*ran( 5/n"a00")n* 4ar0har52&88 returns table 8tanggal date. > . A!!ount A %enuA 0.immy. 1. $uatlah program -ek aldo.Database Lanjut dengan I$% D$) pass#ord db). elamat iang 5o. Transfer antar rekening AT% dengan menggunakan koneksi user feli!ia pass#ord fortuna 8grand fungsi atau pro!edure yang diperlukan9.

kodetransaksi. tanggal. kodetransaksi. mediatransaksi.pnoa!!ount order by tanggal des!9 as a #here m J 0/` -ontoh pemakaianA (ele0* U Fr" *a-le5la(*A'&A*ran(5DS2&:&<&2:D88 Hendra. mediatransaksi. . 03/ .Database Lanjut dengan I$% D$) re*)rn sele!t tanggal.Kom. %T.immy. > . nilai from 8sele!t ro#Ynumber89 o*er89 as m. nilai from trans #here noa!!ountN lastY0/Ytrans.

dan masing+masing metode logging memiliki implikasi terhadap ba!kup dan re!o*ery. dan offline ba!kup adalah mudah dilakukan pada D$) dan sifatnya full database ba!kup. Kedua jenis logging tersebut adalah 0ir0)lar dan ar0hi4e l"++in+ 8lihat pembahasan ditopik transa!tion9. dan "E$&<E": $a!kup data sering kali diabaikan dan sampai kepada kejadian kerusakan data baru disadari bah#a tindakan $a!kup data merupakan suatu syarat bagi kesinambungan dari pemanfaatan sistim informasi. B*$#/P. sedangkan online ba!kup memungkinkan transaksi untuk terus berlangsung ketika proses ba!kup berjalan.Kom.Database Lanjut dengan I$% D$) Bab 14. . "ES-&"E. 030 . &ffline ba kup dan re over% e!ara default jenis logging yang digunakan pada D$) adalah !ir!ular logging 8bersifat round robin9. terdapat dua pilihan yaitu se!ara offline dan se!ara online. Ada dua jenis logging pada D$). maka jenis ba!kup yang dapat dilakukan adalah offline ba!kup dan *ersion re!o*ery. maka semua transaksi setelah posisi terakhir offline ba!kup akan hilang. #onsep ba kup dan re over% uatu ba!kup dari database adalah suatu duplikasi dari database beserta dengan informasi kontrol. anda dapat melakukan suatu online ba!kup dan roll for#ard re!o*ery. "erlu diperhatikan bah#a jika anda memutuskan untuk menggunakan !ir!ular logging dan offline re!o*ery sebagai strategi ba!kup anda. Untuk memeriksa jenis logging yang digunakan pada database anda dapat menggunakan perintahA db) get db !fg for bank Hendra. dimana anda dapat memulihkan data sampai kepada suatu titik #aktu atau sampai pada akhir dari log untuk meminimalkan kehilangan data. Pilihan pada ba kup data Untuk melakukan ba!kup data. "ada ar!hi*e logging. %T. Ada implikasi pemilihan modus ba!kup terhadap pemulihan data.immy. Ketika anda memilih !ir!ular logging. karena anda dapat memulihkan data melalui pengembalian dari hasil ba!kup. > . "ilihan se!ara offline membutuhkan kondisi dimana semua aplikasi di+dis!onne!t dari database. yang dalam kondisi siap di restore apabila terjadi kerusakan data. $a!kup data meminimalkan potensi kehilangan data akibat kerusakan.

).Database Lanjut dengan I$% D$) etelah pemberian perintah tersebut diatas.).Kom./)4//. Hendra.)/ *erhada/ l"+ File. #ith 3 buffers buffer 3/76 parallelism 0 Untuk melakukan proses offline ba!kup membutuhkan authority \ AD%. 03) . jika jenis logging database anda adalah !ir!ular. taken at )/00/4/1001)33 atau restore database bank from eAG/2. dengan mengubah parameter L:C'&TAI5 menjadi :5. adalah (an+a* /en*in+ >)+a -a0. atau ba!kup database bank to eAG/2. :ffline ar!hi*e log. maka kedua parameter tersebut diatas bernilai :((. ./)4//. e!ara sederhana offline ba!kup dapat dilakukan dengan menggunakan perintahA ba!kup database bank to eAG/2.immy. %T. =a*a*an: Un*)./)4//. adalah log yang mana telah dipindahkan dari dire!tory a!ti*e log ke lokasi lain dimedia atau tape./)4//. adalah log yang berisi transaksi yang mana belum di !ommit atau rollba!k atau transaksi yang telah di !ommit tetapi belum di tulis ke disk. 1. > . perhatikan parameter konfigurasi untuk L:C'&TAI5 dan U &'&[IT. setelah mengubah mekanisme logging.an /r"(e( Untuk dapat melakukan online ba!kup. maka ar!hi*e logging harus diaktifkan. ebelum melakukan restore.)/. anda dapat menggunakan perintah berikut ini untuk menampilkan semua history dari ba!kup data yang pernah dilakukan terhadap databaseA list history ba!kup all for bank elanjutnya untuk melakukan restore database anda dapat menggunakan perintahA restore database bank from eAG/2. adalah log yang mengandung informasi transaksi yang telah di !ommit dan ditulis ke disk. \ -T'L atau \ %AI5T. "nline -a0. A!ti*e log. ela. taken at )/00/4/1001)33 repla!e e=isting &nline ba kup dan re over% Untuk dapat melakukan D$) online ba!kup dan re!o*ery anda perlu memahami beberapa istilah berikut iniA 0. :nline ar!hi*e log.

////// U I5C L:-AL TI%& A5D T:"D atau ':LL(:'FA'D DATA$A & $A5K T: &5D :( L:C A5D -:%"L&T&D +n remental ba kup dan re over% Ketika database anda berkembang dalam ukuran terabyte dan petabyte. . dan U &'&[IT adalah :((. maka rollfor#ard tidak dapat dilakukan./)4//. Langkah a#al untuk mengaktifkan online ba!kup. maka #aktu dan sumber daya perangkat keras yang dibutuhkan bertumbuh menjadi hal yang menentukan.Database Lanjut dengan I$% D$) maka ar!hi*e logging akan men!atat transaksi yang di !ommit./)4//. taken at )/00/4/104/.43 etelah proses restore selesai.immy./7. dan sering kali #aktu yang tersedia tidak layak untuk melakukan ba!kup terhadap keseluruhan data maupun table spa!es sekaligus #aktu. > . ':LL(:'FA'D DATA$A & $A5K T: )//3+/6+)7+04.)1. adalah mengubah parameter L:C'&TAI5 menjadi :5 dengan perintahA db) update db !fg for bank using logretain on db)stop db)start Kemudian periksa kembali status dari L:C'&TAI5 dengan menggunakan perintahA db) get db !fg for bank dan jika anda perhatikan maka nilai konfigurasi untuk parameter L:C'&TAI5 adalah '&-:S&'\. maka database berada pada kondisi ':LL(:'FA'D "&5DI5C. pada proses rollfor#ard ini membutuhkan log file. Adalah lebih baik jika anda Hendra. elanjutnya untuk melakukan restore dapat dilakukan seperti biasanya dengan perintah dan diikuti perintah ':LL(:'FA'D ke kondisi a!ti*e db) restore database bank from dAG/2.Kom./7.////// U I5C L:-AL TI%& A5D -:%"L&T&D atau ':LL(:'FA'D DATA$A & $A5K T: )//3+/6+)7+04. db) ba!kup database bank to dAG/2. 031 . etelah perubahan ini maka pen!atatan log tidak bersifat round robin lain.)1./)4//. sehingga diperlukan proses rollfor#ard sampai ketitik #aktu tertentu. dan jika log file tidak tersedia. %T. dan hasil restore tidak dapat digunakan sama sekali. dan selanjutnya telah dapat dilakukan online ba!kup dengan perintahA db) ba!kup database bank online to dAG/2.

%T. sedangkan suatu delta ba!kup adalah ba!kup dari perubahan sejak ba!kup terakhir yang berhasil 8baik full. anda perlu melakukankan restore full ba!kup terakhir kemudian diikuti setiap delta ba!kup sampai kepada delta ba!kup hari abtu. "ada in!remental ba!kup. in!remental maupun delta ba!kup9. > . 033 . yaituA 0. anda hanya perlu melakukan restore full ba!kup terakhir. Delta uatu in!remental ba!kup adalah ba!kup dari semua perubahan sejak full ba!kup terakhir yang berhasil. $entuk ba!kup ini juga dikenal dengan istilah kulmulatif ba!kup.Database Lanjut dengan I$% D$) hanya melakukan ba!kup terhadap page yang berubah saja dari bada seluruh database atau tablespa!e. dan in!remental ba!kup pada hari abtu. Hendra.Kom. . sedangkan pada delta ba!kup.immy. "ada D$) mengenal dua strategi in!remental ba!kup. In!remental ). jika ada kerusakan pada haris abtu.

%T. 3. dan jika diset ke ?\& @. atau dapat menggunakan opsi automati! untuk otomatis merestore mulai dari full ba!kup dan mengaplikasikan in!remental ba!kup terakhir. maka anda perlu melakukan suatu full database ba!kup dalam rangka memiliki garis dasar dimana in!remental b !kup dapat dilakukan. 1. setelah ini anda akan berada pada modus roll for#ard pending 8 ./)4//. db) ba!kup database bank online to dAG/2. 034 ./000). maka tidak ada tra!king perubahan pada page yang diupdate.14 #ithout prompting db) rollfor#ard database bank to end of logs and !omplete Untuk delta ba!kup dan restore. maka perlu diupdate parameter konfigurasi T'A-K%:D. Langkah+langkah melakukan in!remental ba!kupA 0. sehingga diperlukan proses restore data mulai dari fullba!kup terakhir yang berhasil. dimana jika diset ke ?5:@ 8default9./)4//. etelah setting parameter ini ke ?\& @. > .immy. pada skenario yang sama. kemudian dilanjutkan dengan restore in!remental ba!kup terakhir dan roll for#ard. maka utility ba!kup dapat mendeteksi bagian mana dari page database yang harus dipelajari oleh in!remental ba!kup dan se!ara potensial kedalam image ba!kup.Database Lanjut dengan I$% D$) Agar dapat diketahui page database yang diupdate. anda perlu melakukan restore Hendra. db) update db !fg using tra!kmod on ). db) ba!kup database bank online in!remental to dAG/2.Kom.59 sehingga perlu dilakukan roll for#ard terhadap transaksi. db) restore database bank in!remental automati! from eAGtmp taken at )//3/. dst %isalnya jika terjadi kegagalan pada data.L000. .

)/ #ada >endela ' >alan.an /erin*ah: db) update db !fg for bank using logretain on db) stop db) start db) ba!kup database bank to dAG $a!kup su!!essful. 036 .Kom./07 Lakukan online ba!kup untuk menyelesaikan masalah $A-KU" "&5DI5C db) ba!kup database bank "nline to dAG Hendra.)/ 0. "ada jendela 0 jalankan perintahA db) ba!kup database bank to dAG . D$) menyediakan utility db)!krst untuk <uery history database dan menghasilkan daftar timestamp untuk image ba!kup yang diperlukan untuk suatu in!remental restore. "ada jendela 0 jalankan perintah db) get db !fg for bank. .L0/145 The database is !urrently in use.43 db) !onne!t to bank .L TAT&N4. dan perhatikan parameter konfigurasi untuk L:C '&TAI5 8seharusnya adalah :(( yang berarti database menggunakan !ir!ular logging9 3. . (atihan Si )la(i "FFline Ba0./07 Hal ini terjadi karena !ir!ular logging tidak dimungkinkan online ba!kup dapat dilakukan 8database sedang digunakan oleh user lain9. %T.3.L TAT&N4.Database Lanjut dengan I$% D$) image delta setiap bari. The timestamp for this ba!kup image is A )/0)/1/. Koneksi masing+masing ke database bank 8db) !onne!t to bank9 1.immy. . dan roll for#ard untuk melengkapi re!o*ery. Si )la(i "nline -a0. > .0.L00065 A !onne!tion to or a!ti*ation of database P$A5KP !annot be made be!ause of $A-KU" "&5DI5C. Aktifkan dua jendeal db)!md ).

.immy. The database files #ill be deleted.0. The timestamp for this ba!kup image is A )/0)/1/. db)start db) !onne!t to bank . db) rollfor#ard database bank to end of logs and !omplete . ./07 Dalam hal ini kita belum melakukan roll+for#ard sampai ketitik terakhir setelah ba!kup.0./32 Hendra. . db) !onne!t to bank . taken at )/0)/1/.L TAT&N4. Do you #ant to !ontinue Z 8yEn9 y D$)////I The '& T:'& DATA$A & !ommand !ompleted su!!essfully.5 A !onne!tion to or a!ti*ation of database P$A5KP !annot be made be!ause of ':LL+(:'FA'D "&5DI5C.L TAT&N4. artinya ada kerusakan pada database db) list history ba!kup all for bank !atat timestamp ba!kup dengan -omment A D$) $A-KU" $A5K :5LI5& db) restore database sample from dAG/2.3740 .L)417F FarningQ 'estoring to an e=isting database that is the same as the ba!kup image database. 03. %T./)4//.L/)715 &rror a!!essing a table spa!e !ontainer.3740 db) !reate table !oba 8kolom integer9 db) insert into table !oba 8kolom9 *alues 809 db) dis!onne!t sample db) terminate db)stop Hapus file dAGdb)Gnode////GsampleGt/////// dan hapus file !///////. > . 8ingat perintah pada saat kita buat tabel !oba dijalankan setelah online ba!kup9.-AT untuk mensimulasikan kerusakan data pada database.Database Lanjut dengan I$% D$) $a!kup su!!essful.Kom.L000.

an /en+iri an da*a-a(e . 032 .um+er o0 no)es 8aDe returne) status .0/.///1./3 db) restore database bank from dAG taken at )/0)/1/.15G " S#######.ext log 0ile to +e rea) 1og 0iles 'rocesse) 1ast committe) transaction *.0. . db) !onne!t to bank db) sele!t ] from !oba Si )la(i .)/ -e(er*a l"+( #ada 0"n*"h ini .e (i*e lain db) ba!kup database bank online to dAG in!lude logs 0a*a* L*i e(*a /M db) drop database bank db) restore database bank from dAG taken at L*i e(*a /M logtarget dAG db) rollfor#ard db bank to end of logs and stop o*erflo# log path 8dAG9 Hendra. %T.o)e num+er -oll0orwar) status .&=.Database Lanjut dengan I$% D$) -oll0orwar) Status 4n'ut )ata+ase alias .e(alahan ha/)( da*a time The !urrent time isA 02A0/A3).3740 db) rollfor#ard database bank to )/0)+/1+/.$####4 = +an9 = = = = = = # not 'en)ing S#######.i*a en(i )la(i. db) drop table !oba .immy.Kom. using lo!al time and !omplete db) !onne!t to bank db) sele!t ] from !oba Si )la(i "nline -a0.+02.L/)/35 PH&5D'A.15G $# $"#%"#P" #.-:$AP is an undefined name.3). > .?I.L TAT&N3).1.###### K:C :8e -511F5-W7-* comman) com'lete) success0ully. .

%T.)/ re(*"re (e0ara diFFeren(ial 5del*a8 Hendra.immy. "erintah tersebut se!ara otomatis melakukan restore in!remental ba!kup mulai dari fullba!kup terakhir dari in!remental ba!kup tersebut berdasarkan L*i e(*a /M db) rollfor#ard database bank to end of logs and stop o*erflo# l"+ /a*h 5d:V8 Si )la(i -a0.arena .)/ -e(er*a l"+(. . 037 .)/ #ada 0"n*"h ini .an -a0.)/ re(*"re (e0ara in0re en*al -a0.i*a a.an *erha/)(n!a da*a-a(e.Database Lanjut dengan I$% D$) Si )la(i -a0. .i*a a. db) update db !fg for bank using logretain on db) update db !fg for bank using tra!kmod on db) terminate db)stop db)start db) ba!kup database bank to dAG db) ba!kup database bank online to dAG in0l)de l"+( db) !onne!t to bank insert into !oba 8kolom9 *alues 80/9 ba!kup database bank online in!remental to dAG in0l)de l"+( $andingkan perbedaan ukuran file hasil ba!kup db) !onne!t to bank db) insert into !oba 8kolom9 *alues 819 db) ba!kup database bank online in!remental to dAG in0l)de l"+( 0a*a* L*i e(*a /M db) drop database bank db) restore database bank in!remental automati! from dAG taken at L*i e(*a /M l"+*ar+e* d:V D$)////I The '& T:'& DATA$A & !ommand !ompleted su!!essfully. > .Kom.an en(i )la(i.

04/ .Database Lanjut dengan I$% D$) db) ba!kup database bank online to dAG db) ba!kup database bank online in!remental delta to dAG !atatA L*i e(*a /M db) restore database bank in!remental automati! from dAG taken at L*i e(*a /M db) rollfor#ard database bank to end of logs and stop Hendra. %T. . > .Kom.immy.

Torey and Toby .jsp. httpAEEpublib.immy. Uni=. Hendra.Kom. Database ystemsA design. -ourse Te!hnology. &lse*ier In!. )/00 . b -opyright I$% -orporation 0771. %T.. Database DesignA kno# it all. and Findo#s Information -enter. > . .!omEinfo!enterEdb)lu#E*7r.ibm.boulder. )/00 "eter 'ob and -arlos -oronel. implementation and management. 040 . )//7.Einde=.Database Lanjut dengan I$% D$) Daftar "ustaka I$% D$) Database for Linu=.