library.binus.ac.id · web viewcontoh penggunaan dari syntax distinct untuk menampilkan data...

135
BAB 2 LANDASAN TEORI 2.1 Database Sebuah database sangat erat hubungannya dengan sebuah data, dimana tanpa adanya sebuah data maka sebuah database tidak akan dibutuhkan, arti dari data sendiri menurut Hoffer, Prescott, & Topi (2009, p46) adalah perwakilan penyimpanan dari objek dan kejadian yang memiliki pengertian dan kepentingan dalam lingkungan pengguna, Connolly & Begg(2010, p14) juga mengatakan bahwa data adalah sebuah jembatan antara komponen mesin dan komponen manusia, dijelaskan juga oleh Deliana, Cahya, & Kaisariza(2009, p1) bahwa data adalah kumpulan fakta yang dikumpulkan sebagai hasil pengalaman, observasi, atau percobaan dengan sistem komputer. Dari ketiga definisi diatas maka dapat disimpulkan bahwa data adalah sekumpulan fakta yang terjadi dan memiliki arti bagi pengguna yang dicatat dan disimpan di dalam suatu record. Didasari oleh definisi mengenai data yang telah dijabarkan diatas, 6

Upload: others

Post on 09-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

BAB 2

LANDASAN TEORI

2.1 Database

Sebuah database sangat erat hubungannya dengan sebuah data, dimana tanpa

adanya sebuah data maka sebuah database tidak akan dibutuhkan, arti dari data sendiri

menurut Hoffer, Prescott, & Topi (2009, p46) adalah perwakilan penyimpanan dari

objek dan kejadian yang memiliki pengertian dan kepentingan dalam lingkungan

pengguna, Connolly & Begg(2010, p14) juga mengatakan bahwa data adalah sebuah

jembatan antara komponen mesin dan komponen manusia, dijelaskan juga oleh Deliana,

Cahya, & Kaisariza(2009, p1) bahwa data adalah kumpulan fakta yang dikumpulkan

sebagai hasil pengalaman, observasi, atau percobaan dengan sistem komputer. Dari

ketiga definisi diatas maka dapat disimpulkan bahwa data adalah sekumpulan fakta yang

terjadi dan memiliki arti bagi pengguna yang dicatat dan disimpan di dalam suatu

record. Didasari oleh definisi mengenai data yang telah dijabarkan diatas, data memiliki

kegunaan yang penting bagi para pengguna dari data itu sendiri, dimana data merupakan

fakta-fakta yang terjadi dan dibutuhkan oleh seorang pengguna atau suatu institusi atau

organisasi yang akan diolah menjadi informasi dimana informasi yang terolah

merupakan informasi yang dibutuhkan oleh para penggunanya. Dengan data yang fiktif

atau tidak benar maka informasi yang dihasilkan akan menyesatkan pengguna informasi

tersebut. Gambar 2.1 menunjukan contoh dari data client :

Gambar 2. 1 Contoh data Client (Sumber : Connolly & Begg(2010,p11))

6

Page 2: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

7

dimana data pada tabel Client yang ada pada gambar 2.1 berupa CR76, CR74, dan

sebagainya dan data-data tersebut menunjukan atau memberikan informasi bahwa

clientNo ‘CR76’ memiliki nama depan’John’ dan nama belakang ‘Kay’ beralamat di ’56

High St.London SW1 4EH’ dan no telponnya ‘0171-774-5632’.

Untuk penyimpanan data dan pengolahannya maka dibutuhkan sebuah database

untuk menampung atau menyimpan data. Menurut Connolly & Begg (2010,p54)

Database merupakan sekumpulan data yang saling berelasi, selain itu Connolly & Begg

(2010, p54) juga menjelaskan dengan lebih rinci bahwa Database merupakan

sekumpulan data yang berelasi secara logika dan deskripsinya, yang di-desain untuk

memenuhi kebutuhan informasi dari sebuah organisasi. Kemudian dari kedua definisi

mengenai database diatas dapat disimpulkan bahwa database adalah sekumpulan data

yang saling berhubungan dimana data tersebut digunakan oleh sebuah organisasi atau

perusahaan dalam melaksanakan proses bisnisnya. Sebuah database memiliki beberapa

komponen yakni :

1. Entitas : merupakan sebuah objek yang direpresentasikan pada database

2. Atribut : merupakan karakteristik yang mendeskripsikan objek

3. Hubungan : merupakan hubungan antar entitas

Untuk penjelasan lebih lanjut dan contoh dari entitas,atribut, dan hubungan

dapat dilihat pada subbab 2.7.1 mengenai Entity Relationship Diagram.

Di dalam suatu database data disimpan ke dalam file-file yang diorganisasikan

bedasarkan sebuah schema atau struktur tertentu yang disimpan pada perangkat keras

khusus seperti yang tertera pada gambar 2.1 dibawah

Page 3: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

8

Gambar 2. 2 Contoh Database(Sumber : http://pbsabn.lecture.ub.ac.id/files/2012/05/Untitled5.jpg)Bedasarkan gambar diatas data yang disimpan dalam sebuah database

dinamakan sebuag field, dan kumpulan dari field tersebut dinamakan record, dimana

record-record yang ada akan akan disimpan pada sebuah file dan file-file tersebut akan

disimpan dalam database. Hirarki data dapat dilihat pada gambar 2.3 :

Gambar 2. 3 Hirarki Data (Sumber : http://pbsabn.lecture.ub.ac.id/files/2012/05/Untitled6.jpg)

Page 4: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

9

Dalam melakukan aktivitasnya untuk mendukung kebutuhan informasi

perusahaan database memiliki dua jenis konsep dalam pemrosesan data. Kedua konsep

dalam pemrosesan data yakni :

1. Online Transaction Processing(OLTP)

Menurut Connolly & Begg(2010,p1199) OLTP merupakan sebuah sistem

pemrosesan datayang dirancang secara khusus untuk menangani high transaction

dengan transaksi yang merubah data operasional yang digunakan dalam operasi sehari-

hari seperti sistem Point Of Sales(POS), pengecekan stok barang, pembuatan invoice.

Connolly & Begg(2010,p1199) juga mengatakan pada umumnya Sistem OLTP

digunakan untuk menangani transaksi yang dapat diprediksi, berulang-ulang, dan di-

update secara instensif(sering dilakukan).

2. Online Analytical Processing(OLAP)

Menurut Connolly & Begg(2010,p1250) OLAP merupakan proses sintetik

dinamik, analisa, dan consolidasi dari multi-dimensi data dalam jumlah besar. Dalam

penerapannya OLAP memungkinkan seorang pengguna untuk melihat data organisasi

dalam bentuk yang dibutuhkan oleh pengguna tersebut, sebagai contoh OLAP digunakan

oleh suatu perusahan untuk menampilkan data perbandingan antara penjualan properti

antar kota dalam bentuk tabel perbandingan seperti yang ditunjukan pada gambar 2.4

Page 5: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

10

Gambar 2. 4 Tabel tiga kolom, dan (b) matriks dua dimensi

(Sumber:Connolly & Begg(2010, p1254)

Seperti yang dapat dilihat pada gambar 2.4 data yang ditampilkan oleh OLAP

dapat berbentuk tabel tiga kolom(a) atau matriks dua dimensi(b) sesuai dengan

kebutuhan perusahaan dalam melihat data.

2.2 The Database Management System (DBMS)

Menurut Connolly & Begg (2010,p66) DBMS merupakan sebuah perangkat

lunak yang berinteraksi antara program aplikasi pengguna dengan database dan

memungkinkan seorang pengguna untuk mendefinisikan, membuat, menjaga, dan

mengatur data yang ada di dalam database. Seperti yang dikatakan oleh Connolly pada

penjelasan DBMS diatas DBMS merupakan sebuah perangkat lunak yang digunakan

sebagai perantara antara database dengan pengguna untuk mengatur data yang ada di

dalam database.

Dalam penggunaan DBMS, untuk mengakses data yang ada di dalam DBMS

pengguna diharuskan menggunakan bahasa query, Bahasa query yang paling umum

Page 6: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

11

adalah SQL lalu menurut Connolly & Begg(2010, p184) SQL dikatakan sebagai sebuah

bahasa yang di desain untuk mengubah sebuah input menjadi output yang diinginkan,

Sedangkan menurut Ashdown & Kyte (2011, p7-1), SQL merupakan bahasa

pemograman tingkat tinggi dimana semua program dan user-nya mengakses Data di

dalam database. Lalu dari kedua definisi mengenai SQL yang telah disebutkan dapat

ditarik kesimpulan bahwa SQL merupakan sekumpulan perintah yang digunakan oleh

user untuk memanipulasi data yang ada di dalam database, baik menambah, mengubah,

ataupun menghapusnya.

DBMS sendiri dalam penerapannya ke dalam proses bisnis sebuah

organisasi/pengguna memiliki beberapa kelemahan dan kelebihan seperti yang dikatakan

menurut Connolly&Begg(2010,p77) kelebihan dan kekurangan dari DBMS adalah :

1. Kelebihan

Control of Data redundancy, dengan DBMS maka pengulangan/duplikasi data

dapat dikendalikan. Pada umumnya pendekatan database akan mengeliminasi

data yang berulang/duplikasi sehingga tidak akan ditemukan data yang sama

persis, namun dengan digunakannya DBMS maka pengguna dapat mengatur

duplikasi data yang terjadi pada database dengan proses denormalisasi. Sebagai

contoh :

Page 7: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

12

Gambar 2. 5 Denormalisasi Tabel Order (http://www.objectarchitects.de/ObjectArchitects/orpatterns/Performance/

Denormalization/index.6.gif)

Dengan dilakukannya proses denormalisasi seperti pada gambar diatas, dimana

orderPosition menjadi terduplikasi pada tabel Order maka kecepatan akses data

akan meningkat.

Data consistency, dengan pengendalian redudansi data seperti yang dijelaskan

pada point diatas maka resiko terjadinya ketidak-konsisten-an data dapat

dikurangi. Dengan penggunaan DBMS jika data diubah oleh pengguna maka

perubahan data yang terjadi dapat dilihat dan dirasakan oleh semua pengguna

yang sedang menggunakan data tersebut, DBMS juga mencegah pengguna lain

untuk mengakes data yang sedang digunakan oleh pengguna yang lain. Sebagai

contoh :

Andi sedang mengakses data gaji pada database dan mengubah nilai gaji Andi

dari RP.500.000,- menjadi RP.1.500.000,- maka Badrun sebagai pengguna lain

tidak dapat mengubah gaji Andi pada saat yang bersamaan. Setelah Andi

selesai mengubah nilai gaji-nya, maka nilai gaji andi yang dilihat badrun pun

ikut berubah menjadi RP.1.500.000,-

Page 8: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

13

More information from the same amount of data, dengan terintegrasinya data

yang ada di dalam database maka sebuah organisasi dapat mendapat informasi

yang lebih banyak dari data yang sama. Sebagai contoh :

Bagian Sales dari suatu perusahaan mempunyai data penjualan yang berisi

‘kode_Barang, Pemilik_barang’ dan bagian gudang memiliki data gudang yang

berisi ‘Kode_barang, Nama_barang’. Dengan terintegrasinya data pada

database maka bagian sales dapat mengakses data gudang untuk mendapatkan

‘nama barang’ begitu pula dengan bagian gudang yang dapat mengakses data

‘pemilik barang’.

Improved security and integrity, dengan pemakaian DBMS maka integritas data

dan keamanan data dapat dijaga, dimana Integritas data dapat ditekankan pada

kepastian dan konsistensi data yang pada umumnya integritas data

diekspresikan sebagai Constraint. Sedangkan keamanan data mengacu pada

proteksi data pada database terhadap pengguna yang tidak memiliki

hak(unauthorized user). Tanpa adanya keaman yang kuat integritas data

membuat data pada database menjadi mudah dilihat oleh siapa saja, oleh

karena itu system keamanan yang ada pada DBMS memungkinakan keamanan

data dapat dijamin. System keamanan pada DBMS bisa berupa username dan

password.

2. Kekurangan

Complexity, dikarenakan fungsinya yang beragam macam, maka DBMS

merupakan sebuah perangkat lunak yang cukup rumit dan kompleks. Pemakai

Page 9: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

14

yang menggunakan DBMS haruslah mengerti semua fungsi yang dapat

dilakukan oleh DBMS karena penyalahgunaan yang terjadi dalam penggunaan

DBMS dapat berakibat fatal bagi sebuah organisasi. Sebagai contoh seorang

DBA yang ingin mengubah username dan password seorang pengguna, namun

dikarenakan DBA tersebut tidak mengerti sepenuhnya tentang fitur yang ada

pada DBMS yang digunakan, DBA tersebut secara tidak sengaja menghapus

username dan password pengguna.

Cost, biaya yang harus dikeluarkan dalam menjaga, dan penggunaan DBMS

relative besar dan beraneka ragam tergantung dari kemampuan yang

ditawarkannya. Sebagai contoh DBMS untuk 1 orang pengguna mungkin hanya

seharga RP. 1 juta sedangkan DBMS untuk sebuah perusahaan besar dengan

jumlah pengguna ratusan orang akan memakan biaya sebesar RP. 10 juta.

Performance, dengan banyaknya aplikasi yang harus mengakses DBMS secara

bersamaan maka performa database akan menurun karena resource yang ada

pada database akan dibagi-bagi ke untuk mengangani setiap aplikasi yang

mengakses database tersebut. Sebagai contoh seorang pengguna mengakses ke

dalam database untuk penampilan data yang terhitung berlangsung selama 15

detik, namun dengan penggunaan DBMS dimana banyak pengguna dapat

mengakses database yang sama dalam waktu yang relatif bersamaan maka

waktu yang terhitung untuk penampilan data dari database akan memakan

waktu sebesar 60 detik.

Page 10: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

15

Higher impact of a failure, proses centralisasi yang terfokus pada sebuah

DBMS akan meningkatkan resiko yang terjadi apabila terjadi sebuah kerusakan

pada salah satu komponen DBMS. Sebagai contoh apabila salah satu komponen

DBMS rusak atau mengalami gangguan maka semua operasi yang terjadi akan

mengalami hambatan. Sebagai contoh jika salah satu data pada database hilang

atau corrupt maka semua data yang terhubung dengan data tersebut menjadi

tidak dapat diakses dikarenakan Constraint yang ada pada data tersebut dan

mengakibatkan semua operasi bisnis tidak dapat beroperasi sebagaimana

mestinya.

Dalam penggunaannya DBMS juga menyediakan tiga fasilitas kepada

pengguna DBMS, fasilitas yang diberikan DBMS kepada pengguna adalah DDL, DML,

Acces-Control yang akan dibahas lebih lanjut pada subbab 2.2.2 mengenai DDL, subbab

2.2.3 mengenai DMLdan subbab 2.2.4 mengenai Access-Control.

Seperti yang telah dibahas diatas DBMS merupakan software yang dibutuhkan

dalam mengatur atau me-manage data yang ada di dalam database, maka dari itu

software DBMS yang beredarpun beraneka ragam yakni MS Access, Oracle, SQL

Server,dan masih banyak lagi. Oracle yang merupakan salah satu jenis DBMS akan

dibahas lebih lebih lanjut pada point 2.2.1.

2.2.1. Oracle Oracle database merupakan sebuah DBMS yang mendukung SQL, PL/SQL,

dan Java dan digunakan untuk menyimpan serta mengambil informasi secara terintegrasi

dan komprehensif dalam jumlah yang besar. Seperti yang dikatakan oleh Sthrom (2011,

Page 11: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

16

p1-1), Oracle database merupakan kumpulan dari data yang dianggap sebagai sebuah

unit dimana Oracle database dibentuk untuk dapat menangani berbagai tingkat

komplektivitas, mulai dari hirarki yang simpel hingga jaringan yang kompleks dengan

hubungan multilevel dan menyediakan operating platform yang kokoh dalam

mengimplementasikan fitur object-oriented seperti user-defined types, inheritance, dan

polymorphism. Oracle database juga telah melakukan ekstensi terhadap relational

model menjadi object-relational model, yang membuatnya cocok untuk menyimpan

permodelan bisnis yang kompleks pada relational database. Disamping itu Oracle

database merupakan database pertama yang didesain untuk enterprise grid computing

yang menyediakan cara untuk mengelola informasi dan aplikasi secara fleksibel dan

cost-effective dimana Enterprise grid computing membuat large pool untuk standar

industri, ruang penyimpanan modular dan server. Oleh karena itu dengan adanya

arsitektur ini, setiap sistem baru dapat secara cepat disediakan dari kumpulan komponen

maka tidak dibutuhkan workload yang tinggi, dikarenakan kapasitas yang ada dapat

ditambahkan atau dialokasikan dari resource pool sesuai yang diinginkan.

Fitur-fitur yang dimiliki oleh Oracle hingga versi terbarunya saat ini yaitu Oracle

11g adalah sebagai berikut :

Adanya data integrity yang memastikan bahwa adanya konsistensi, keakuratan

dan kebenaran dari data yang disimpan sehingga user mendapat jaminan bahwa

data diterima olehnya merupakan data yang benar-benar berasal dari sumber

yang valid. Contohnya jika sudah terdapat user yang memiliki kode karyawan

“123” maka tidak boleh terdapat user lain yang memiliki kode yang sama.

Page 12: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

17

Adanya data concurrency yang menunjukan bahwa data yang ditunjukkan baik

data yang berasal dari sumber asal dan duplikasinya memiliki hasil yang sama.

Memiliki fasilitas self-managing database sehingga proses administratif dapat

diotomatisasi dan mempermudah tugas dari DBA dikarenakan adanya

performance diagnostics, dan space and memory management. Dengan fitur ini

maka Oracle juga secara otomatis akan mengirim alert jika ditemukan adanya

masalah pada database.

Menyediakan fasilitas Online backup dan crash recovery apabila database

mengalami error.

Dapat melakukan adaptasi secara otomatis terhadap berbagai kondisi workload

dari database server.

Menyediakan teknologi high-performance bagi data warehousing, OLAP, dan

data mining.

Dapat dengan mudah mengelola keseluruhan siklus hidup dari informasi dalam

jumlah besar.

Memiliki tingkat keamanan data yang tinggi serta terdapat penyesuaian untuk

keamanan unique row, auditing, enksripsi data secara transparan, dan

pemanggilan secara penuh terhadap data.

Melindungi data dari server failure, human error, dan mengurangi waktu

downtime yang dibutuhkan.

Memiliki Enterprise Manager agar pengelolaan database dapat dilakukan dengan

mudah.

Page 13: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

18

Disamping kelebihan yang diberikan oleh oracle, oracle sendiri memiliki

beberapa kekurangan, kekurangan yang dimilliki oleh Oracle diantaranya sebagai

berikut :

Membutuhkan biaya yang cukup tinggi untuk diimplementasikan terlebih lagi

jika user tidak memperhitungkan downtime cost.

Kompleksitas yang tinggi menyebabkan membutuhkan waktu pembelajaran

yang cukup lama bagi user yang ingin mendalami Oracle database secara

menyeluruh.

Sebagai sebuah DBMS dengan kompleksitas yang tinggi oracle database

memiliki arsitektur tersendiri dimana pada arsitektur tersebut oracle dipecah menjadi

dua macam struktur yakni struktur database storage dan struktur database instance

dimana akan dijelaskan lebih lanjut pada subbab 2.2.1 poin 1

1. Struktur Database Storage

Gambar 2. 6 Struktur Oracle Database Storage (Sumber : Oracle Database Concepts 11g Release 2)

Page 14: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

19

Menurut Ashdown dan Kyte (2011, p1-8), struktur database storage pada

Oracle database dibagi menjadi dua yaitu struktur logical dan physical seperti yang

tertera pada Ilustrasi struktur database storage pada gambar 2.6 untuk penjelasan lebih

lanjut mengenai struktur database Oracle berikut merupakan penjelasan dari struktur

physical dan logical yang dimiliki oleh Oracle database :

a. Struktur Logical Database

Struktur logical database pada Oracle terdiri dari tablespace, data block, extents,

dan segment. Dimana dengan adanya struktur ini maka Oracle memiliki fasilitas

pengaturan dari disk space yang baik. Untuk penjelasan lebih lanjut mengenai struktur

logical dari oracle berikut merupakan komponen-komponen yang terdapat pada struktur

logical oracle database :

Tablespace

Tablespace merupakan suatu logical storage unit yang terdapat di dalam Oracle

database. Tablespace dikatakan logical karena tablespace tersebut tidak terlihat

di file system tempat database tersebut berada. Lalu Setiap tablespace memiliki

paling sedikit satu datafile dimana datafile ini secara fisik terletak di file system

server dimana setiap datafile hanya dimiliki oleh satu tablespace. Begitu pula

setiap table dan index yang tersimpan di Oracle Database, setiap tabel dan

index tersebut dimiliki oleh sebuah tablespace dimana tablespace membangun

suatu “jembatan penghubung” antara Oracle Database dengan filesystem

dimana index atau tabel disimpan.

Page 15: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

20

Data Block

Oracle menyimpan data pada Data Blocks (dapat juga disebut Logical Blocks,

Oracle Blocks, atau Pages). dimana satu data blocks akan berhubungan dengan

sejumlah spesifik byte dari ruang database fisik di dalam disk.

Extent

Extent merupakan jumlah spesifik dari data block yang berkesinambungan

dimana data tersebut dialokasikan untuk menyimpan tipe tertentu dari suatu

informasi.

Segment

Segment merupakan kumpulan dari extent, dimana masing-masing dialokasikan

untuk struktur data tertentu dan semuanya disimpan pada tablespace yang

sama.

b. Struktur Physical Database

Struktur fisikal dari ORACLE database terdiri dari datafiles, control files, redo log

files, archive log files, alert and trace log files, backup files, parameter files. Untuk

pemahaman lebih lanjut mengenai struktur fisik dari database oracle, berikut merupakan

penjelasan singkat terhadap struktur fisik database :

Datafiles

Datafile merupakan file yang terasosiasi dengan tablespace, dimana datafile

hanya bisa dimiliki oleh sebuah tablespace. Dalam pembuatan datafile Oracle

biasanya membuat datafile untuk tablespace dengan mengalokasikan jumlah

tertentu dari disk space ditambah overhead yang dibutuhkan untuk file header.

Page 16: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

21

Pada saat suatu datafile dibentuk, OS yang menjalankan Oracle bertanggung

jawab untuk membersihkan informasi-informasi lama dan authorisasi dari suatu

file sebelum dialokasikan ke Oracle dimana Semakin besar ukuran dari suatu

file, maka semakin lama proses authorisasi yang dibutuhkan. Pada umumnya

Datafile berisi object-object dari suatu schema.

Control Files

Control files mengandung data – data mengenai struktur fisik dari database

seperti nama database, nama serta lokasi dari datafile dan redo log file, juga

timestamp dari pembuatan database dimana File-file ini sangat penting bagi

database, Jika tidak ada control file, maka user tidak dapat membuka data file

untuk mengakses data – data yang terdapat di dalam database.

Red Log Files

Online Redo Log File bertujuan untuk instance recovery suatu database yang

apabila database mengalami crash dan tidak kehilangan data files, maka

instance dapat melakukan prosedur recovery terhadap database dengan

informasi yang terkandung di dalamnya.

Archive Log Files

Archive log file merupakan catatan historis yang mengandung perubahan data

yang telah terjadi yang dikeluarkan oleh instance, dengan file ini dan backup

dari database, user dapat melakukan proses recovery data-data file yang hilang.

Archive log juga memungkinkan adanya recovery dari data files yang telah di

restore.

Page 17: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

22

Parameter Files

Parameter file digunakan untuk menentukan bagaimana suatu instance

dikonfigurasi ketika mulai berjalan. Dimana Pada parameter file terdapat daftar

dari sekumpulan configuration parameter bagi instance dan database.

Alert dan Trace Log Files

Alert Log File dianggap sebagai special trace file, dimana Alert log files

merupakan catatan mengenai pesan dan error yang diatur secara kronologis .

Trace log files merupakan file yang berasal dari write server dan background

process. dimana ketika internal error ditemukan oleh sebuah proses, maka

proses tersebut akan mencatat error tersebut ke trace file.

Backup Files

Backup File digunakan untuk melakukan pemulihan terhadap database jika

database mengalami kegagalan yang dapat disebabkan oleh media failure atau

human error yang menyebabkan original file terhapus.

2. Struktur Oracle Database Instance

Menurut Ashdown dan Kyte (2011,p1-9), Oracle database memiliki memory

structure dan process yang digunakan untuk mengelola dan mengakses database.

sehubungan dengan pernyataan diatas ketika aplikasi terhubung ke Oracle database,

maka aplikasi tersebut akan terhubung dengan database instance yang merupakan

sebuah kumpulan memori yang berfungsi untuk mengelola file database. lalu Instance

akan melayani aplikasi tersebut dengan mengalokasikan area pada memory untuk

membentuk memory structures dan proses-proses lainnya. Untuk penjelasan lebih lanjut

Page 18: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

23

mengenai cara kerja oracle database yang terdapat pada gambar 2.6, dibawah ini

merupakan komponen – komponen yang terdapat dalam Oracle Instance Structures :

a. Oracle Database Processes

Gambar 2. 7 Struktur Oracle Database Processes(Sumber : Oracle Database 10g : Administration Workshop I)

Menurut Ashdown dan Kyte (2011, p1-10), Setiap instance yang terdapat di

dalam Oracle database memiliki tiga tipe proses seperti yang terlihat pada gambar 2.7,

tiga proses tersebut adalah :

Client Processes

Client processes merupakan proses yang dibentuk dan dikelola untuk

menjalankan kode aplikasi atau Oracle tool. dimana Sebagian besar

environment memiliki komputer yang terpisah bagi client processes.

Background Processes

Background processes merupakan proses yang berfungsi untuk

menggabungkan fungsi-fungsi yang digunakan oleh Oracle database program

yang berjalan untuk setiap client process.

Page 19: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

24

Server Processes

Server processes merupakan proses yang melakukan komunikasi dengan client

processes dan berinteraksi dengan Oracle database untuk memenuhi request

yang diterima dari user.

b. Instance Memory Structures

Gambar 2. 8 Oracle Memory Structure(Sumber : Oracle Database 10g : Administration Workshop I)

Menurut Ashdown dan Kyte (2009,p1-10), Oracle database membuat dan

menggunakan memory structures (struktur dapat dilihat pada gambar 2.8) untuk

kebutuhan menampung data yang disebar diantara para user serta terdapat private data

areas untuk setiap user yang terhubung. Menurut (Rani, Singh, & Sharma, 2011)

Komponen-komponen yang terdapat dalam instance memory structures yaitu :

Page 20: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

25

SGA (System Global Area)

SGA merupakan struktur memori yang dibentuk pada saat instance

diinisialisasikan pertama kali, dimana Komponen – komponen yang terdapat pada SGA

adalah sebagai berikut :

Database Buffer Cache

Database buffer cache digunakan untuk menampung data ke dalam memori.

Setiap kali user mengakses data, data tersebut akan ditampung ke dalam buffer

cache dan akan dikelola dengan menggunakan algoritma LRU. Penjelasan lebih

lanjut mengenai buffer cache dapat dilihat pada subbab 2.4

Redo Log Buffer

Berupa cache redo (digunakan untuk instance recovery) yang digunakan untuk

menulis ke redo log files fisik ke dalam disk.

Shared Pool

Shared pool merupakan wadah yang berisi cache dari beragam construct yang

dapat digunakan secara bersama oleh banyak user.

Large Pool

Large pool merupakan area optional yang menyediakan alokasi memori dalam

jumlah yang besar untuk beberapa proses besar, seperti Oracle backup dan

operasi recovery, dan proses server I/O.

Java Pool

Digunakan untuk seluruh sesi spesifik Java code dan data didalam JVM.

Page 21: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

26

Streams Pool

Streams pool digunakan untuk menyimpan pesan yang berada pada buffered

queue dan menyediakan memori untuk pencatatan proses oracle streams.

PGA (Program Global Area)

PGA merupakan area pada memori dengan fungsi mengatur informasi bagi

server process yang akan dibentuk pada saat sebuah server process mulai dijalankan.

Dikarenakan setiap server process memiliki PGA tersendiri yang dibentuk ketika proses

server mulai berjalan maka akses read beserta write terhadap PGA bersifat eksklusif

yaitu hanya kepada server process tersebut. Komponen – komponen yang terdapat pada

PGA adalah sebagai berikut :

Private SQL Area

Private SQL area berfungsi untuk menampung informasi mengenai SQL

statement yang telah diurai dan informasi lainnya yang berhubungan dengan

session untuk melakukan pemrosesan. Ketika server process mengeksekusi

sintaks SQL atau PL/SQL, maka private SQL area akan digunakan untuk

menampung nilai bind variable.

Session Memory

Session memory merupakan yang dialokasikan untuk menampung session

variables (misalnya informasi logon) dan informasi lainnya yang terkait

dengan session tersebut. Jika terdapat di dalam shared server, maka session

memory tidak bersifat private melainkan bersifat shared.

Page 22: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

27

SQL Work Area

SQL work area merupakan tempat dimana sekumpulan alokasi khusus dari

memori PGA digunakan untuk operasi yang bersifat memory-intensive yaitu

operasi yang menggunakan memori dalam jumlah besar seperti penggunaan

sort-based operator, bitmap merge, dan bitmap create. Ukuran dari SQL

work area dapat diatur sesuai dengan kebutuhan pada umumnya semakin

besar ukuran dari work area maka peforma dari operator tertentu akan

meningkat namun dengan konsekuensi penggunaan memori yang juga

semakin besar.

2.2.2. DDL StatementDDL statement merupakan sebuah statement yang berfungsi untuk meng-

definisikan, mengubah struktur, dan menghapus objek dari dalam database. Statement

DDL mengijinkan pengguna untuk :

Membuat, mengubah, dan men-drop objects dan struktur database lainnya,

termasuk database itu sendiri dan pengguna database. Statement ini dimulai

dengan keyword CREATE, ALTER, or DROP.

Membuang semua Data di dalam object schema tanpa menghilangkan struktur

dari object tersebut. Statement ini dijalankan dengan keyword TRUNCATE.

Melakukan proses GRANT dan REVOKE hak aksses dan peran. Statement ini

dijalankan dengan keyword GRANT, REVOKE.

Berikut adalah penjelasan lebih lanjut tentang Statement DDL dan contoh

pemakaian serta hasil yang di-munculkan :

Page 23: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

28

1. Create

Syntax Create digunakan apabila pengguna ingin membuat sebuah tabel,

schema, view, ataupun index di dalam database. berikut adalah contoh pemakaian

syntax Create:

a. Create Schema

“Create Schema” digunakan saat user ingin membuat sebuah schema, format

syntax yang digunakan adalah sebagai berikut :

CREATE SCHEMA schema name AUTHORIZATION Authorize personel;

Dimana Schema name adalah nama dari schema yang ingin dibuat, dan

AUTHORIZATIOn merupakan nama dari pembuat schema tersebut, sebagai contoh

pemakaian syntax CREATE CHEMA berikut adalah syntax yang digunakan untuk

membuat schema “haha” dengan nama pembuat schema “hihi”

CREATE SCHEMA haha AUTHORIZATION hihi;

b. Create Table

Untuk membuat suatu tabel di dalam database maka pengguna dapat

menggunakan syntax Create table dengan format syntax sebagai berikut :

CREATE TABLE table_name(

column_name1 data_type(Length), [NOT NULL] [DEFAULT default option][UNIQUE],column_name2 data_type(Length), [NOT NULL] [DEFAULT],…………………………,column_name n data_type(Length), [NOT NULL] [DEFAULT],

CONSTRAINT “Constraint Name” {Condition}Primary Key (column_name),FOREIGN KEY (Column_name) REFERENCES (table_name) ON DELETE [CASCADE|NO ACTION] ON UPDATE [CASCADE|NO ACTION]

)

Page 24: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

29

Dimana table_name merupakan nama table yang ingin dibuat, column_name1-

2-n merupakan nama-nama kolom yang ingin dibuat, Data_Type merupakan jenis

Data yang akan dimasukan pada tiap kolom yang ada, Length merupakan panjang

dari tipe data yang diperbolehkan. [NOT NULL] [DEFAULT] [UNIQUE]

merupakan alternative penambahan keterangan dari kolom yang dibuat, apabila NOT

NULL digunakan maka pada kolom tersebut haruslah memiliki data, opsi DEFAULT

akan memberikan ‘Default option’ sebagai data Default apabila pada opsi insert

pengguna tidak memasukan nilai pada kolom, opsi [UNIQUE] berguna untuk

menentukan apakah data pada kolom tersebut unik atau tidak, CONSTRAINT bisa

digunakan sebagai Constraint pada kolom ataupun Constraint pada tabel, apabila

digunakan pada kolom maka Constraint tersebut hanya berpengaruh pada kolom

yang digunakan, apabila pada tabel maka Constraint tersebut akan berpengaruh pada

semua tabel. PRIMARY KEY digunakan untuk menentukan primary key pada tabel

tersebut, sedankan FOREIGN KEY akan menentukan foreign key di tabel tersebut

pada opsi ON DELETE dan ON UPDATE foreign key opsi CASCADE dan NO

ACTION merupakan aksi yang dilakukan, CASCADE berarti saat tabel tersebut

dihapus maka semua data yang terintegrasi dengan tabel tersebut akan ikut hilang

sedangkan pada opsi NO ACTION apabila tabel tersebut dihapus maka semua data

yang terintegrasi dengan tabel tersebut akan tetap seperti apa adanya. Berikut adalah

contoh pemakaian syntax create table

Page 25: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

30

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT pk_PersonID PRIMARY KEY (P_Id))

Pada contoh diatas Constraint yang dipakai berupa Constraint table, dan

hasilnya akan menjadi sebagai berikut :

Gambar 2. 9 Tabel Persons

c. Create Index

Penjelasan lebih lanjut mengenai index akan dibahas pada subbab 2.3. berikut

merupakan format dari syntax create index :

CREATE INDEX Index_nameON table_name (column_name)

Dimana “indexName” adalah nama index yang ingin dibuat, table_name adalah

nama tabel tempat index akan dibuat dan “Column_name”adalah kolom yang

diberikan index. Sebagai contoh syntax dibawah ini akan membuat index001 pada

tabel mahasiswa di kolom nama

CREATE INDEX idx001ON Mahasiswa (Nama)

Page 26: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

31

d. Create View

“Create View” digunakan saat user ingin membuat sebuah View, format syntax

yang digunakan adalah sebagai berikut :

CREATE VIEW view_name [New_Column_name 1, New_Column_name 2,…., New_Column_name n]AS subselect;

Dimana View_name adalah nama dari View yang ingin dibuat,

New_Column_Name adalah nama kolom yang ingin dibuat, subselect adalah syntax

select yang digunakan untuk memasukan data ke dalam view. Sebagai contoh

pemakaian syntax CREATE VIEW berikut adalah syntax yang digunakan untuk

membuat view “haha” dengan sumber data tabel persons

CREATE VIEW haha AS SELECT * FROM persons;

2. Alter

Syntax ALTER digunakan untuk mengubah struktur tabel yang ada setelah

tabel tersebut dibuat, untuk mengubah sebuah tabel ada 6 tipe dari ALTER TABLE yang

dapat digunakan yaitu :

Menambah kolom

Menghapus kolom

Manambah Constraint

Menghapus Constraint

Menambah DEFAULT pada kolom

Menghapus DEFAULT pada kolom

Page 27: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

32

Bentuk syntax umum dari Alter adalah sebagai berikut

ALTER TABLE table_name{[ADD [COLUMN] column_name datatype(length) [NOT NULL][UNIQUE][DEFAULT default_option]] |[DROP [COLUMN] column_name [RESTRICT|CASCADE]] |[ADD CONSTRAINT “constraint_name” Constraint Definition] |[DROP CONSTRAINT “constraint_name” [RESTRICT|CASCADE]] |[ALTER [COLUMN] SET DEFAULT defaultoption] |[ALTER [COLUMN] DROP DEFAULT]}

Dibawah ini akan dijelaskan lebih lanjut mengenai syntax ALTER TABLE dan

contohnya :

a. Menambah kolom pada table

Format :

ALTER TABLE table_nameADD column_name datatype(length);

Dimana table_name adalah nama table yang ingin diubah, column_name adalah

nama kolom yang ingin ditambahkan, dan datatype adalah jenis Data dari kolom yang

baru dan length adalah panjang dari tipe data pada kolom. Contoh Pemakaian syntax

Page 28: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

33

ALTER TABLE untuk menambahkan kolom DateofBirth pada tabel persons adalah

sebagai berikut :

ALTER TABLE PersonsADD DateOfBirth date;

Maka Hasil yang akan diperoleh dengan penambahan kolom “DateofBirth” adalah

seperti gambar berikut :

Gambar 2. 10 Tabel Persons Beserta Datanya-Altered

b. Menghapus kolom pada table

Untuk menghapus kolom dari sebuah tabel maka format dari Syntax ALTER

TABLE yang digunakan adalah sebagai berikut:

ALTER TABLE table_nameDROP COLUMN column_name;

Dimana table_name adalah nama table yang ingin diubah, column_name adalah

nama kolom yang ingin dihapus. Sebagai contoh, untuk menghapus kolom DateofBirth

dari tabel persons seperti yang ditampilkan pada gambar 2.10 diatas adalah sebagai

berikut

ALTER TABLE PersonsDROP COLUMN DateOfBirth;

Maka hasil dari penghapusan kolom DateofBirth dapat dilihat pada gambar 2.11

dibawah ini :

Page 29: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

34

Gambar 2. 11 Tabel Persons Beserta Datanya-Altered 2

c. Menambah Constraint pada table

Untuk menambahkan sebuah Constraint pada kolom P_id maka format syntax

ALTER TABLE yang dapat digunakan adalah

ALTER TABLE table_nameADD CONSTRAINT constraint_name;

Dimana table_name adalah nama tabel yang ingin ditambahkan Constraint, dan

Constraint_name adalah nama Constraint yang ingin ditambahkan, berikut adalah contoh

penambahan Constraint pk_PersonID pada tabel Persons :

ALTER TABLE PersonsADD CONSTRAINT pk_PersonID ;

d. Menghapus Constraint pada table

Untuk menghapus sebuah Constraint pada kolom P_id maka format syntax

ALTER TABLE yang dapat digunakan adalah

ALTER TABLE table_nameDROP CONSTRAINT constraint_name;

Dimana table_name adalah nama tabel yang ingin dihapus Constraint-nya, dan

Constraint_name adalah nama Constraint yang ingin dihapus, berikut adalah contoh

penghapusan Constraint pk_PersonID pada tabel Persons

Page 30: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

35

ALTER TABLE PersonsDROPCONSTRAINT pk_PersonID ;

e. Menambah Default pada kolom table

Untuk menambahkan default pada kolom dalam sebuah tabel maka format

syntax yang dapat digunakan adalah sebagai berikut:

ALTER TABLE table_nameALTER column_name SET DEFAULT default_option;

Dimana table_name adalah nama table yang ingin diubah, column_name adalah

nama kolom yang ingin ditambahkan Default, dan Default_option adalah opsi Default

yang ingin ditambahkan. Contoh Pemakaian syntax Alter Table untuk men-set Default

pada kolom “Address” pada tabel persons adalah sebagai berikut :

ALTER TABLE PersonsALTER Address SET DEFAULT “Homeless”;

f. Menghapus Default pada kolom table

Untuk menghapus Default dari kolom sebuah tabel maka format dari Syntax

ALTER TABLE yang digunakan adalah sebagai berikut:

ALTER TABLE table_nameALTER column_name DROP DEFAULT;

Dimana table_name adalah nama table yang ingin diubah dancolumn_name

adalah nama kolom yang ingin dihapus Default-nya. Contoh Pemakaian syntax ALTER

TABLE untuk menghapus Default kolom “Address” pada tabel persons adalah sebagai

berikut :

Page 31: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

36

ALTER TABLE PersonsALTER Address DROP DEFAULT;

3. Drop

Syntax drop digunakan oleh user untuk menghapus object yang ada di dalam

database seperti table, schema, index, constraint, view, syntax drop ini dapat digunakan

dengan format sebagai berikut

DROP [TABLE,VIEW, CONSTRAINT, SCHEMA, INDEX] “ObjectName” RESTRICT|CASCADE[WHERE condition]

a. Drop Schema

“Drop Schema” digunakan saat user ingin menghapus sebuah schema, format

syntax yang digunakan adalah sebagai berikut :

DROP SCHEMA schema name [RESTRICT|CASCADE];

Dimana Schema name adalah nama dari schema yang ingin dihapus, dan

RESTRICT|CASCADE merupakan jenis pen-delete-an dimana jika RESTRICT dipilih

maka SCHEMA yang mau dihapus haruslah kosong apabila tidak kosong maka proses

penghapusan akan gagal, sedangkan pada CASCADE operasi penghapusan akan

dijalankan walaupun SCHEMA masih memiliki isi(tidak kosong) jika pengguna tidak

menetapkan RESTRICT atau CASCADE maka Default dari DROP SCHEMA adalah

RESTRICT. Sebagai contoh pemakaian syntax DROP SCHEMA berikut adalah syntax

yang digunakan untuk menghapus schema “haha” dengan asumsi bahwa pada SCHEMA

“haha” sudah kosong

DROP SCHEMA haha;

Page 32: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

37

b. DropTable

“Drop Table” digunakan saat user ingin menghapus sebuah Table, format

syntax yang digunakan adalah sebagai berikut :

DROP TABLE table_name [RESTRICT|CASCADE]

Dimana Table_name adalah nama dari tabel yang ingin dihapus, dan RESTRICT|

CASCADE merupakan jenis pen-delete-an dimana jika RESTRICT dipilih maka

TABLE yang mau dihapus tidak boleh memiliki objek apapun yang bergantung pada

tabel yang ingin digapus, sedangkan pada CASCADE operasi penghapusan akan

dijalankan dan menghapusTABLE dan objek lain yang bergantung pada tabel

tersebut. Jika pengguna tidak menetapkan RESTRICT atau CASCADE maka

Default dari DROP TABLE adalah RESTRICT. Sebagai contoh pemakaian syntax

DROP TABLE berikut adalah syntax yang digunakan untuk menghapus tabel “haha”

dengan asumsi bahwa pada tabel tidak ada objek yang bergantung pada tabel “haha”

DROP TABLE haha;

c. Drop View

“Drop View” digunakan saat user ingin menghapus sebuah View, format syntax

yang digunakan adalah sebagai berikut :

DROP VIEW view_name [RESTRICT|CASCADE]

DimanaView_name adalah nama dari View yang ingin dihapus, dan RESTRICT|

CASCADE merupakan jenis pen-delete-an dimana jika RESTRICT dipilih maka

view yang mau dihapus tidak boleh memiliki objek apapun yang bergantung pada

Page 33: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

38

view yang ingin digapus, sedangkan pada CASCADE operasi penghapusan akan

dijalankan dan menghapus VIEW dan objek lain yang bergantung pada tabel

tersebut. Jika pengguna tidak menetapkan RESTRICT atau CASCADE maka

Default dari DROP VIEW adalah RESTRICT. Sebagai contoh pemakaian syntax

DROP VIEW berikut adalah syntax yang digunakan untuk menghapus view “haha”

dengan asumsi bahwa pada view tidak ada objek yang bergantung pada view

“haha” :

DROP VIEW haha;

d. Drop Index

Syntax ini digunakan untuk menghapus index yang ada, penjelasan lebih lanjut

mengenai index akan dibahas pada subbab2.3. berikut merupakan format dari syntax

Drop index :

DROP INDEX Index_nameON table_name (column_name)

Dimana “indexName” adalah nama index yang ingin dibuat, sebagai contoh syntax

dibawah ini akan menghapus index001 :

DROP INDEX idx001;

4. Grant

Syntax grant ini dipakai untuk memberikan akses atau hak khusus atas objek

dari database ke pada user tertentu, pada umumnya syntax grant ini dipakai untuk

memberikan user tertentu sebuah akses atas suatu objek milik user lainnya. format yang

dipakai dalam pembuatan syntax grant adalah sebagai berikut :

Page 34: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

39

GRANT “Privilege1, Privilege2,…., Privilegen” | ALL PRIVILEGESON “object Name” TO “User Name”|PUBLIC[WITH GRANT OPTION];

Dimana “ Privilege” yang dimaksud adalah hak khusus yang ingin diberikan kepada

user seperti

SELECT

Fungsi dari privilege select akan memberikan user tertentu hak akses untuk

mengambil/ menampilkan data dari tabel tertentu, sebagai contoh user Andi

sebagai pemilik tabel persons, memberikan hak kepada user badrun untuk

menampilkan (dengan perintah select) data atas tabel persons miliknya

UPDATE

Fungsi dari privilege update akan memberikan user tertentu hak akses untuk

melakukan update data pada tabel tertentu, sebagai contoh user Andi sebagai

pemilik tabel persons, memberikan hak kepada user badrun untuk mengubah

data di tabel persons miliknya.

INSERT [ColumnName1, ColumnName2,….,ColumnName n]

Fungsi dari privilege insert akan memberikan user tertentu hak akses untuk

melakukan insert data pada tabel tertentu, sebagai contoh user Andi sebagai

pemilik tabel persons, memberikan hak kepada user badrun untuk

menambahkan kolom dengan nama “keluarga” di tabel persons miliknya.

DELETE [ColumnName1, ColumnName2,….,ColumnName n]

Page 35: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

40

Fungsi dari privilege delete akan memberikan user tertentu hak akses untuk

melakukan penghapusan terhadap tabel tertentu, sebagai contoh user Andi

sebagai pemilik tabel persons, memberikan hak kepada user badrun untuk

menghapus kolom dengan nama “DateOfBirth” di tabel persons miliknya.

REFERENCE [ColumnName1, ColumnName2,….,ColumnName n]

Fungsi dari privilege reference akan memberikan user tertentu hak akses untuk

melakukan referensi atas suatu kolom tertentu, untuk penjelasan lebih lanjut

mengenai reference silahkan lihat subbab 2.2.2 poin 1 tentang create table pada

bagian constraint.

dan “ object name´ adalah nama table,view, objek lainnya dimana user mendapat hak

khusus dan dapat menjalankan hak khususnya, ´user name´ adalah user id yang akan

diberikan hak khusus apabila memakai PUBLIC maka semua user yang ada akan

mendapat hak khusus yang sudah di deklarasikan atas objek tersebut, dan WITH

GRANT OPTION berguna apabila user yang diberikan hak atas object tersebut

diperbolehkan untuk memberikan hak kepada user lain, sebagai contoh dibawah ini

seorang DBA akan memberikan hak SELECT atas table mahasiswa kepada User andi.

GRANT SELECT ON mahasiswa TO andiWITH GRANT OPTION;

Contoh diatas berarti DBA tersebut memberikan hak “SELECT” atas tabel

“mahasiswa” kepada user “andi” dimana user “andi” dapat memberikan privileges

tertentu kepada user lain.

Page 36: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

41

5. Revoke

Syntax revoke ini akan mencabut privileges dari user tertentu sesuai yang telah

diberikan pada syntax GRANT. Bentuk pemakaian syntax revoke adalah sebagai berikut

REVOKE [GRANT OPTION FOR] ““Privilege1, Privilege2,…., Privilege n” | ALL PRIVILEGES,ON “Object Name” FROM “Username”|PUBLIC [RESTRICT|CASCADE];

Dimana “ Privilege” yang dimaksud adalah hak khusus yang ingin diberikan

kepada user seperti yang telah dijelaskan pada syntax grant diatas, GRANT OPTION

FOR digunakan untuk mencabut hak yang telah diberikan WITH GRANT OPTION

pada syntax grant diatas,“ object name´ adalah nama table,view, objek lainnya dimana

user mendapat hak khusus dan dapat menjalankan hak khususnya, ´user name´ adalah

user id yang akan diberikan hak khusus apabila memakai PUBLIC maka semua user

yang ada akan mendapat hak khusus yang sudah di deklarasikan atas objek tersebut, dan

CASCADE atau RESTRICT memili fungsi sama seperti pada syntax drop yang telah

dijelaskan pada subbab 2.2.2 poin 3.

Gambar 2. 12 Ilustrasi Syntax REVOKE

Page 37: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

42

Dalam contoh dibawah ini DBA akan mencabut hak SELECT atas table

mahasiswa dari user Andi.

REVOKE SELECT ON mahasiswa FROM andi;

2.2.3. DML StatementDML Statement merupakan statement SQL yang digunakan untuk

menambahkan, mengubah, menghapus, dan menampilkan data yang ada di dalam

database. Untuk lebih jelasnya DML Statement mengijinkan pengguna untuk :

Menampilkan Data dari satu atau lebih table. Hal ini dilakukan dengan Syntax

SELECT.

Menambahkan baris Data baru ke dalam table atau view. Hal ini dilakukan

dengan Syntax INSERT.

Mengubah nilai dari suatu Data pada table atau view. Hal ini dilakukan dengan

Syntax UPDATE.

Menghilangkan baris Data dari table atau view. Hal ini dilakukan dengan

Syntax DELETE.

Sebagai penjelasan lebih lanjut mengenai format DML Statement dan pemakaiannya,

maka semua contoh yang digunakan akan merujuk pada gambar 2.13 yang menunjukan

tabel persons dan order.

Page 38: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

43

Gambar 2. 13 Tabel Persons dan Orders

1. Select

Syntax ini digunakan untuk menampilkan data dari 1 atau lebih tabel dari dalam

database. untuk menampilkan data dari 1 tabel maka akan digunakan syntax select

dengan format syntax seperti di bawah ini

SELECT [DISTINCT] column_name1,column_name2,column_name n [AS newColumnName]FROM table_name [alias][WHERE Condition][GROUP BY Condition][ORDER BY Condition]

Dimana dalam syntax select pengguna dapat memilih untuk menampilkan data

dengan distinct(menampilkan data tanpa ada redudansi/duplikasi) sehingga data yang

ditampilkan berupa unique, column name adalah nama-nama kolom yang ingin di

tampilkan datanya. Lalu ‘FROM’ merujuk kepada nama tabel sumber data yang ingin

ditampilkan, table_name adalah nama sumber table yang ingn ditampilkan. Setelah

pengguna menentukan data yang ingin ditampilkan dan tabel asal data, maka pengguna

juga dapat mengatur data-data yang ditampilkan dengan syntax WHERE, GROUP BY,

ORDER BY, dimana syntax WHERE berguna sebagai Filter terhadap data-data yang

Page 39: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

44

ingin ditampilkan, syntax GROUP BY digunakan apabila syntax select memiliki data

agregat yang berupa hasil perhitungan, dan ORDER BY digunakan untuk mensortir

data. Contoh penggunaan syntax select :

Contoh dibawah User akan menampilkan seluruh data dari table persons

Gambar 2. 14 Tabel Persons beserta datanya 2

Sedangkan untuk menampilkan data lebih dari satu tabel maka syntax join, atau

Cartesian product dapat digunakan. Untuk penjelasan lebih lanjut mengenai syntax join

dan Cartesian product akan dibahas pada poin a&b.

a. Join

Join merupakan query yang bertujuan untuk menggabungkan baris Data dari dua

atau lebih table atau view. Dimana Join biasanya memiliki paling sedikit satu kondisi

join yang terletak pada klausa WHERE dimana kondisi join tersebut akan

membandingkan dua kolom dari table yang berbeda sebelum dilakukan penggabungan.

Dalam penggunaannya syntax join memiliki dua jenis join yang dapat digunakan

pengguna dalam melakukan penggabungan dua tabel atau lebih, jenis-jenis join yang

dapat digunakan oleh pengguna adalah INNER JOIN, dan OUTER JOIN. Untuk contoh

dan penjelasan lebih lanjut mengenai syntax Join semua contoh penggunaan syntax join

SELECT * FROM Persons

Page 40: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

45

yang akan dibahas lanjut pada seksi (i) dan (ii) dibawah ini akan didasari pada tabel

persons dan order seperti yang tertera pada Gambar2.14 diatas

i. INNER JOIN

Inner Join merupakan salah satu jenis join dimana baris Data yang

dikembalikan hanya baris yang memenuhi syarat pada kondisi join. Syntax INNER JOIN

dapat digunakan dengan format sebagai berikut

SELECT column_name1,column_name2,column_name nFROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_name

Dimana Column_name merupakan nama colom yang akan digabung,

table_name adalah nama table yang akan digabungkan, table_name1.column_name =

table_name2.column_name adalah syarat penggabungannya.

Contoh Penggunaan syntax INNER JOIN yang akan menggabungkan tabel persons dan

orders adalah sebagai berikut:

Dan Hasil dari penggabungan syntax join tabel persons dan orders adalah :

Gambar 2. 15 Hasil Join Tabel Persons dan Order 2

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

Page 41: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

46

ii. OUTER JOIN

Outer Join merupakan syntax join dimana Data yang ditampilkan merupakan

data yang memenuhi syarat dan semua Data dari salah satu table, walaupun pada table

lainnya tidak terdapat Data yang sama, untuk penjelasan lebih lanjut dibawah ini akan

dibahas mengenai tiga jenis Syntax outer join yaitu :

LEFT JOIN

LEFT JOIN merupakan outer join yang akan mengembalikan semua baris Data

yang terdapat pada tabel pertama (tabel pertama akan dianggap menjadi sisi sebelah

“kiri”). Format dari Syntax LEFT JOIN dalam penggunaanya adalah sebagai berikut:

SELECT column_name1,column_name2,column_name nFROM table_name1LEFT JOIN table_name2ON table_name1.column_name=table_name2.column_name

Dimana Column_name merupakan nama-nama kolom yang akan digabung,

table_name adalah nama table yang akan digabungkan,

table_name1.column_name=table_name2.column_name adalah syarat

penggabungannya. Sebagai contoh penggunaan LEFT JOIN yang akan menggabungkan

tabel persons dan tabel orders maka bentuk syntax yang akan digunakan adalah sebagai

berikut :

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

Page 42: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

47

Dari penggunaan syntax left join diatas maka data yang dihasilkan adalah seperti pada

gambar 2.16 dibawah ini.:

Gambar 2. 16 Hasil Left Join Tabel Persons dan Order RIGHT JOIN

RIGHT JOIN merupakan outer join yang akan mengembalikan semua baris

Data yang terdapat pada tabel kedua (tabel pertama akan dianggap menjadi sisi sebelah

“kanan”). Format dari Syntax LEFT JOIN dalam penggunaanya adalah sebagai berikut:

SELECT column_name1,column_name2,column_name nFROM table_name1RIGHT JOIN table_name2ON table_name1.column_name=table_name2.column_name

Dimana Column_name merupakan nama-nama kolom yang akan digabung,

table_name adalah nama table yang akan digabungkan, table_name1.column_name =

table_name2.column_name adalah syarat penggabungannya. Sebagai contoh

penggunaan RIGHT JOIN yang akan menggabungkan tabel persons dan tabel orders

maka bentuk syntax yang akan digunakan adalah sebagai berikut :

Dari penggunaan syntax right join diatas maka data yang dihasilkan adalah seperti pada

gambar 2.17 dibawah ini.:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

Page 43: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

48

Gambar 2. 17 Hasil right Join Tabel Persons dan Order

FULL OUTER JOIN

FULL OUTER JOIN merupakan outer join yang memadukan LEFT JOIN

dengan RIGHT JOIN sehingga baris Data yang akan dikembalikan dapat berasal dari sisi

sebelah “kiri” table maupun sebelah “kanan” table. Format dari Syntax Full Outer Join

dalam penggunaanya adalah sebagai berikut:

SELECT column_name1,column_name2,column_name nFROM table_name1FULL JOIN table_name2ON table_name1.column_name=table_name2.column_name

DImana Column_name = nama colom yang akan digabung, table_name adalah

nama table yang akan digabungkan, table_name1.column_name =

table_name2.column_name adalah syarat penggabungannya. Sebagai contoh

penggunaan FULL OUTER JOIN yang akan menggabungkan tabel persons dan tabel

orders maka bentuk syntax yang akan digunakan adalah sebagai berikut :

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

Dari penggunaan syntax Full Outer join diatas maka data yang dihasilkan

adalah seperti pada gambar 2.18 dibawah ini.:

Page 44: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

49

Gambar 2. 18 Hasil Full Join Tabel Persons dan Order

b. Cartesian Product

Cartesian product merupakan Top join dimana semua Data ditampilkan dari masing-

masing table dikarenakan tidak menggunakan kondisi penggabungan pada syntax join.

Cartesian Product ini dapat digunakan dengan format :

SELECT “Column Name 1”, “Column Name 2”,….., “Column Name n” FROM “Table 1”, “Table 2”, “Table n”

Dari syntax diatas “Table 1”, “Table 2”, “Table n” merupakan Cartesian product

Contoh :

c. Subquery

Subquery merupakan Statement SELECT yang bersifat nested di dalam SQL

Statement lainnya. Subquery berguna ketika ada banyak query yang harus dieksekusi

untuk memecahkan satu masalah. Subquery ini dapat digunakan dengan format :

Sebagai Contoh penggunaan subquery adalah sebagai berikut:

SELECT * FROM EMPLOYEE, DEPARTMENT

SELECT “Column Name 1”, “Column Name 2”,….., “Column Name n” FROM “Table Name” WHERE “Condition” IN (

SELECT “Column Name” FROM “Table Name” WHERE “Condition”);

Page 45: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

50

d. Exists & IN

Penggunaan Syntax exists akan mengecek apakah sebuah row itu eksis atau tidak

bedasarkan syarat yang ditentukan. Dan dianjurkan digunakan ketika terjadi komparasi

atas satu kolom dengan kolom lainnya. Bentuk pemakaian syntax Exists adalah sebagai

berikut :

SELECT “Column Name 1”, “Column Name 2”,….., “Column Name n”FROM table_nameWHERE column_name EXISTS (SELECT ‘COLUMN_NAME1, COLUMN_NAME1,…, COLUMN_NAME n ’ FROM ‘TABLE_NAME’ WHERE ‘Condition’)

Dimana column name adalah nama kolom yang data-datanya ingin dijadikan

sebagai persyaratan, dan table_name adalah nama sumber table yang ingn ditampilkan

dan condition adalah syarat pemanggilan, berikut merupakan contoh penggunaan syntax

exists yang mengacu pada gambar 2.12 untuk menampilkan data persons dimana data

yang ditampilkan merupakan data yang memiliki LastName “hansen” atau “peter”

SELECT first_name, last_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = 1800);

Page 46: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

51

SELECT *

FROM persons

WHERE EXISTS (SELECT LastName FROM persons WHERE LastName =’Hansen’ or LastName=’Peter’ )

Bedasarkan query exists diatas maka gambar 2.19 merupakan hasil dari query exists

Gambar 2. 19 Tabel Persons – Exists

Dan Penggunaan Syntax IN juga akan mengecek apakah sebuah row itu eksis

atau tidak bedasarkan syarat yang ditentukan. Berikut merupakan format yang dipakai

dalam menggunakan syntax In:

SELECT “Column Name 1”, “Column Name 2”,….., “Column Name n”)FROM table_nameWHERE column_name IN (value1,value2,...)

Dimana column name adalah nama kolom yang ingin di tampilkan data-

datanya, dan table_name adalah nama sumber table yang ingn ditampilkan dan value

adalah syarat pemanggilan. Dibawah ini merupakan contoh penggunaan syntax in untuk

menampilkan data persons dimana data yang ditampilkan merupakan data yang

memiliki LastName “hansen” atau “peter”

Page 47: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

52

SELECT * FROM PersonsWHERE LastName IN ('Hansen','Pettersen')

Dari sytax in diatas maka Hasil dari query In adalah seperti yang ditampilkan pada

gambar 2.20 :

Gambar 2. 20 Tabel Persons – In

e. Group By & Distinct

Syntax Distinct digunakan untuk menampilkan satu (Non-Duplikasi) baris Data dari

sebuah tabel. Berikut merupakan bentuk dari syntax distinct :

SELECT DISTINCT column_nameFROM table_name

Dimana column name adalah nama kolom yang ingin di tampilkan data-datanya,

dan table_name adalah nama sumber table yang ingn ditampilkan. Contoh Penggunaan

dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada

gambar 2.12 adalah sebagai demikian

SELECT DISTINCT City FROM Persons

Bedasarkan syntax distinct diatas maka hasil yang diberikan adalah seperti yang

tertera pada gambar 2.21:

Gambar 2. 21 Tabel Persons-Distinct

Page 48: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

53

Dan untuk pemakaian Syntax group by bentuk dasar dari syntax group by

adalah sebagai demikian :

SELECT ‘COLUMN_NAME’FROM ‘TABLE_NAME’GROUP BY ‘COLUMN_NAME’

Dimana column name adalah nama kolom yang ingin di tampilkan data-

datanya, dan table_name adalah nama sumber table yang ingn ditampilkan. Berikut

merupakan penggunaan syntax group by untuk menampilkan data Nim, Nama, Alamat

dikelompokan bedasarkan Nim, Nama, Alamat

SELECT Nim, Nama, AlamatFROM ‘Mahasiswa’GROUP BY Nim, Nama, Alamat

Bedasarkan query group by diatas maka hasil yang didapat dari peng-

eksekusian query adalah sebagai demikian :

Gambar 2. 22 Tabel Persons-Group By

2. Insert

Untuk menambahkan data kedalam sebuah database maka pengguna dapat

menggunakan kedalam sebuah database maka pengguna dapat menggunakan syntax

insert. Syntax insert dapat digunakan untuk menambahkan data kedalam sebuah table

dengan format seperti yang terdapat dibawah ini.

INSERT INTO table_nameVALUES (value1, value2, value n,...)

Page 49: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

54

Dimana table_name adalah nama table yang ingin diinput datanya dan value

berupa nilai-nilai dari data yang ingin dimasukan. Sebagai contoh gambar 2.23

merupakan table persons sebelum dilakukan perintah insert

Gambar 2. 23 Tabel Persons beserta datanya 3

Dan berikut merupakan syntax insert yang akan memasukan data ke dalam table persons

Setelah proses insert selesai maka tabel persons akan berubah menjadi seperti gambar

2.24 :

Gambar 2. 24 Tabel Persons Beserta Datanya – Inserted

3. Update

Untuk merubah data yang terdapat dalam database maka pengguna dapat

menggunakan syntax update. Syntax update dapat digunakan untuk mengubah data

kedalam sebuah table dengan format sebagai berikut:

INSERT INTO PersonsVALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')

UPDATE table_nameSET column1=value, column2=value2, column n=value n ,...WHERE some_column=some_value

Page 50: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

55

Dimana table_name adalah nama tabel yang ingin di-update column1-2 adalah

nama kolom yang ingin diupdate, value1-2 adalah nilai dari updatenya, some_column

dan some_value adalah syarat kolom dannilai dari yang akan diubah. Sebagai contoh

pemakaian syntax update, berikut adalah table persons :

Gambar 2. 25 Tabel Persons Beserta Datanya 4

Lalu berikut adalah syntax Update yang digunakan untuk mengubah data ‘Jakob’

Setelah proses update selesai maka hasil dari syntax update adalah sebagai berikut

Gambar 2. 26 Tabel Persons Beserta Datanya - Updated

UPDATE PersonsSET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' AND FirstName='Jakob'

Page 51: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

56

4. Delete

Untuk menghapus data dari dalam database, maka pengguna dapat

menggunakan syntax delete. Syntax delete dapat digunakan untuk menghapus data dari

sebuah table dengan format sebagai berikut :

Dimana table_name adalah nama table yang ada, some_column dan some_value

adalah syarat kolom dannilai dari yang akan dihapus datanya. Sebagai contoh pemakaian

syntax delete berikut adalah tabel persons beserta datanya sebelum dilakukan perintah

Delete

Gambar 2. 27 Tabel Persons Beserta Datanya 5Dan untuk menghapus ‘Johan’ dengan P_ID=4, Berikut adalah contoh syntax delete

yang digunakan

Setelah syntax delete dijalankan dengan sukses maka data yang dihasilkan akan menjadi

seperti gambar 2.28 :

Gambar 2. 28 Tabel Persons Beserta Datanya - Deleted

DELETE FROM table_nameWHERE some_column=some_value

DELETE FROM personsWHERE P_id=4;

Page 52: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

57

2.2.4. Access-ControlMenurut Connolly & Begg (2010,p66), Salah satu fitur lainnya yang disediakan

DBMS dalam mengelola database adalah Kontrol-akses, dimana control-akses

menyediakan :

Security System

Fasilitas dari DBMS ini dapat digunakan untuk melindungi data-data yang ada

di dalam database dengan menolak user tanpa ijin untuk mengakses database,

contoh dari sistem keamanan adalah username dan password.

Intergrity System

Fasilitas dari DBMS ini berupa system integrasi data yang akan mengatur

konsistensi Data yg tersimpan, sehingga data yang ada di dalam database

menjadi terintegrasi satu dengan yang lainnya

Concurency Control System

Fasilitas DBMS ini berguna untuk memungkin pembagian akses ke database

sehingga pengguna yang dapat mengakses database tidak selalu bergantung

pada DBA.

Recovery Control System

Fasilitas DBMS ini merupakan system yang akan menyimpan keadaan

konsisten database sebelum terjadi kerusakan sehingga mempermudah proses

recovery pada saat data/database itu sendiri mengalami kegagalan.

User-accessible catalog

Page 53: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

58

Fasilitas DBMS ini berguna untuk menyimpan deskripsi dari Data yang ada di

dalam database yang akan mempermudah pengguna dalam mengenali data

yang ada di dalam database.

2.3 Index

Menurut Ashdown & Kyte (2011, p61), Index adalah sebuah struktur optional

yang diasosiasikan dengan table atau table cluster yang dapat mempercepat akses Data.

sedangkan menurut Connolly & Begg(2010,p242) index adalah sebuah struktur yang

menyediakan percepatan akses kepada sebuah baris dalam tabel didasari pada nilai dari

satu atau lebih kolom. Dari ke dua definisi diatas dapat ditarik kesimpulan bahwa index

adalah sebuah struktur yang digunakan untuk mempercepat akses data dan didasari dari

sebuah nilai. Oleh karena itu dengan jika suatu tabel dengan jumlah data yang besar

tidak menggunakan Index, maka database harus melakukan full table scan dalam

mencari nilai yang akan menyebabkan waktu akan semakin bertambah seiring dengan

meningkatnya volume Data. index memiliki dua karakteristik sebagai berikut :

1. Usability

Index dapat berupa usable ataupun unusable, dimana suatu unusable index tidak

diatur oleh operasi DML dan diabaikan oleh optimizer sehingga meningkatkan

peforma bulk loads yaitu kejadian dimana dilakukannya proses entry data dalam

jumlah besar ke dalam tabel dimana jika index sedang dalam kondisi usable

dapat memperlambat proses entry data tersebut. Selain itu penggunaan Unusable

Index dan Index partitions tidak mengkonsumsi space dan ketika suatu Index

Page 54: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

59

dibuat menjadi unusable, database akan melakukan proses drop pada Index

Segment.

2. Visibility

Index dapat berupa visible atau invisible, dimana suatu invisible Index akan diatur

oleh operasi DML dan tidak digunakan secara default oleh optimizer. Selain itu

suatu invisible Index merupakan suatu alternatif untuk membuat Index tersebut

menjadi unusable atau men-drop nya. Kemudian, Invisible Index sangat berguna

untuk melakukan testing terhadap suatu Index sebelum Index tersebut di drop

atau digunakan secara temporer tanpa mengganggu kinerja aplikasi.

Dalam penggunaannya memiliki beberapa bentuk yang dapat digunakan yakni :

Page 55: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

60

1. B-Tree Index

Gambar 2. 29 B-Tree Index (Sumber : Oracle Database Concepts 11g Release 2)

B-Tree merupakan singkatan dari balanced trees, dan merupakan jenis index

yang paling sering dipakai dimana B-tree index merupakan sederetan nilai terurut yang

dibagi dalam jarak nilai tertentu. Lalu B-tree juga memberikan performa pengambilan

sejumlah baris query yang sangat baik.

Page 56: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

61

Berikut adalah Jenis-jenis B-Tree index :

a. Index-Organized Tables

Gambar 2. 30 Index-Organized Tables (Sumber : learningdrop.com)

Index-Organized Tables merupakan tabel yang disimpan di dalam variasi

struktur B-Tree Index. Index-organized tables terlihat seperti tabel pada umumnya

dengan primary key index yang terdapat pada satu atau lebih atribut miliknya. Namun,

jika pada tabel biasa terdapat dua ruang penyimpanan yang harus dikelola (ruang

penyimpanan untuk tabel itu sendiri dan untuk B-Tree index), pada index-organized

tables seluruh atribut yang ada pada tabel tersebut disimpan sebagai index sehingga

hanya cukup mengelola satu B-Tree index yang mengandung primary key beserta

atribut-atribut yang lain. Jadi dapat dikatakan bahwa selain berperan sebagai tabel yang

menyimpan baris data pada umumnya, tabel tersebut juga berperan sebagai index.

Sebagai contoh, terlihat pada gambar 2.29 terdapat ilustrasi perbedaan antara tabel yang

menggunakan index biasa dengan index-organized tables. Pada index biasa, setiap data

dari atribut memiliki rowid yang berfungsi sebagai pointer kepada lokasi dari data yang

ada pada tabel yang bersangkutan sedangkan pada index-organized tables, tidak

Page 57: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

62

diperlukan rowid dikarenakan isi dari data-data tersebut disimpan langsung di dalam

index yang juga berperan sebagai tabel.

Untuk menggunakan index-organized tables dapat menggunakan sintaks

dengan format :

CREATE TABLE <table_name> (<column_name> <data type and precision>,CONSTRAINT <constraint_name>PRIMARY KEY

Dimana pada format diatas terlihat bahwa pemasangan index-organized tables

dilakukan dengan menambahkan sintaks ORGANIZATION INDEX pada saat

pembuatan tabel dilakukan (penjelasan mengenai format pembuatan tabel dapat dilihat

pada subbab 2.2.2 poin 1 halaman 63).

Contoh pemasangan index-organized tables terhadap tabel jamkerja adalah

sebagai berikut:

CREATE TABLE jamkerja (tanggal_kerja DATE,CONSTRAINT cons_jkPRIMARY KEY (jamkerja))ORGANIZATION INDEX;

Page 58: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

63

b. Reverse Key Indexes

Gambar 2. 31 Reverse Key Indexes (Sumber : oracledba.ezpowell.com)

Reverse Key Index merupakan jenis index dari varian B-Tree Index yang

berfungsi untuk membalikan nilai dari index key, hal ini dapat dilihat pada gambar 2.31

dimana ID pada tabel yang menggunakan reverse key index (tabel di sebelah kanan)

memiliki nilai yang berbanding terbalik dengan nilai yang terdapat pada tabel yang tidak

menggunakan reverse key index(tabel di sebelah kiri). Reverse-Key Index sangat baik

digunakan dalam proses insert namun penggunaan Reverse Key Index menjadi terbatas

dikarenakan database tidak dapat menggunakannya untuk melakukan index range scans.

Untuk menggunakan reverse key index, dapat dilakukan dengan menambahkan

sintaks REVERSE pada saat pembuatan index dilakukan (penjelasan mengenai format

pembuatan index dapat dilihat pada subbab 2.2.2 poin 1 halaman 65) seperti yang dapat

dilihat pada format yang tertera dibawah ini :

CREATE INDEX <index_name> ON <table_name> (<column_name>) REVERSE;

Page 59: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

64

Dengan penggunaan query reverse index diatas, Berikut merupakan contoh

pembuatan reverse index dengan nama idx=tes pada tabel sales di kolom”saleid” :

CREATE INDEX idx_tes ON sales (saleid) REVERSE;

c. Ascending - Descending Indexes

Gambar 2. 32 ascending – descending index

Pada ascending index, oracle database akan menyimpan data ke dalam index

dengan pengurutan secara ascending, dimana secara Default, character data akan

diurutkan bedasarkan nilai biner yang ditampung didalam setiap byte pada sebuah value

dari yang nilainya paling kecil ke yang paling besar. Sedangkan pada descending index,

index ini menyimpan nilai pada kolom tertentu secara descending. Descending index

sangat berguna jika sebuah query ingin mengurutkan kolom secara ascending dan

lainnya secara descending. Sebagai contoh ilustrasi yang terlihat pada gambar 2.32, pada

tabel Department, jika menggunakan ascending index akan dilakukan penyimpanan nilai

dari kolom department id ke dalam index yang dimulai dari nilai terendah ke nilai

tertinggi secara terurut. Sedangkan jika menggunakan descending index maka

penyimpanan nilai dari kolom department id akan diurutkan dari nilai tertinggi ke nilai

terendah.

Page 60: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

65

Untuk menggunakan ascending maupun descending index, berikut merupakan

format dan contoh sintaks yang dapat digunakan dengan format :

CREATE INDEX “Index Name” ON “Table Name”(“Column_name” ASC, “Column Name” DESC)

Dimana index_name merupakan nama index yang ingin dibuat, table_name

adalah nama tabel tempat index akan dibuat, “Column_name”adalah kolom yang ingin

diberikan index, dan ASC merupakan sintaks untuk memberikan index secara ascending

serta DESC merupakan sintaks untuk memberikan index secara descending pada kolom.

Bedasarkan format syntax diatas, dibawah ini merupakan contoh pembuatan

index secara ascending untuk kolom first name dan index secara descending untuk

kolom emplid:

CREATE INDEX emp_name_emp_idx ON hr.employees(first_name ASC, emplid DESC);

d. B-Tree Cluster Indexes

Gambar 2. 33 B-Tree Cluster Index(Sumber : Oracle Database Concepts 11g Release 2)

Page 61: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

66

B-Tree Cluster Index merupakan sebuah tabel cluster (tabel yang telah

dikelompokan bedasarkan atribut yang telah ditentukan) yang menggunakan index untuk

mencari data yang diinginkan. B-Tree cluster index akan mengasosiasikan nilai pada

cluster key dengan alamat data block sehingga pada saat penyimpanan ke dalam index,

data-data yang ada akan dikelompokan sesuai dengan nilai pada kolom yang

didefinisikan sebagai cluster key. B-Tree Cluster index dikelola secara terpisah, sama

seperti index yang terdapat pada nonclustered table dan dapat muncul pada tablespace

yang berbeda dengan lokasi tabel cluster tersebut. Sebagai contoh, terlihat pada gambar

2.33, department_id yang terdapat pada tabel employees_departments_cluster berperan

sebagai cluster key. Oleh karena itu, penyimpanan data ke dalam index pada tabel

tersebut akan dikelompokan bedasarkan nilai department_id yang sama.

Untuk menggunakan B-Tree cluster index, berikut merupakan format dan

contoh sintaks penggunaan yang dapat digunakan dengan format syntax sebagai berikut :

CREATE CLUSTER “Table cluster Name” (<column name> <data type>)

CREATE INDEX “Index Name” ON CLUSTER “Table cluster Name”

Pada format yang terlihat diatas, awalnya jika ingin menggunakan b-tree cluster

index dimana index tersebut hanya dapat digunakan pada cluster table maka akan

dijelaskan cara membuat cluster table terlebih dahulu dimana table cluster name

merupakan nama cluster table yang ingin dibuat, “Column_name”adalah nama kolom

yang ingin dibuat, dan data_type merupakan tipe data dari kolom yang akan dibuat.

Kemudian setelah itu pembuatan b-tree cluster index baru dapat dilakukan dimana

Page 62: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

67

bedasarkan format diatas, index name merupakan nama index yang ingin dibuat, dan

table cluster name merupakan nama cluster table tempat index akan dibuat.

Bedasarkan format diatas, dibawah ini merupakan contoh penggunaan b-tree

cluster index pada tabel dept_cluster yang merupakan cluster table:

CREATE CLUSTER dept_cluster (department_id number(4))

CREATE INDEX employeeidx ON CLUSTER dept_cluster;

2. Bitmap Index

Gambar 2. 34 Bitmap Index (Sumber : Oracle Database Concepts 11g Release 2)

Di dalam Bitmap Index, database akan menyimpan setiap index key dalam

bentuk bitmap. Lalu pada B-Tree Index, satu index entry akan mengarah kepada satu

baris, pada bitmap index, index entry akan menggunakan bitmap untuk melakukan

penunjukan pada lebih dari satu baris yang biasanya digunakan untuk data warehouse

atau pada sebuah kondisi dimana query tersebut mereferensikan banyak kolom

sekaligus. Penyimpanan index dengan menggunakan bitmap index dapat dilihat pada

gambar 2.34 dimana pada gambar tersebut terlihat bahwa bitmap index mencatat nilai 1

untuk atribut gender “M” pada baris pertama, ketiga, keempat, dan kelima yang

menunjukkan bahwa pada saat proses penyimpanan nilai dari atribut gender ke dalam

Page 63: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

68

bitmap index dilakukan, index akan melakukan pemeriksaan terhadap baris-baris yang

terdapat di tabel customer dan ditemukan bahwa nilai untuk atribut gender pada baris

pertama, ketiga, keempat, dan kelima di tabel customer berupa “M”. Sebaliknya, terlihat

juga bahwa bitmap index mencatat nilai 1 untuk atribut gender “F” pada baris kedua,

keenam, dan ketujuh yang menunjukkan bahwa pada saat proses penyimpanan nilai dari

atribut gender dilakukan, index menemukan bahwa terdapat nilai atribut gender “F”

pada baris kedua, keenam, dan ketujuh di tabel customer. Dibawah ini merupakan

situasi dimana bitmap index dapat digunakan:

1. Kolom index memiliki cardinality yang rendah; jumlah dari distinct value lebih

rendah dari pada jumlah baris yang ada.

2. Table yang terindex bersifat read-only atau tidak dapat dimodifikasi dengan

perintah DML.

Untuk menggunakan bitmap index, berikut merupakan format sintaks yang dapat

digunakan :

CREATE BITMAP INDEX “index_name”ON “table_name” (column name);

Dimana index_name adalah nama index yang ingin dibuat, table_name adalah nama

tabel dimana index tersebut ingin dibuat dan columnname adalah nama kolom yang akan

diberi index. Sebagai contoh, syntax dibawah ini akan membuat bitmap index dengan

nama emp_bitmap_idx pada tabel Index_demo di kolom gender :

CREATE BITMAP INDEX emp_bitmap_idxON index_demo (gender);

Page 64: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

69

3. Function Based Index

Gambar 2. 35 Function Based Index(Sumber : http://flylib.com/books/4/322/1/html/2/images/fig07_06.jpg)

Function based index merupakan tipe index yang memiliki kegunaan untuk

melakukan suatu proses komputasi terhadap satu atau lebih kolom dengan penggunaan

fungsi. Fungsi yang digunakan dalam pembuatan index dapat berupa arithmetic

expression atau expression yang menggunakan SQL, PL/SQL, atau C. Database hanya

akan menggunakan function-based index ketika fungsi yang didefinisikan pada saat

pembuatan function-based index terdapat pada query yang bersangkutan oleh karena itu

function-based index cocok digunakan untuk mengevaluasi statement-statement yang

mengandung fungsi pada klausa WHERE-nya. Sebagai ilustrasi, terlihat pada gambar

2.35 bahwa nilai yang tersimpan ke dalam index merupakan hasil dari fungsi komputasi

perkalian nilai dari kolom qty dengan price.

Page 65: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

70

Untuk membuat function-based index, maka dapat menggunakan sintaks seperti

yang tertera dibawah ini:

Format :

CREATE INDEX index_name ON “table_name” (“function”, “column_name 1”, “column_name

2”);

Dimana index_name adalah nama index yang ingin dibuat, table_name adalah nama

tabel dimana index tersebut ingin dibuatm function merupakan spesifikasi fungsi yang

ingin digunakan dan columnname adalah nama kolom-kolom yang digunakan di dalam

fungsi tersebut. Sebagai contoh, syntax dibawah ini akan membuat function based index

dengan nama fnc_idx pada tabel hasil dengan fungsi yaitu “50*nilaiuas*nilaitm” :

CREATE INDEX fnc_idx ON hasil (50*nilaiuas*nilaitm, nilaiuas, nilaitm);

4. Application Domain Index

Application domain index mengijinkan user untuk membuat sendiri struktur

index yang diinginkannya dan mengimplementasi tipe index baru yang awalnya tidak

tersedia di oracle database untuk disesuaikan dengan aplikasi yang bersangkutan. Index

ini biasanya dibentuk secara khusus untuk melakukan index pada data-data kompleks

seperti dokumen, foto, video, dan lainnya.

Untuk menggunakan application domain index, berikut merupakan format dan

contoh sintaks seperti yang tertera dibawah ini :

Format :

Page 66: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

71

CREATE INDEX “index_name” ON “table_name”(“column_name”)indextype is “index_structure”;

Dimana index_name adalah nama index yang ingin dibuat, table_name adalah

nama tabel dimana index tersebut ingin dibuat, columnname adalah nama kolom yang

akan diberi index, dan index_structure merupakan struktur index yang ingin digunakan.

Sebagai contoh, syntax dibawah ini akan membuat application domain index dengan

nama test_idx pada tabel test_tab dengan struktur index yaitu ctxsys.context:

CREATE INDEX test_idx2 ON test_tab(desc)indextype is ctxsys.context;

5. Composite Index

Composite index, disebut juga Concatenated index, merupakan index yang

terdapat pada lebih dari saru kolom pada suatu tabel. Pada penerapannya composite

Index dapat mempercepat pengambilan data pada statement SELECT jika pada klausa

WHERE terdapat pemanggilan kolom-kolom yang terdapat pada Composite Index.

Umumnya, pada saat pembuatan composite index, kolom yang paling sering diakses

didefinisikan pertama kali dikarenakan composite index akan aktif jika kolom yang

terdapat di depan digunakan dalam pemanggilan query. Sebaliknya, jika kolom yang

digunakan bukan kolom yang didefinisikan pertama kali (misalnya yang digunakan

kolom pada urutan kedua, ketiga, dan seterusnya) maka composite index tidak akan

aktif. Composite index cocok digunakan pada query yang memiliki lebih dari satu

kolom atribut yang sering dipanggil secara bersamaan karena lebih efisien dibanding

membuat index satu persatu pada masing-masing kolom tersebut. Sebagai contoh, jika

pada tabel employee terdapat dua atribut yang sering dipanggil yaitu atribut nama dan

Page 67: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

72

umur maka akan lebih baik jika membuat composite index untuk kedua atribut tersebut

dibanding membuat index biasa satu persatu yaitu membuat index untuk nama dan

membuat index untuk umur.

Berikut merupakan format dan contoh pembuatan composite index :

Format :

CREATE INDEX “Index Name” ON “Table Name”(“Column Name”, Column Name”)

Dimana index_name adalah nama index yang ingin dibuat, table_name adalah

nama tabel dimana index tersebut ingin dibuat, columnname adalah nama kolom yang

akan diberi index. Sebagai contoh, syntax dibawah ini akan membuat composite index

dengan nama employeeidx pada tabel employee pada kolom last_name dan salary :

CREATE INDEX employeeidx ON employees (last_name, salary);

2.3.1 Ilustrasi sebelum dan sesudah pemakaian index1. Sebelum Pemakaian Index

Gambar 2. 36 heap_based-Table (http://msdn.microsoft.com/en-us/library/aa964133(v=sql.90).aspx)

Pada non-index table saat pemanggilan data dilakukan maka leaf-Node akan

menjadi sebuah petunjuk pada query engine untuk mengarahkannya pada table tujuan

Page 68: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

73

dimana pada leaf node terdapat kunci-kunci pengarah seperti nomor baris, nomor

halaman, id dan lainnya. Sedangkan pada Indexed-table leaf node sudah memuat data

dan tidak lagi bertindak sebagai pengarah query engine melainkan menjadi seperti target

tabel itu sendiri

2. Sesudah Pemakaian Index

Gambar 2. 37 Indexed-Based Table (http://msdn.microsoft.com/en-us/library/aa964133(v=sql.90).aspx)

Beberapa keuntungan dalam memakai index adalah sebagai berikut :

1. Data yang tersimpan pada leaf-nodes tidaklah terduplikasi, tetapi dalam kasus

covering index pada sebuah heap table, data akan tersimpan pada index dan heap

2. Table scan menjadi lebih cepat karena leaf nodes dari clustered index tersimpan

bersamaan.

3. Pada saat join maka join akan dilakukan bedasarkan join key yang sebelumnya akan

diurutkan terlebih dahulu, jika index terpasang pada join key tersebut maka, data

yang akan diambil sudah terurut.

Page 69: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

74

2.4 Buffer Cache

Sebagai penjelasan lebih lanjut mengenai buffer cache yang telah dijalaskan

pada subbab 2.2.1 poin 2d dikatakan oleh Strohm (2011,p11-2) Database Buffer Cache

adalah sebagian dari SGA yang menyimpan duplikat atau copy Data block read dari

datafile. Dimana setiap user yang yang melakukan koneksi terhadap instance saling

berbagi akses ke dalam database buffer cache. Lalu data di Oracle diatur sedemikian

rupa ke dalam block dengan size yang telah ditentukan (mis/ 8k) dan table dan Index

terdiri dari sejumlah block dalam disk, Jika block ini ada di dalam memory, maka

mereka akan ditempatkan di dalam buffer. Pada saat pertama kali pengguna oracle

database memerlukan/ingin mengakses sebuah block, maka block pertama kali dicari di

dalam database buffer cache, proses ini dinamakan buffer get, jika proses pencarian

menemukan block yg dibutuhkan( A cache hit), maka block dapat langsung dibaca atau

diakses dari memory (Soft Parsing). Jika tidak ditemukan (A Cache Miss), maka block

harus di copy dari sebuah datafile di dalam disk ke buffer di dalam cache sebelum data

tersebut dapat diakses (Hard Parsing). Dan Strohm (2011,p11-2) juga mengatakan

bahwa akses data melalu A Cache Hit lebih cepat daripada mengakses Data melalui A

Cache Miss.

Bedasarkan penjelasan diatas maka apabila nilai Buffer gets memberikan angka

yang tinggi hal tersebut akan mempengaruhi performa dari database karena jumlah

resource yang digunakan menjadi besar. Hal ini disebabkan DBWr akan melakukan

hard parsing ke dalam database, oleh karena itu disebabkan oleh proses hard parsing

Page 70: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

75

yang dilakukan oleh database memakan resource yang cukup besar, maka waktu yang

dibutuhkan untuk penampilan data hasil query memakan waktu yang cukup lama.

2.5 Performance Tuning

Performance Tuning adalah proses peningkatan performa kerja dari suatu

database baik dalam sisi penggunaan resource, waktu, maupun cost. Menurut Chan

(2008, p1-2), dimana Performance tuning dilakukan pada saat muncul masalah yang

menyebabkan kemunduran kinerja database, kemunduran kinerja ini ditandai oleh :

Physical I/O yang lambat

Pada umumnya hal ini diakibatkan oleh disk yang tidak di konfigurasi dengan

benar, tetapi hal ini juga bisa disebabkan oleh banyaknya I/O yang digunakan

oleh SQL yang tidak tepat

Latch contention

Latch adalah sebuah mekanisme yang digunakan oleh oracle untuk mengakses

memory structure seperti buffer cache, java pool, dan library cache, pada

umumnya Latch Contention ini dapat diatasi dengan pergantian aplikasi dan

jarang dapat di tuning dengan merekonfigurasi instance

Excessive CPU usage

Excessive CPU Usage biasanya diakibatkan oleh size dari system yang tidak

mencukupi, SQL yang tidak optimal atau tidak benar, atau program aplikasi

yang tidak efisien

Apabila ketiga hal diatas ini sampai terjadi maka database tersebut haruslah di

tuning agar performa dari database-nya menjadi kembali optimal sehingga dapat

Page 71: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

76

mendukung proses bisnis dengan lebih baik, jika database tersebut tidak di tuning maka

kinerja database menjadi tidak optimal, lambat, dan proses bisnis akan terganggu.

Menurut Chan & Ashdown( 2011,p1-1) cara untuk melakukan performance tuning ada

dua yakni Instance Tuning dan SQL Tuning dan menurut (Karthik, Reddy, & Vanan,

IJCSI International Journal of Computer Science Issues Vol 9 Issue 4, No 3, July 2012,

2012) dalam melakukan tuning hal-hal yang harus dilakukan adalah

Mengurangi Waktu yang dibutuhkan dalam memproses SQL

Mencari jalan yang paling efektif untuk memproses data

Meningkatkan waktu pencarian dengan index

Menggabungkan dua tabel atau lebih secara efisien

Keempat hal ini dapat dilakukan dengan melakukan SQL Tuning yang akan

dibahas lebih lanjut pada subbab 2.5.1

2.5.1. SQL Tuning

SQL tuning merupakan proses tuning pada SQL Statement yang biasanya

terdapat pada aplikasi yang berfungsi untuk menambah, mengubah, menghapus data

atau dalam melakukan pengambilan dan penampulan data dapat juga berupa function

atau package yang terdapat dalam aplikasi. Dalam pelaksanaannya SQL Tuning meliputi

langkah-langkah dasar yakni :

1. Mengidentifikasi High-Load atau Top SQL yang terkait dengan aplikasi dan

system resource yang besar, dengan cara me-review Eksekusi SQL yang telah

berjalan.

Page 72: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

77

2. Mengevaluasi Syntax SQL yang dipakai dan menentukan solusi terbaik yang

dapat diimplementasikan.

3. Mengimplementasi aksi-aksi perbaikan untuk menghasilkan SQL Statement

yang lebih baik.

Ketiga langkah ini dapat dilakukan berulang-ulang sampai performa terbaik

telah dicapai atau tidak ada lagi SQL yang dapat dituning.

Beberapa cara-cara yang perlu diperhatikan dalam proses SQL Tuning adalah :

1. Penggunaan JOIN

Penggunaan join yang tidak tepat dapat menyebabkan waktu pengambilan dan

penampilan data memakan waktu yang cukup lama. Untuk contoh dan format

penggunaan syntax JOIN dapat dilihat pada subbab 2.2.3.

2. Penggunaan Syntax Exists dan IN

Penggunaan Syntax Exists dan IN yang tidak tepat dapat menyebabkan waktu

pengambilan dan penampilan data memakan waktu yang cukup lama diaman

Syntax Exist baiknya digunakan untuk perbandingan tabel dengan jumlah data

yang banyak dan syntax in digunakan untuk perbandingan tabel dengan jumlah

data yang sedikit. Untuk Contoh dan Format penggunaan syntax JOIN dapat

dilihat pada subbab 2.2.3.

3. Penggunaan GROUP BY sebagai Alter DISTINCT

Penggunaan syntax Distinct akan melihat satu demi satu field record yang ada

dan membandingkannya sedangkan group by akan mengambil seluruh hasil dan

mengelompokannya menjadi satu field yang unik. Oleh karena itu dengan

Page 73: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

78

syntax distinct penggunaan resource yang cukup banyak menyebabkan waktu

eksekusi menjadi lebih lama.

4. Penggunaan Index

Menurut [Ahmed, Beg, Gupta, Mansoori, 2012] index sangat berpengaruh

dalam pengurangan waktu eksekusi operasi diversal seperti select dan join,

penggunaan dan contoh pemakaian index dapat dilihat pada subbab 2.2.2 poin

1c sedangkan untuk penjelasan mendalam mengenai index dapat dilihat pada

subbab 2.3.

2.6 ERD & Schema

Dalam perancangan sebuah database, seorang database designer akan membuat

sebuah perancangan sebelum membuat bentuk jadi dari database, perancangan yang

dibuat oleh seorang database designer akan berbentuk ERD yang merupakan level

konseptual dari suatu database dan bentuk jadi dari database berupa sebuah Schema.

Sebagai penjelasan lebih lanjut ERD dan schema akan dibahas di poin 1 dan poin 2

1. ERD

Menurut Connolly & Begg (2010,p371) ERD adalah pendekatan database

design yang dimulai dengan mengidentifikasi data penting berupa entitas dan hubungan.

Disebutkan juga oleh Connolly & Begg (2010,p371) sebuah ERD terdiri dari dua macam

komponen yakni :

a. Entitas

Menurut Connolly dan Begg(2010,p343)Entitas merupakan sebuah objek

dengan ciri-ciri yang sama dimana diidentifikasikan oleh perusahaan sebagai sesuatu

Page 74: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

79

yang keberadaannya independen, pada umumnya entitas dikatakan sebagai objek yang

ada di dalam database.

b. Hubungan

Menurut Connolly dan Begg (2010,p346) hubungan yang dimaksud adalah

sebuah asosiasi berarti antara entitas yang dapat juga dikatakan sebagai fungsi antara

entitas. Di dalam sebuah hubungan antara entitas terdapat sebuah cardinalitas yang

merupakan jumlah asosiasi yang dapat terjadi antara ke duanya, sebagai contoh sesuai

dengan gambar 2.38 dibawah, satu cabang minimal memiliki 1 atau lebih banyak

“Staff”. Untuk penjelasan lebih lanjut mengenai kardinalitas berikut merupakan bentuk-

bentuk kardinalitas yang dapat terjadi :

Zero or One to Zero or One

Pada hubungan Zero or One to Zero or One (gambar dapat dilihat pada

lembar lampiran halaman L1) hubungan antara entitas berupa tidak ada

atau satu dengan tidak ada atau satu, sebagai contoh dianalogikan terdapat

dua entitas yakni laki-laki dengan perempuan yang bersifat zero or one to

zero or one dimana laki-laki dapat menikahi satu atau tidak sama sekali

perempuan dan entitas perempuan dapat dinikahi satu atau tidak sama

sekali laki-laki

Zero or One to Zero or Many

Pada hubungan Zero or One to Zero or One (gambar dapat dilihat pada

lembar lampiran halaman L1) hubungan antara entitas berupa tidak ada

Page 75: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

80

atau satu dengan tidak ada atau satu, sebagai contoh dianalogikan terdapat

dua entitas yakni laki-laki dengan perempuan yang bersifat zero or one to

zero or one dimana laki-laki dapat menikahi satu atau tidak sama sekali

perempuan dan entitas perempuan dapat dinikahi satu atau tidak sama

sekali laki-laki

Zero or One to One or Many

Pada hubungan Zero or One to one or Many (gambar dapat dilihat pada

lembar lampiran halaman L1) hubungan antara entitas berupa tidak ada

atau satu dengan tidak ada atau lebih dari satu, sebagai contoh dianalogikan

terdapat dua entitas yakni manusia dengan agama yang bersifat zero or one

to one many dimana entitas manusia dapat memiliki satu atau tidak sama

sekali agama dan entitas agama dapat dimiliki satu atau banyak manusia.

One to One

Pada hubungan One to One (gambar dapat dilihat pada lembar lampiran

halaman L1) hubungan antara entitas berupa satu dengan satu, sebagai

contoh dianalogikan terdapat dua entitas yakni manusia dengan akte lahir

yang bersifat one to one dimana Manusia hanya dapat memiliki satu akte

lahir dan akte lahir hanya dimiliki oleh satu manusia

One to One or Many

Pada hubungan One to One or Many (gambar dapat dilihat pada lembar

lampiran halaman L1) hubungan antara entitas berupa satu dengan satu atau

banyak, sebagai contoh dianalogikan terdapat dua entitas yakni ayah

Page 76: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

81

dengan anak yang bersifat One to One or Many dimana ayah dapat

memiliki satu atau banyak anak dan entitas anak hanya dapat memiliki satu

ayah

Zero or Many to One

Pada hubungan Zero or many to One (gambar dapat dilihat pada lembar

lampiran halaman L1) hubungan antara entitas berupa tidak ada atau satu

dengan tidak ada atau satu, sebagai contoh dianalogikan terdapat dua

entitas yakni nomor handphone dengan manusia yang bersifat Zero or

many to One dimana manusia dapat memiliki banyak atau tidak sama

sekali nomor handphone dan entitas nomor handphone hanya dapat dimiliki

satu manusia

One or Many to One or Many

Pada hubungan One or Many to One or Many (gambar dapat dilihat pada

lembar lampiran halaman L1) hubungan antara entitas berupa satu atau

banyak entitas dapat dimiliki satu atau banyak entitas lainnya, sebagai

contoh dianalogikan terdapat dua entitas yakni manusia dengan mata kuliah

yang bersifat One or Many to One or Many dimana manusia dapat

memiliki satu atau banyak mata kuliah dan mata kuliah dan entitas mata

kuliah dapat dimiliki satu atau banyak mahasiswa.

Bedasarkan penjelasan mengenai entitas dan hubungan diatas, berikut

merupakan contoh ERD Staff dengan Branch :

Page 77: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

82

Gambar 2. 38 Contoh Sederhana ERD; Sumber : (Connolly & Begg, 2010,p347)

Bedasarkan gambar erd diatas diketahui bahwa ada dua entitas yakni “Staff”

dan “Branch” dimana hubungan antara keduanya adalah “Has” sehingga ERD diatas

bermakna “ Branch” memiliki “ Staff”.

2. Schema

Menurut Connolly dan Begg (2010,p86) Schema adalah deskripsi secara

meluruh sebuah database dimana ada tiga macam tipe schema yang didefinisikan

bedasarkan tingkat ke-abstrak-an dari ketiga tingkat arsitekturnya. ketiga macam tipe

shema yakni External Schema yang ber-korespodensi dengan tampilan data , Conceptual

Schema yang mendeskripsikan segala entitas, atribut, dan hubungan dengan integrity

Constraint, Internal Schema yang merupakan deskripsi lengkap dari internal model.

Page 78: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

83

Gambar 2. 39 Perbedaan 3 level schema

f. External Level

External Level merupakan arsitektur dimana user melihat bentuk database, dan

pada level ini setiap bagian database dapat dilihat bedasarkan keinginan user. Sebagai

contoh user andi melihat tampilan tanggal dengan format dd-mm-yyyy sedangkan user

badrun melihat tanggal yang sama dengan format yyyy-mm-dd.

g. Conceptual Level

Conceptual Level merupakan arsitektur dimana data yang disimpan

dideskripsikan dan hubungan antara data tersebut, di dalam conceptual level

merepresentasikan :

Semua entitas, atribut, dan relationship

Constraint data

Informasi data

Integritas dan keamanan informasi

Page 79: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

84

h. Internal Level

Level ini menjelaskan tentang representasi fisik database pada computer, level

ini juga menjelaskan bagaimana data disimpan di dalam database seperti alokasi storage

untuk data dan index, deskripsi dari storage(ukuran dari data), penempatan record,

kompresi data dan enkripsi data.

2.7 Sistem Informasi Penggajian

System informasi penggajian dapat diartikan secara singkat sebagai system

informasi yang berfokus pada system penggajian, untuk pemahaman lebih lanjut

mengenai system informasi penggajian maka akan dibahas lebih lanjut mengenai gaji

dan system informasi. Menurut Mulyadi (2008,p373) Gaji adalah pembayaran atas

penyerahan jasa yang dilakukan oleh karyawan administrasi atau yang mempunyai

jenjang jabatan manager yang pada umumnya dibayarkan secara tetap per bulan, dapat

dikatakan juga gaji adalah balas jasa atas tenaga kerja yang tidak terpengaruh oleh hasil

produksi perusahaan. Lalu Gaji yang diterima oleh karyawan merupakan bayaran yang

terdiri dari

1. Gaji Pokok

Gaji yang diterima oleh karyawan bedasarkan jabatan atau tingkatan karyawan

tersebut yang sesuai dengan ketentuan perusahaan.

2. Insentive

Insentive merupakan tambahan atas gaji pokok yang diberikan sesuai ketentuan

dari perusahaan diaman karyawan bekerja

a. Uang Makan dan Transport

Page 80: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

85

Merupakan tambahan yang diterima karyawan selain dari gaji pokok untuk

biaya asupan gizi dan biaya perjalanan yang ditempuh dari tempat tinggal

karyawan menuju gedung kantor

b. Uang Lembur

Bayaran atas pekerjaan yang dilakukan melebihi jam kerja yang telah

ditentukan perusahaan demi menuntaskan pekerjaan. Penjelasan lebih lanjut

mengenai pembayaran tentang lembur akan dibahas pada poin 2.7.2

3. Tunjangan

Bayaran tambahan yang diberikan kepada karyawan bedasarkan kebutuhan

karyawan tersebut pada waktu yang tertentu, seperti tunjangan hari raya pada

hari raya sesuai dengan ketentuan perusahaan tentang tunjangan hari raya,

tunjangan melahirkan pada saat ada karyawati yang sedang melahirkan.

Penjelasan lebih lanjut mengenai THR akan dibahas pada poin 2.7.3.

4. Bonus

Merupakan tambahan bayaran kepada karyawan diluar gaji pokok yang

diberikan kepada karyawan jika perusahaan dalam keadaan profit. Jumlah

Bonus yang diterima karyawan sesuai dengan prestasi kerja karyawan dan

ketentuan perusahaan yang berlaku.

Gaji dari karyawan sesuai dengan penjelasan diatas merupakan gaji dalam

bentuk “kotor” dimana “gaji kotor” tersebut akan dikenakan pemotongan-pemotongan

sesuai dengan ketentuan perusahaan, jenis-jenis pemotongan atas gaji dapat berupa

pembayaran pajak, pembayaran jamsostek, pembayaran hutang karyawan,biaya

Page 81: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

86

pengobatan, dan lain-lainnya sesuai dengan ketentuan perusahaan. Setelah pemotogan

gaji dilakukan terhadap “gaji kotor” maka gaji tersebut dianggap merupakan “gaji

bersih” yang akan dibawa pulang oleh karyawan(Take Home Pay). Sebagai penjelasan

lebih lanjut mengenai pemotongan gaji karyawan berjenis pajak akan dijelaskan pada

poin 2.71

Disamping penjelasan mengenai gaji diatas menurut Connolly & Begg

(2010,p282) sistem informasi diartikan sebagai sebuah sumber yang memperbolehkan

koleksi, manajemen, pengendalian, dan penguraian informasi kepada seluruh organisasi.

Dikatakan juga oleh Connolly & Begg(2010, p282) bahwa sebuah sistem informasi

berbasis komputer meliputi sebuah database, perangkat lunak database, aplikasi,

perangkat keras komputer, dan pengguna dari sistem itu sendiri.

Dari kedua penjelasan diatas mengenai sistem informasi dan gaji maka dapat

ditarik kesimpulan bahwa sistem informasi penggajian adalah sebuah sistem yang dapat

menyimpan, me-manage dan menampilkan informasi mengenai penggajian kepada

pengguna atau organisasi yang terkait dengan menggunakan sebuah sistem komputer

yang terkait dengan database.

2.7.1. PajakMenurut (Direktorat Jendral Pajak) Ketentuan tentang pembayaran pajak

penghasilan(Pph) telah diatur oleh ketentuan pemerintah tentang pajak penghasilan pasal

17 yang berisi :

Tarif Pajak Penghasilan (PPh) yang digunakan untuk menghitung penghasilan

kena pajak adalah sebagai berikut:

Page 82: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

87

2. Ayat (1)

Tarif pajak yang diterapkan atas Penghasilan Kena Pajak bagi:

a. Wajib Pajak Orang Pribadi Dalam Negeri adalah sebagai berikut:

Lapisan Penghasilan Kena Pajak Tarif Pajak

Sampai dengan Rp 50.000.000,- 5%

di atas Rp 50.000.000,- sampai dengan Rp 250.000.000,- 15%

di atas Rp 250.000.000,- sampai dengan Rp 500.000.000,- 25%

di atas Rp 50.000.000,- 30%b. Wajib Pajak Badan Dalam Negeri dan Bentuk Usaha Tetap adalah sebesar 28%

(dua puluh delapan persen).

3. Ayat (2)

Tarif tertinggi sebagaimana dimaksud pada ayat (1) huruf a dapat diturunkan

menjadi paling rendah 25% (dua puluh lima persen) yang diatur dengan

Peraturan Pemerintah.

a. Ayat(2a)

Tarif sebagaimana dimaksud pada ayat (1) huruf b menjadi 25% (dua puluh

lima persen) yang mulai berlaku sejak tahun pajak 2010.

b. Ayat(2b)

Wajib Pajak badan dalam negeri yang berbentuk perseroan terbuka yang paling

sedikit 40% (empat puluh persen) dari jumlah keseluruhan saham yang disetor

diperdagangkan di bursa efek di Indonesia dan memenuhi persyaratan tertentu

lainnya dapat memperoleh tarif sebesar 5% (lima persen) lebih rendah daripada

Page 83: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

88

tarif sebagaimana dimaksud pada ayat (1) huruf b dan ayat (2a) yang diatur

dengan atau berdasarkan Peraturan Pemerintah.

c. Ayat(2c)

Tarif yang dikenakan atas penghasilan berupa dividen yang dibagikan kepada

Wajib Pajak orang pribadi dalam negeri adalah paling tinggi sebesar 10%

(sepuluh persen) dan bersifat final.

d. Ayat(2d)

Ketentuan lebih lanjut mengenai besarnya tarif sebagaimana dimaksud pada

ayat (2c) diatur dengan Peraturan Pemerintah.

4. Ayat (3)

Besarnya lapisan Penghasilan Kena Pajak sebagaimana dimaksud pada ayat (1)

huruf a dapat diubah dengan Keputusan Menteri Keuangan.

5. Ayat(4)

Untuk keperluan penerapan tarif pajak sebagaimana dimaksud pada ayat (1),

jumlah Penghasilan Kena Pajak dibulatkan ke bawah dalam ribuan rupiah

penuh.

6. Ayat(5)

Besarnya pajak yang terutang bagi Wajib Pajak orang pribadi dalam negeri

yang terutang pajak dalam bagian tahun pajak sebagaimana dimaksud dalam

Pasal 16 ayat (4), dihitung sebanyak jumlah hari dalam bagian tahun pajak

tersebut dibagi 360 (tiga ratus enam puluh) dikalikan dengan pajak yang

terutang untuk 1 (satu) tahun pajak.

Page 84: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

89

7. Ayat (6)

Untuk keperluan penghitungan pajak sebagaimana dimaksud pada ayat (5), tiap

bulan yang penuh dihitung 30 (tiga puluh) hari.

8. Ayat(7)

Dengan Peraturan Pemerintah dapat ditetapkan tarif pajak tersendiri atas

penghasilan sebagaimana dimaksud dalam Pasal 4 ayat (2), sepanjang tidak

melebihi tarif pajak tertinggi sebagaimana tersebut pada ayat (1).

2.7.2. LemburMenurut Undang-Undang No. 13 Tahun 2003 tentang Ketenagakerjaan mengenai

ketentuan waktu kerja lembur pada libur mingguan dan libur nasional, Pengusaha wajib

memberi waktu istirahat diantaranya adalah istirahat mingguan 1 (satu) hari untuk 6 (enam)

hari kerja dalam 1 (satu) minggu atau 2 (dua) hari untuk 5 (lima) hari kerja dalam 1 (satu)

minggu (UU No.13/2003 pasal 79 ayat 2). Dan sesuai dengan ketentuan yang terdapat pada

Kepmenakertrans No. 102/MEN/VI/2004 perhitungan upah lembur adalah sebagai berikut :

PERHITUNGAN UPAH LEMBUR PADA HARI LIBUR/ISTIRAHAT

JAM LEMBUR KETENTUAN UPAH LEMBUR

RUMUS

6 Hari Kerja per minggu (40 Jam/Minggu)

7 Jam pertama 2 Kali Upah/Jam 7 jam x 2 x 1/173 x upah sebulan

Jam Ke 8 3 Kali Upah/jam 1 jam x 3 x 1/173 xupah sebulan

Page 85: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

90

Jam Ke-9 s/d Jam ke-10

4 Kali Upah/Jam 1 jam X 4 x 1/173 x upah sebulan

Hari Libur Resmi Jatuh Pada Hari Kerja Terpendek misal Jum’at

5 Jam pertama 2 X Upah/jam 5 jam x 2 x 1/173 x upah sebulan

Jam ke-6 3 X Upah/jam 1 jam x 3 x 1/173 xupah sebulan

Jam Ke-7 & 8 4 X Upah/jam 1 jam X 4 x 1/173 x upah sebulan

5 Hari Kerja per minggu (40 Jam/Minggu)

8 Jam pertama 2 Kali Upah/Jam 8 jam x 2 x 1/173 x upah sebulan

Jam ke-9 3 Kali Upah/jam 1 jam x 3 x 1/173 xupah sebulan

Jam ke-10 s/d Jam ke-11

4 Kali Upah/Jam 1 jam X 4 x 1/173 x upah sebulan

2.7.3. Tunjangan Hari Raya(THR)Ketentuan mengenai pembayaran THR pada karyawan telah diatur pada

NO.PER-04/MEN/1994 menteri tenaga kerja republic Indonesia tentang TUNJANGAN

HARI RAYA KEAGAMAAN BAGI PEKERJA DI PERUSAHAAN dimana pada

ketentuan tersebut berisi :

Page 86: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

91

Menimbang:

a.       Bahwa masyarakat Indonesia merupakan masyarakatpemeluk agama yang setiap

tahunnya merayakan, hariraya keagamaan sesuai dengan agamanya’masing-

masing;

b.       Bahwa basi pekerja untuk merayakan hari tersebut memerlukan biaya tambahan;

c.       Bahwa untuk merayakan hari Raya tersebut sudah sewajarnya pengusaha

memberikan Tunjangan Hari RayaKeagamaan ;

d.       Bahwa untuk menciptakan ketenangan usaha, meningkatkan kesejahteraan pekerja

dan keseragaman mengenaipemberian Tunjangan Hari Raya Keagamaan

perluditetapkan dengan Peraturan Menteri.

Mengingat:

1. Undang-Undang No.3 tahun 1951 tentang Pernyataan berlakunya Undang-

Undang Pengawasan Perburuhan tahun 1948 Nomor 23 dari Republik Indonesia

untuk seluruh Indonesia (Lembaran Negara tahun-1951 Nomor 4).

2. Undang-Undang Nomor 14 tahun 1969 tentang Ketentuan-ketentuan Pokok

mengenai Tenaga Kerja(Lembaran Negara tahun 1969 No.55,Tambahan

Lembaran Negara No.2912).

3. Keputusan PresideD RI No, 96/M tahun 1993 tentang Pembentukan Kabinet

pembangunan VI.

Memutuskan :

Menetapkan :

Page 87: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

92

PERATURAN MENTERI TENAGA KERJA TENTANG TUNJANGAN HARI RAYA

KEAGAMAAN BAGIPEKERJA DI PERUSAHAAN.

Pasal 1

Dalam Peraturun Menteri ini yang dimaksud dengan:

1. Perusahaan adalah setiap bentuk usaha yang menpekerjakan pekerja dengan tujuan

mencari keuntungan atau tidak baik milik swasta maupun milik Pemerintah

2. Pengusaha adalah :

a. Orang, Persekutuan atau Badan Hukum yang menjalankan suatu perusahaan

milik sendiri

b. Orang, persekutuan atau badan hukum yang secara berdiri sendiri menjalankan

perusahaan bukan miliknya;

c. Orang, persekutuan atau badan hukum yang berada di Indonesia mewakili

perusahaan sebagaimana dimaksud pada angka 1 dan angka 2, yang

berkedudukan di luar Indonesia.

3. Pekerja adalah tenaga kerja yang bekerja pada Pengusaha_dengan menerima upah.

4. Tunjangan Hari Raya Kee.gamaan yang selanjutnya disebut THR, adalahpendapatan

pekerja yang wajib dibayarkan oleh Pengusaha kepadapekerja atau keluarganya

menjelang Hari Raya Keagamaan yang berupauang atau bentuk lain.

5. Hari Raya Keagamaan adalah Hari Raya redul Fitri bagi pekerja yangberagama

Islam, Hari Raya Natal bagi pekerja yang beragama Kristen Katholik dan Protestan,

Hari Raya Nyepi bagi pekerja yang beragama Hindu dan Hari Raya Waisak bagi

pekerja yang beragama Budha.

Page 88: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

93

Pasal 2

1.      Pengusaha wajib memberikan T H R kepada pekerja yang telah mempunyai masa

kerja 3 bulan secara terus menerus atau lebih.

2.      T H R sebagaimana dimaksud dalam ayat 1 diberikan satu kali dalam satu tahun.

Pasal 3

1.      Besarnya THR sebagaimana dimaksud dalam pasal 2 ayat 1 ditetapkan  sebagai

berikut:

a.       pekerja yang telah mempunyai masa kerja 12 bulan secara terus menerus atau

lebih sebesar 1(satu) bulan upah.

b.      Pekerja yang mempunyai masa kerja 3 bulan secara terus menerustetapi kurang

dari 12 bulan diberikan secra proporsional dengan masa kerja yakni dengan

perhitungan masa kerja/12 x 1(satu) bulanupah .

2.      Upah satu bulan sebagaimana dimaksud dalam ayat (1) adalah upah            pokok

di tambah tunjangan-tunjangan tetap.

3.      Dalam hal penetapan besarnya nilai THR menurut Kesepakatan Kerja(KK), atau

Peraturan Perusahaan (PP) atau Kesepakatan Kerja Bersama(KKB) atau

kebiasaan yang telah dilakukan lebih besar dari nilaiTHR sebagaimana dimaksud

dalam ayat (1) maka THR yang dibayarkankepada pekerja sesuai dengan

Kesepakatan Kerja, Peraturan Perusahaan, Kesepakatan Kerja Bersama atau

kebiasaan yang telah dilakukan.

Pasal 4

Page 89: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

94

1        Pemberian THR sebagaimana dimaksud pasal 2 ayat (2)disesuaikan dengan Hari

Raya Keagamaan, masing-masing pekerja kecuali kesepakatan pengusaha dan

pekerja menentukan lain.

2        Pembayaran THR sebagairnana dimaksud dalam ayat (1) wajibdibayarkan oleh

pengusaha selambat-lambatnya 7 (tujuh) hari sebelum Hari, Raya Keagamaan.

Pasal 5

1.      Dengan persetujuan pekerja, THR sebagaimana dimaksud dalam pasal 3 sebagian

dapat diberikan dalam bentuk lain kecualiminuman keras, obat-obatan

atau .bahan obat-obatan, dengan ketentuHn ni_ainya tidak boleh melebihi 25%

(dua puluh lima persen) dari nilai THR yang seharusnya diterima.

2.      Bentuk lain sebagaimana dimaksud dalam ayat (1) diberikan bersamaan dengan

pembayaran THR.

Pasal 6

1.      Pekerja yang putus hubungan kerjanya terhitung sejak waktu 30(tiga puluh) hari

sebelum jatuh tempo Hari Raya Keagamaanberhak alas THR.

2.      Ketentuan sebagaimana dimaksud dalam ayat (1) tidak tidak berlaku bag pekerja

daIam hubungan kerja untuk waktu tertentu yang hubungan kerjanya berakhir

sebelum jatuh tempo Hari Raya Keagamaan.

3.      Dalam hal pekerja dipindahkan ke perusahaan lain dengan masakerja berlanjut,

maka pekerja berhak atas THR pada perusahaan yang baru, apabila dari

perusahaan yang lama, pekerja yangbersangkutan belum mendapatkan THR.

Pasal 7

Page 90: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

95

1.      Pengusaha yang karena kondisi perusahaannya tidak mampu membayar THR

dapat mengajukan permohonan penyimpangan mengenai besarnya jumlah THR

kepada Direktur Jenderal Pembinaan Hubungan Industrial dan Pengawasan

Ketenagakerjaan.

2.      Pengajuan permohonan sebagaimana dimaksud ayat (1) harusdiajukan paling

lambat 2 bulan sebelum Hari Raya Keagamaan yang terdekat.

3.      Direktur Jenderal Pembinaan Hubungan Industrial dan Pengawasan

Ketenagakerjaan menetapkan besarnya jumlah THR, setelah mempertimbangkan

hasil pemeriksaan keuangan perusahaan.

Pasal 8

1.      Bagi pengusaha yang melanggar ketentuan pasal 2 ayat (1)- dan pasal 4 ayat (2),

diancam dengan hukuman sesuai denganketentuan pasal 17 Undang-Undang

No.14 tahun 1969 tentang ketentuan-ketentuan Pokok Mengenai Tenaga Kerja.

2.      Tindak pidana sebagaimana dimaksud dalam ayat (1) adalah pe1anggaran.

Pasal 9

1        Pengawasan untuk ditaatinya peraturan ini dilakukan oleh Pegawai Pengawas

Ketenagakerjaan,

2        Selain Penyidik Pejabat Polisi Negara Republik Indonesia, jugakepada Pegawai

Pengawas Ketenagakerjaan yang diberi wewenang  khusus sebagai Penyidik

sebagaimana dimaksud dalam Undang-Undang Nomor 8 tahun 1981 tentang

Hukum acara Pidana (Lembaran Negara tahun 1981 Nomor 76, Tnmbahan

Page 91: library.binus.ac.id · Web viewContoh Penggunaan dari syntax distinct untuk menampilkan data “city” dari tabel persons yang terdapat pada gambar 2.12 adalah sebagai demikian Bedasarkan

96

lemmbaran Negara Nomor 3209) untuk melakukan penyidikan tindak pidana

pelanggaran dalam peraturan ini.

Pasal 10

Dengan ditetapkannya Peraturan Menteri ini, maka Keputusan Menteri Tenaga Kerja

No.16 tahun 1968 tentang Tunjangan Hari Raya bagi Buruh Perusahaan Swasta

dinyatakan tidak berlaku lagi.

Pasal 11

Peraturan Menteri ini mulai berlaku pada tanggal ditetapkan.

Ditetapkan di Jakarta: 16 September 1994