• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI"

Copied!
54
0
0

Teks penuh

(1)

BAB II LANDASAN TEORI

2.1. Database

Menurut Connolly dan Begg (2010, p65), database adalah suatu kumpulan data yang berhubungan secara logika dan secara deskripsi dari data-data yang dirancang untuk memenuhi kebutuhan informasi dalam suatu organisasi. Database menawarkan keuntungan penyimpanan data dengan format yang independen dan fleksibel. Hal ini dikarenakan database didefinisikan secara terpisah dari program aplikasi yang menggunakan database dan lingkup database dapat dikembangkan tanpa berdampak pada program-program yang menggunakan database tersebut .

Penggunaan database yang mudah dipakai tidak lepas dari peranan komponen yang terkandung di dalamnya. Adapun komponen-komponen yang membentuk database adalah :

Field merupakan satuan unit terkecil dari data untuk disimpan pada sebuah database. adapun tipe-tipe field secara umum adalah :

o Primary Key (PK) merupakan sebuah field yang paling

umum digunakan untuk mengidentifikasi record tunggal pada table dimana Primary Key (PK) memiliki value yang berbeda antara satu record dengan record lainnya. Contohnya adalah NIM yang secara unik memiliki value yang berbeda antara satu record dengan record lainnya yang terdapat pada table Mahasiswa.

o Foreign Key (FK) merupakan sebuah primary key suatu

table yang digunakan dalam table lain untuk mengidentifikasi record hubungan. Contohnya adalah pada table Pembayaran, berisi foreign key NIM untuk mengidentifikasikan record yang terdapat pada table Mahasiswa yang dihubungkan dengan table Pembayaran.

(2)

o Descriptive field merupakan field-field non-key yang

menyimpan data-data pendukung dari sebuah table. Contohnya adalah pada table Mahasiswa, terdapat field Nama dan field Alamat.

Record merupakan kumpulan field yang dikelola dalam format yang ditentukan. Contohnya adalah record Mahasiswa dideskripsikan dengan kumpulan field yang berkaitan. Misalnya record Mahasiswa (NIM, Nama,Alamat). Field NIM digaris bawahi karena merupakan primary key.

Table merupakan kumpulan record-record yang sama. Contohnya adalah table Mahasiswa yang memiliki kumpulan record berisi data Mahasiswa.

Konsep logika database secara umum menggambarkan data yang tersimpan dalam sebuah table. Beberapa data yang tersimpan dalam sebuah table memiliki hubungan dengan data yang terdapat pada table lainnya.

Diagram yang dipakai untuk menggambarkan konsep logika database adalah Entity Relationship Diagram (ERD). Penggunaan Entity Relationship Diagram (ERD) dimungkinkan untuk memberikan kemudahan di dalam melakukan pemodelan data, seperti yang disampaikan oleh Connolly dan Begg (2010, p473), Entity Relationship Diagram (ERD) digunakan untuk menggambarkan hubungan antara satu entitas dengan entitas yang lain. Sedangkan menurut Whitten dan Bentley (2007, p271), Entity Relationship Diagram (ERD) adalah model data yang menggunakan beberapa notasi untuk menggambarkan data dalam konteks entitas dan hubungan yang dideskripsikan oleh data tersebut.

Dari pengertian diatas, dapat disimpulkan bahwa Entity Relationship Diagram (ERD) adalah model data yang menggunakan beberapa notasi untuk menggambarkan hubungan antara satu entitas dengan entitas yang lain.

(3)

Adapun komponen-komponen yang membentuk Entity Relationship Diagram (ERD) adalah :

Entitas merupakan kelompok orang, tempat, objek, kejadian, atau konsep tentang apa yang diperlukan untuk menangkap dan menyimpan data. Komponen dalam database yang mengacu kepada entitas adalah table.

Gambar 2. 1 Contoh Entitas Mahasiswa

Pada gambar 2.1, terdapat entitas Mahasiswa dimana pada entitas tersebutdapat mengandung banyak instance mahasiswa seperti : Thomas, Rudi, Kaka, Sonia, dll. Dalam pemodelan data, peranan entitas mahasiswa dipakai untuk mengelompokkan kategori instance mahasiswa sehingga tidak perlu mendeskripsikan tiap-tiap instance mahasiswa satu per satu.  Atribut merupakan sifat atau karakteristik deskriptif yang diidentifikasi

untuk disimpan ke dalam suatu entitas. Komponen dalam database yang mengacu kepada atribut adalah record.

(4)

Pada gambar 2.2, pada entitas Mahasiswa terdapat atribut NIM (Primary Key), atribut Nama, dan atribut Alamat. Penggunaan atribut NIM, atribut Nama, dan atribut Alamat dipakai untuk mengidentifikasikan bagian data spesifik yang disimpan dari setiap instance mahasiswa.

Hubungan merupakan hubungan bisnis alami yang ada di antara satu atau lebih entitas.

Gambar 2. 3 Contoh Hubungan Antara Entitas Mahasiswa Dengan Entitas Pembayaran Pada gambar 2.3, terdapat hubungan antara entitas Mahasiswa dengan entitas Pembayaran. Atribut yang menghubungi antara entitas Mahasiswa dengan entitas Pembayaran adalah NIM yang ditandai sebagai Foreign Key (FK) oleh entitas Pembayaran.

2.2. Database Management System (DBMS)

Menurut Connolly dan Begg (2010, p66), Database Management System (DBMS) adalah sebuah sistem perangkat lunak yang memungkinkan pengguna untuk mendefinisikan, membuat, memelihara dan mengatur kendali akses pada database. Sedangkan menurut Hoffer, Prescott, dan Topi (2009,p49), Database Management System (DBMS) adalah sebuah sistem perangkat lunak yang dipakai untuk membuat, merancang, dan menyediakan kendali akses untuk pengguna database.

(5)

Dari pengertian di atas, dapat disimpulkan bahwa Database Management System (DBMS) merupakan sistem perangkat lunak yang memiliki fungsi untuk mendefinisikan, membuat, merancang, dan menyediakan kendali akses untuk pengguna database. Inti dari Database Management System (DBMS) disebut database engine. Database engine berguna untuk me-respons perintah-perintah khusus untuk memanipulasi struktur database.

Adapun fasilitas-fasilitas umum yang dimiliki oleh sebuah Database Management System (DBMS) :

 Memungkinkan pengguna untuk melakukan proses Structured Query Language (SQL). Proses Structured Query Language (SQL) secara umum dipakai untuk mendefinisikan dan memanipulasi data untuk mendapatkan hasil output yang dikehendaki, seperti yang disampaikan Connolly dan Begg (2010, p184), Structured Query Language (SQL) adalah sebuah bahasa yang dirancang dalam penggunaan relasi untuk mengubah input menjadi output yang dikehendaki. Sedangkan menurut Ahmed et.al (2012, p85), Structured Query Language (SQL) adalah sebuah bahasa yang meliputi operasi pada table-table dan mengambil data-data spesifik dari media penyimpanan fisik. Dari pengertian di atas, dapat disimpulkan bahwa Structured Query Language (SQL) merupakan sebuah bahasa untuk mengoperasikan tabletable dalam penggunaan relasi untuk mengubah input dan output yang dikehendaki.Secara garis besar, perintah Structured Query Language (SQL) dapat dikelompokkan menjadi :

o Data Definition Language (DDL) adalah perintah untuk mendefinisikan struktur objek database seperti membuat table atau mengubah struktur table. Ada lima jenis perintah Data Definition Language (DDL) yaitu:

CREATE dipakai untuk membuat struktur objek database seperti table, view, index, sequence, dan synonym. Perintah CREATE pada umumnya digunakan untuk menentukan parameter - parameter yang terdapat dalam struktur objek database.

(6)

 CREATE Table

Sintaks penulisan CREATE Table : CREATE TABLE TABLE_NAME

(COLUMNNAME DATATYPE [DEFAULT EXPR][, ...]);

CREATE table merupakan perintah untuk membuat table baru. Dalam penulisan CREATE table, pengguna menentukan nama table, nama kolom, tipe data, dan size yang diinginkan. Contoh penulisan CREATE Table :

CREATE TABLE EMPLOYEES

(EMPLOYEE_ID NUMBER(2), LAST_NAME VARCHAR2(14));

 CREATE View

Sintaks penulisan CREATE View : CREATE [OR REPLACE] VIEW VIEW_NAME

AS SUBQUERY;

CREATE view merupakan perintah untuk membuat view baru. Dalam penulisan CREATE view, pengguna diwajibkan untukmengisi SUBQUERY. Klausa SUBQUERY dalam sintaks penulisan CREATE view merupakan perintah SELECT yang berfungsi sebagai acuan untuk view yang di-create. Klausa OR REPLACE digunakan untuk mengganti konten sebuah view yang memiliki nama view yang sama dengan konten yang baru. Penggunaan klausa OR REPLACE bersifat opsional.

Contoh penulisan CREATE View : CREATE VIEW EMPVIEW10

AS SELECT EMPLOYEE_ID, LAST_NAME, SALARY FROM EMPLOYEES

(7)

 CREATE Index

Sintaks penulisan CREATE Index : CREATE INDEX INDEX_NAME

ON TABLE_NAME (COLUMN_NAME [, COLUMN_NAME]...); CREATE index merupakan perintah untuk membuat index baru. Pengguna diwajibkan untuk mengisi nama kolom yang ingin diindex. Nama kolom yang di-index boleh lebih dari 1 asalkan berada pada table yang sama.

Contoh penulisan CREATE Index :

CREATE INDEX ID_EMP

ON EMPLOYEES (EMPLOYEE_ID);

 CREATE Sequence

Sintaks penulisan CREATE Sequence : CREATE SEQUENCE SEQUENCE_NAME

[INCREMENT BY N] [START WITH N]

[{MAXVALUE N | NOMAXVALUE}] [{MINVALUE N | NOMINVALUE}];

CREATE sequence merupakan perintah untuk meng-generateangka-angka yang unik. Sequence pada umumnya dipakai untukmembuat value sebuah primary key. Setiap huruf N merupakan nominal angka yang dikehendaki. CREATE sequence terdiri daribeberapa opsional:

o Klausa INCREMENT BY menunjuk kepada jumlahpenambahan angka yang dikehendaki ketika sebuah nilai digenerate.

o Klausa START WITH menunjuk kepada angka pertama yangdi-generate.

(8)

o Klausa MAXVALUE menunjuk kepada batasan angka tertinggipada sequence yang

di-create. Sebaliknya penggunaan

klausaNOMAXVALUE dipakai apabila pengguna tidak menghendakibatasan untuk MAXVALUE.

o Klausa MINVALUE menunjuk kepada batasan angka terendah pada sequence yang

di-create. Sementara penggunaan

NOMINVALUE dipakai apabila pengguna tidak menghendaki batasan untuk MINVALUE.

Contoh penulisan CREATE Sequence : CREATE SEQUENCE DEPTID

INCREMENT BY 10 START WITH 100 MAXVALUE 9999 MINVALUE 100 ;

 CREATE Synonym

Sintaks penulisan CREATE Synonym : CREATE SYNONYM SYNONYM_NAME

FOR OBJECT_NAME;

CREATE synonym dipakai untuk memberikan nama alias pada sebuah objek database. Penggunaan synonym pada umumnya dipakai untuk mempermudah pengguna dalam mengingat penamaan objek database tanpa menghilangkan nama aslinya.

Contoh penulisan CREATE Synonym : CREATE SYNONYM STAFF

(9)

 ALTER untuk mengubah struktur objek database seperti table dan sequence. Secara umum, perintah ALTER table dapat dibedakan menjadi tiga jenis, yaitu add (menambahkan struktur pada table), modify (memodifikasi struktur pada table), dan drop (menghapus struktur pada table).

 ALTER Table (add)

Sintaks penulisan ALTER Table (Add) : ALTER TABLE TABLE_NAME

ADD (COLUM_NAME DATATYPE [DEFAULT EXPR] [, COLUMN_NAME DATATYPE]...);

ALTER table (add) dipakai untuk menambahkan kolom baru pada sebuah table. Penambahan kolom baru akan diletakkan pada kolom terakhir pada sebuah table.

Contoh penulisan ALTER table (add) : ALTER TABLE PRODUK

ADD (DISKON NUMBER(4,2) DEFAULT 0, KETERANGAN VARCHAR2(20));

 ALTER Table (modify)

Sintaks penulisan ALTER Table (Modify) : ALTER TABLE TABLE_NAME

MODIFY (COLUM_NAME DATATYPE [DEFAULT EXPR]

[, COLUMN_NAME DATATYPE]...);

ALTER table (modify) digunakan untuk mengubah struktur table. Perubahan struktur table dapat dilakukan pada tipe data sebuah kolom, size, dan default value.

(10)

Contoh penulisan ALTER Table (Modify) : ALTER TABLE PRODUK

MODIFY (DISKON DEFAULT 10);

 ALTER Table (drop)

Sintaks penulisan ALTER Table (Drop) : ALTER TABLE TABLENAME

DROP COLUMN (COLUMNAME);

ALTER table (drop) digunakan untuk menghapus kolom pada sebuah table. Penghapusan kolom biasanya dilakukan apabila kolom tersebut sudah tidak diperlukan lagi.

Contoh penulisan ALTER Table (Drop) : ALTER TABLE PRODUK

DROP COLUMN KETERANGAN;

 ALTER Sequence

Sintaks penulisan ALTER Sequence : ALTER SEQUENCE SEQUENCE_NAME

[INCREMENT BY N] [START WITH N]

[{MAXVALUE N | NOMAXVALUE}] [{MINVALUE N | NOMINVALUE}] ;

ALTER sequence dipakai untuk memodifikasi struktur yang terdapat dalam sebuah sequence. Contoh Penulisan ALTER Sequence :

ALTER SEQUENCE DEPTID INCREMENT BY 20

START WITH 150 MAXVALUE 55000 MINVALUE 150 ;

(11)

 DROP merupakan perintah untuk menghapus objek database yang dikehendaki oleh pengguna seperti table, view, index, sequence, dan synonym.

 DROP Table

Sintaks penulisan DROP Table : DROP TABLE TABLE_NAME;

DROP table dipakai untuk menghapus table yang sudah tidak terpakai. Ketika melakukan DROP table, semua data dan struktur dalam table akan dihapus. Selain itu, semua index yang terlibat dalam table juga dihapus. Penggunaan rollback tidak dapat dilakukan setelah table di-drop.

Contoh penulisan DROP Table : DROP TABLE EMPLOYEES;

 DROP View

Sintaks penulisan DROP View : DROP VIEW VIEW_NAME;

DROP view dipakai untuk menghapus view yang sudah tidak terpakai. Penghapusan sebuah view tidak akan menghapus data yang terdapat di dalam view. Hal ini disebabkan karena view hanya merepresentasikan data yang terdapat dalam table. Contoh penulisan DROP View :

DROP VIEW EMPVIEW10 ;

 DROP Index

Sintaks penulisan DROP Index : DROP INDEX INDEX_NAME ;

DROP index dipakai untuk menghapus index yang sudah tidak terpakai.

Contoh penulisan DROP Index : DROP INDEX ID_EMP

(12)

 DROP Sequence

Sintaks penulisan DROP Sequence : DROP SEQUENCE SEQUENCE_NAME;

DROP sequence dipakai untuk menghapus sequence. Contoh penulisan DROP Sequence :

DROP SEQUENCE DEPTID;

 DROP Synonym

Sintaks penulisan DROP Synonym : DROP SYNONYM SYNONYM_NAME;

DROP synonym dipakai untuk menghapus synonym. Contoh penulisan DROP Synonym :

DROP SYNONYM STAFF;

 TRUNCATEtable merupakan perintah untuk menghapus data dan membebaskan space pada suatu table.

Sintaks penulisan TRUNCATE Table : TRUNCATE TABLE TABLE_NAME;

TRUNCATE table dipakai untuk menghapus semua baris darisebuah table. Perintah TRUNCATE table tidak dapat di-rollback.

Contoh penulisan TRUNCATE Table : TRUNCATE TABLE EMPLOYEES;

 RENAME table untuk mengganti nama table. Penggunaan perintah RENAME juga harus diikuti dengan penggunaan perintah ALTER.

(13)

Contoh penulisan TRUNCATE Table : ALTER TABLE TABLE_NAME

RENAME TO TABLE_NAME;

RENAME table dipakai apabila pengguna menghendaki perubahan nama table.

Contoh penulisan RENAME Table : ALTER TABLE DEPTS

RENAME TO DEPARTMENTS;

o Data Manipulation Language (DML) adalah perintah untuk melakukan manipulasi data seperti menambah (INSERT), menghapus (DELETE), dan mengubah data (UPDATE). Berikut jenis-jenis Data Manipulation Language (DML) adalah :

 INSERT untuk menambah baris ke table. Penggunaan perintah INSERT, secara umum harus menentukan nama table tempat data akan dimasukkan, daftar kolom yang diisikan data, dan daftar nilai yang akan dimasukkan ke dalam kolom.

Sintaks penulisan INSERT Table : INSERT INTO TABLE_NAME

[(COLUMN_NAME [, COLUMN_NAME...])] VALUES (VALUE [, VALUE...]);

Pada perintah INSERT, setiap kolom yang didefinisikan sebagai NOT NULL, harus selalu diberi value. Untuk pengisian data type CHAR, VARCHAR2, atau DATE, pengguna diwajibkan untuk menggunakan tanda kutip tunggal.

Contoh penulisan INSERT Table :

INSERT INTO EMPLOYEES (ID_EMP, LAST_NAME) VALUES (1200, ‘ALEX’);

(14)

 DELETE untuk menghapus baris dari table. Penggunaan perintah DELETE, secara umum harus menentukan nama table dan kondisi data yang akan dihapus.

Sintaks penulisan DELETE Table : DELETE [FROM] TABLE_NAME

[WHERE CONDITION];

Berbeda dengan penggunaan TRUNCATE table, DELETE table tidak ikut serta menghapus space yang telah digunakan oleh data sebelumnya. Selain itu, perintah DELETE table dapat di-rollback sehingga apabila terjadi kesalahan dalam penghapusan table, maka table dapat dikembalikan. Contoh penulisan DELETE Table :

DELETE EMPLOYEES WHERE ID_EMP = 1200;

 UPDATE untuk mengubah data di table. Penggunaan perintah UPDATE, secara umum harus menentukan nama table yang akan dimodifikasi, kolom yang akan dimodifikasi, dan nilai dimasukkan ke dalam kolom yang akan dimodifikasi.

Sintaks penulisan UPDATE Table : UPDATE TABLE_NAME

SET COLUMN_NAME = VALUE

[, COLUMN_NAME = VALUE, ...] [WHERE CONDITION];

(15)

Ketika melakukan perintah UPDATE table, pengisian value terhadap kolom yang ingin dimodifikasi harus memiliki data type yang sama dengan value sebelumnya. Jika tidak, maka tidak dapat di-update.

Contoh penulisan UPDATE Table : UPDATE EMPLOYEES

SET LAST_NAME = ‘BUDI’ WHERE ID_EMP = 1200;

 SELECT untuk menampilkan data dari table atau view. Perintah SELECT secara sederhana terdiri dari dua klausa yaitu SELECT dan FROM. Klausa SELECT dipakai untuk menentukan kolom-kolom yang akan ditampilkan, sedangkan klausa FROM menentukan nama table atau view. Sintaks penulisan SELECT :

SELECT *|{[DISTINCT] COLUMN_NAME|EXPRESSION [ALIAS],...}

FROM [SCHEMA_NAME.]TABLE_NAME | VIEW_NAME [WHERE CONDITION]

[GROUP BY GROUP_BY_EXPRESSION] [HAVING GROUP_CONDITION]

[ORDER BY COLUMN_NAME] ;

Penulisan perintah SELECT meliputi klausa mandatory dan optional. Klausa mandatory berupa SELECT dan FROM. Sedangkan klausa optional berupa WHERE, GROUP BY, HAVING, dan ORDER BY:

 Klausa SELECT digunakan untuk menentukan kolom-kolom yang ingin ditampilkan. Penggunaan * dipakai untuk memanggil seluruh data yang terdapat dalam table atau view.

(16)

 Klausa FROM digunakan untuk menentukan nama table atau view. Penggunaan schema_name berfungi untuk memanggil data dari schema yang berbeda.

 Klausa WHERE digunakan apabila pengguna ingin menampilkan data berdasarkan kriteria tertentu.

 Klausa GROUP BY digunakan untuk memuat kolom yang tidak diberikan group function.

 Klausa HAVING digunakan untuk memberikan kondisi tertentu kepada kolom yang diberi group function.

 Klausa ORDER BY digunakan untuk mengurutkan data berdasarkan kolom tertentu.

Contoh penulisan SELECT Table : SELECT JOB_ID, SUM(SALARY) PAYROLL FROM EMPLOYEES

WHERE EMPLOYEE_ID LIKE '%MARK%' GROUP BY JOB_ID

HAVING SUM(SALARY) > 50000 ORDER BY SUM(SALARY);

 MERGE untuk menggabungkan data dari dua table. Perintah MERGE secara umum merupakan kombinasi antara perintah UPDATE dan INSERT. Untuk menggabungkan data dari dua table maka harus terdapat kolom yang digunakan sebagai perantara antara kedua table untuk memastikan apakah terdapat data-data yang sama atau tidak. Apabila terdapat data-data yang sama, maka akan dimodifikasi (UPDATE), sebaliknya apabila terdapat data-data yang tidak sama maka data akan ditambahkan (INSERT) sebagai data yang baru.

(17)

Sintaks penulisan MERGE Table : MERGE INTO TABLE_NAME TABLE_ALIAS USING TABLE_NAME TABLE_ALIAS

ON (JOIN CONDITION) WHEN MATCHED THEN UPDATE SET

COL1 = COL_VAL1, COL2 = COL2_VAL

WHEN NOT MATCHED THEN INSERT (COLUMN_LIST) VALUES (COLUMN_VALUES);

Penggunaan perintah MERGE terdiri dari beberapa klausa :

 Klausa INTO digunakan untuk memilih table yang akan dimerge. Penggunaan table_alias lebih baik digunakan untuk mempersingkat penulisan table.

 Klausa USING digunakan untuk memilih table pembanding.

 Klausa ON digunakan untuk menampilkan kriteria untuk membandingkan table pertama dengan table kedua.

 Klausa WHEN MATCHED dipakai untuk memodifikasi data apabila terdapat kesamaan value antara kedua table. Data yang terdapat dalam table pertama akan dimodifikasi berdasarkan data pada table kedua.

 Klausa WHEN NOT MATCHED digunakan untuk menambahkan data apabila tidak terdapat kesamaan value antara kedua table. Data yang terdapat dalam table pertama akan ditambahkan berdasarkan data pada table kedua.

(18)

Contoh penulisan MERGE Table : MERGE INTO DEPTS D1

USING DEPARTMENTS D2 ON (D1.DEPT_ID = D2.DEPT_ID) WHEN MATCHED THEN

UPDATE SET

D1.DEPT_NAME = D2.DEPT_NAME WHEN NOT MATCHED THEN INSERT

VALUES (D2.DEPT_ID, D2.DEPT_NAME);

o Transaction Control Language (TCL) adalah perintah untuk menentukan suatu transaksi apakah suatu perubahan data akan disimpan secara permanen atau dibatalkan.

 COMMIT untuk menjadikan perubahan data disimpan secara permanen.

Sintaks penulisan COMMIT : COMMIT;

Penggunaan COMMIT menghasilkan kondisi data sebelum dicommit akan hilang secara permanen. Selain itu, semua perintah SAVEPOINT yang berkaitan akan dihapus. Penggunaan COMMIT juga menghasilkan status lock terhadap baris yang dipengaruhi akan dicabut.

Contoh penulisan COMMIT : DELETE FROM EMPLOYEES; COMMIT ;

(19)

 ROLLBACK untuk membatalkan suatu perubahan data. Sintaks penulisan ROLLBACK :

ROLLBACK [TO SAVEPOINT SAVEPOINT_NAME] ;

Penggunaan ROLLBACK menghasilkan perubahan data di-undone. Kondisi data sebelumnya akan dikembalikan. Selain itu, status lock terhadap baris yang dipengaruhi akan dicabut. Contoh penulisan ROLLBACK :

DELETE FROM EMPLOYEES; ROLLBACK;

 SAVEPOINT untuk menentukan tahapan-tahapan dalam melakukan perubahan data sehingga apabila ada kesalahan, data dapat dikembalikan ke tahapan tertentu. Perintah SAVEPOINT dapat digunakan untuk mengontrol apakah sebuah transaksi sudah sesuai dengan yang diharapkan sampai pada tahap tertentu.

Sintaks penulisan SAVEPOINT : SAVEPOINT SAVEPOINT_NAME ;

Penggunaan SAVEPOINT digunakan untuk mempermudah pengguna dalam melakukan rollback. Apabila terdapat kesalahan didalam memanipulasi data, maka pengguna hanya perlu melakukan rollback pada tahap tertentu saja tanpa perlu mengembalikan kondisi mula-mula data sebelum dimanipulasi.

Contoh penulisan SAVEPOINT : DELETE FROM DEPARTMENTS; SAVEPOINT TAHAP1;

UPDATE EMPLOYEES SET LAST_NAME = ‘BUDI’ WHERE ID_EMP = 1200;

(20)

o Data Control Language (DCL) adalah perintah yang digunakan untuk mengontrol izin akses pengguna pada database. Dua jenis privilege pengguna yang terdapat pada Data Control Language (DCL) adalah system privilege dan object privilege. System privilege memungkinkan diberikannya hak akses pengguna untuk mengakses sistem database. Sedangkan object privilege memungkinkan diberikannya hak akses pengguna untuk memanipulasi data yang terdapat pada objek database.

 GRANT untuk memberikan izin tertentu pada pengguna.

 GRANT System Privilege

Sintaks penulisan GRANT pada System Privilege : RANT PRIVILEGE_NAME [, PRIVILEGE_NAME...]

TO USER_NAME [, USER_NAME| ROLE_NAME,

PUBLIC...]

[WITH ADMIN OPTION];

Dalam penulisan GRANT system privilege, dapat ditambahkan klausa WITH ADMIN OPTION sehingga jenis privilege yang diberikan, dapat diberikan lagi kepada pengguna lain. Beberapa jenis umum privilege yang terdapat dalam system privilege:

- CREATE SESSION merupakan izin yang diberikan untuk melakukan login ke database. - CREATE TABLE merupakan izin yang

diberikan untuk membuat table.

- CREATE ANY TABLE merupakan izin yang diberikan untuk membuat table di schema user lain

- CREATE SEQUENCE merupakan izin yang diberikan untuk membuat sequence.

(21)

- CREATE VIEW merupakan izin yang diberikan untuk membuat view.

- CREATE INDEXTYPE merupakan izin yang diberikan untuk membuat index.

Contoh penulisan GRANT pada System Privilege :

GRANT CREATE SESSION, CREATE TABLE TO HR;

 GRANT Object Privilege

Sintaks penulisan GRANT pada Object Privilege : GRANT OBJECT_PRIVILEGE_NAME [(COLUMNS_NAME)]

ON OBJECT_NAME

TO{USER_NAME|ROLE_NAME|PUBLIC}

[WITH GRANT OPTION];

Dalam penulisan GRANT object privilege, dapat ditambahkan klausa WITH GRANT OPTION sehingga jenis privilege yang diberikan, dapat diberikan lagi kepada pengguna lain.

Beberapajenis privilege umum yang terdapat dalam object privilege :

- SELECT merupakan izin yang diberikan untuk melihat data.

- INSERT merupakan izin yang diberikan untuk melakukan insert data.

- UPDATE merupakan izin yang diberikan untuk melakukan update data.

- DELETE merupakan izin yang diberikan untuk menghapus data.

(22)

- ALTER merupakan izin yang diberikan untuk mengubah struktur table.

- INDEX merupakan izin yang diberikan untuk membuat index berdasarkan kolom pada table.

Contoh penulisan GRANT pada Object Privilege :

GRANT SELECT, DELETE ON EMPLOYEES

TO HR;

 REVOKE untuk menarik izin tertentu dari pengguna.

 REVOKE System Privilege

Sintaks penulisan REVOKE pada System Privilege : REVOKE PRIVILEGE_NAME [, PRIVILEGE_NAME...]

FROM USER_NAME [, USER_NAME| ROLE_NAME, PUBLIC...];

Penggunaan REVOKE system privilege pada umumnya digunakan apabila jenis privilege yang diberikan sudah tidak digunakan lagi.

Contoh penulisan REVOKE pada Sistem Privilege : REVOKE CREATE SESSION, CREATE TABLE

FROM HR;

 REVOKE Object Privilege

Sintaks penulisan REVOKE pada Object Privilege : REVOKE {PRIVILEGE [, PRIVILEGE...]|ALL}

ON OBJECT

(23)

Penggunaan REVOKE object privilege digunakan apabila jenis privilege yang diberikan sudah tidak digunakan lagi.

Contoh penulisan REVOKE pada Object Privilege: REVOKE DELETE

ON EMPLOYEES FROM HR;

 Memungkinkan kendali akses pada database. Penerapan kendali akses memungkinkan tingkat perlindungan data yang optimal karena membatasi ruang gerak bagi pengguna dan meminimalisir resiko kehilangan data. Komponen-komponen pada lingkungan Database Management System (DBMS) :

 Perangkat keras adalah perangkat yang dipakai untuk menjalankan Database Management System (DBMS). Perangkat keras merupakan semua bagian fisik dari komputer. Perangkat keras dapat berjarak dari single personal computer, single mainframe, dan pada sebuah jaringan dari beberapa komputer. Semakin baik kualitas yang diberikan oleh perangkat keras, maka semakin baik performa Database Management System (DBMS).

 Perangkat lunak adalah bagian dari sistem komputer yang tidak berwujud. Komponen dari perangkat lunak meliputi Database Management System (DBMS) itu sendiri dan program-program aplikasi lainnya yang mendukung suatu Database Management System (DBMS) dan juga termasuk jaringan perangkat lunak. Program aplikasi tambahan yang dipakai dalam lingkungan Database Management System (DBMS) mampu mendukung fungsionalitas Database Management System (DBMS) menjadi lebih beragam.

 Data adalah salah satu komponen utama dalam lingkungan Database Management System (DBMS). Data merupakan representasi penyimpanan dari objek dan kejadian yang memiliki pengertian dan kepentingan dalam lingkup pengguna. Data juga merupakan jembatan yang menghubungi Database Management System (DBMS) dengan manusia.

(24)

Procedure adalah komponen yang mengacu pada petunjuk dan aturan yang mengatur rancangan dan penggunaan database. Procedure merupakan sebuah manual book yang secara tepat digunakan sebagai pedoman dalam merancang dan menggunakan database. Penggunaan procedure yang tepat mampu meningkatkan aplikasi Database Management System (DBMS) menjadi lebih optimal.

 Manusia adalah komponen yang bertugas untuk menggerakkan sistem. Manusia merupakan salah satu komponen utama dalam lingkungan Database Management System (DBMS). Hal ini disebabkan karena tanpa perantara manusia, proses interaksi antara manusia dengan komputer tidak akan terwujud.

Beberapa keuntungan yang terdapat pada Database Management System (DBMS) :

 Memampukan untuk mengontrol redudansi data. Database Management System (DBMS) mengurangi redudansi data dengan mengintegrasikan file-file yang ada sehingga data-data yang sama tidak akan disimpan.

 Data yang konsisten. Resiko terhadap data yang tidak konsisten akan dikurangi dengan cara mengeliminasi data-data yang redundan. Dengan mengeliminasi data-data yang redundan, tingkat akurasi data menjadi lebih baik.

 Memampukan untuk memperoleh informasi tambahan dari jumlah data yang sama. Informasi tambahan dapat diperoleh dengan mengintegrasikan datadata operasional. Melalui proses terintegrasi, data-data akan terbentuk menjadi pola tertentu sehingga munculnya informasi tambahan.

 Memampukan untuk meningkatkan data integrity (constraint). Constraint secara umum digunakan membatasi aturan secara konsisten sehingga meningkatkan tingkat validitas dan konsistensi data yang tersimpan. Basis data tidak diperbolehkan untuk dirubah apabila melanggar aturan yang ditetapkan. Penggunaan Constraint memungkinkan tingkat validitas data menjadi lebih tinggi.

(25)

 Memampukan untuk meningkatkan keamanan data. Keamanan data adalah bentuk perlindungan database dari pengguna yang tidak memiliki hak akses. Tanpa tingkat keamanan yang tepat, integrasi membuat data menjadi lebih rapuh.

 Memampukan untuk mengurangi pengeluaran. Kombinasi dari seluruh datadata operasional yang disimpan ke dalam satu database dan penggunaan satu set aplikasi yang bekerja pada satu sumber data dapat mengurangi biaya operasional.

 Memampukan untuk menyeimbangkan perbedaan kebutuhan pengguna. Melalui Database Management System (DBMS), Database Administrator (DBA) dapat merancang kebutuhan operasional dari pengguna sehingga memberikan kemudahan bagi pengguna secara keseluruhan.

 Memampukan untuk meningkatkan concurrency. Database Management System (DBMS) mengatur akses database secara berkesinambungan dan memastikan permasalahan tidak terjadi.

 Memampukan untuk meningkatkan proses backup dan recovery. Database Management System (DBMS) menyediakan fasilitas untuk meminimalisir jumlah proses yang dapat menyebabkan kegagalan.

Beberapa kerugian yang terdapat pada Database Management System (DBMS) :

 Tingkat kompleksitas yang tinggi. Seluruh pengguna harus mengetahui secara tepat fungsi-fungsi yang terdapat dalam Database Management System (DBMS) sehingga dapat memperoleh manfaat secara maksimal.

 Kapasitas size yang diperlukan semakin besar. Tingkat kerumitan dan banyaknya fungsi yang ada menyebabkan Database Management System (DBMS) memerlukan banyak perangkat lunak pendukung yang mengakibatkan penambahan tempat penyimpanan dan memori untuk menjalankan Database Management System (DBMS) secara efisien.

(26)

 Biaya pada Database Management System (DBMS). Penggunaan Database Management System (DBMS) sesuai dengan kebutuhan menghasilkan pengeluaran biaya yang beragam. Semakin besar fungsionalitas yang digunakan pada Database Management System (DBMS), maka pengeluaran menjadi semakin besar.

 Biaya pada perangkat keras tambahan. Database Management System (DBMS) dapat bekerja dengan baik apabila kebutuhan pada media penyimpanan data sudah terpenuhi, oleh sebab itu diperlukan media penyimpanan data yang besar untuk dapat bekerja dengan baik.

 Biaya pada konversi. Biaya tambahan diperlukan untuk melatih pengguna untuk menggunakan sistem yang baru sehingga memungkinkan untuk mengkonversi dan menjalankan sistem yang baru.

 Penurunan performa pada aplikasi tertentu. Secara umum, Database Management System (DBMS) digunakan untuk menjalankan banyak aplikasi sehingga memungkinkan adanya penurunan performa pada aplikasi tertentu.

 Tingkat kerusakan yang lebih tinggi. Database Management System (DBMS) merupakan sistem yang terpusat. Apabila terdapat kerusakan pada bagian manapun dari Database Management System (DBMS), akan menyebabkan operasi terhenti.

2.3. Struktur Dasar Oracle Database

Menurut Rani, Singh, dan Sharma (2011, p532), databaseOracle merupakan sebuah kombinasi antara Oracle instance dan data files yang terdapat pada file system. Oracle instance merupakan keseluruhan proses-proses sistem pada database. Sedangkan data file adalah file fisikal yang dipakai untuk menyimpan data pengguna maupun data pada objek database. Database Oracle menawarkan fitur-fitur berbasis object-oriented antara lain :

User defined data type merupakan data type yang didefinisikan sendiri oleh pengguna.

Method adalah penggunan programming language yang terdapat padaPL/SQL.

(27)

Collection type adalah type-type seperti array type atau table type.

Large object seperti Character Large Object (CLOB), Binary Large Object(BLOB), dan Binary File (BFILE).

Database Oracle memiliki struktur-struktur dalam mengelola databasenya. Struktur dasar database Oracle secara umum dapat dibagi menjadi struktur logikal, struktur fisikal, dan struktur memori

Struktur logikal Oracle menggunakan sejumlah struktur-struktur logical sebagai building block yang secara umum terdiri dari empat macam, yaitu :data block, extent, segment, dan tablespace.

o Data block merupakan sebuah dasar dari seluruh

penyimpanan database dalam sebuah database Oracle. Data block pada Oracle disebut juga logical block atau page. Ukuran default pada data block sebesar8 kb.

o Extent merupakan unit pada alokasi space yang meliputi dua

atau lebih data block. Extent mengacu kepada data-data yang terdapatdalam objek database.

o Segment merupakan unit untuk mengalokasikan struktur

logical seperti sebuah table atau index (atau objek database lainnya) yang mencakup dua atau lebih extent

o Tablespace mencakup satu atau beberapa data file dan pada

umumnya mengandung segment-segment yang berhubungan.

Struktur fisikal Oracle terdiri dari tiga jenis :

o Data file merupakan file yang digunakan untuk menyimpan

data user,data table dan data index.

o Control file merupakan file yang merekam perubahan pada

semuastruktur database. Control file merupakan daftar isi dari physical file database.

(28)

o Redo log file merupakan file yang mengandung perubahan

yang dibuat pada data dalam table. Redo log file dipakai untuk menyimpan semua informasi yang berguna untuk me-recovery database apa bila terjadi crash.

 Struktur memori Oracle terbagi menjadi dua jenis:

o System Global Area (SGA) adalah bagian dari memory yang

merupakan daerah shared memory. Komponen-komponen utama System Global Area (SGA):

Database buffer cache digunakan untuk menyimpan salinan dari data files.

Shared pool menyimpan nilai-nilai dari perintah SQL yang dilakukan oleh pengguna yang mengandung library cache untuk menyimpan kode SQL dan PL/SQL yang pernah diakses dan mengandung data dictionary cache untuk menyimpan informasi data dictionary.

Redo log buffer mengandung informasi yang diperlukan untuk merekonstruksi perubahan yang dibuat pada database dari operasi Data Manipulation Language (DML).

Java pool digunakan untuk ketika semua session menggunakan java code dan data dalam Java Virtual Machine (JVM).

Large pool menyimpan alokasi memory yang besar untuk menyimpan data tertentu.

Streams pool digunakan untuk mendukung fitur Oracle stream seperti Large Object (LOB).

(29)

o Program Global Area (PGA) adalah bagian dari memori

yang memegang data dan informasi untuk pengguna individu. Program Global Area (PGA) dapat dibedakan menjadi dua tipe :

Private SQL area adalah area pada memori yang menyimpan informasi variabel SQL dan stuktur memori secara runtime.

Runtime area dibuat ketika pengguna melakukan perintah Data Manipulation Language (DML). Pada struktur memori Oracle terdapat dua proses utama yaitu server process dan backgorund process :

Server process adalah proses yang dipakai untuk melayani aktivitas pengguna kepada database secara individual. Masing-masing pengguna memiliki server process yang berbeda antara yang satu dengan yang lainnya.

Background process adalah proses yang memungkinkan sejumlah besar pengguna untuk menggunakan informasi yang disimpan dalam database secara bersama-sama. Beberapa proses umum yang terdapat dalam background process :

o System Monitor (SMON) dipakai untuk mengawasi

keseluruhan instance dan menjalankan recovery apabila kegagalan pada instance.

o Process Monitor (PMON) dipakai untuk memeriksa seluruh

proses yang dilakukan pengguna dan membersihkan proses yang telah selesai atau gagal.

o Database Writer (DBWn) dipakai untuk menulis perubahan

data dari database buffer cache ke data file.

o Checkpoint (CKPT) dipakai untuk memperbarui semua data

(30)

o Log Writer (LGWR) dipakai untuk menulis isi redo log

bufferke online redo log file.

o Archiver (ARCn) dipakai untuk menyimpan isi yang terdapat

pada online redo log file. 2.4. Metode Analisa PIECES

Analisis PIECES ini sangat penting untuk dilakukan sebelum mengembangkan sebuah sistem informasi karena dalam analisis ini biasanya akan ditemukan beberapa masalah utama maupun masalah yang bersifat gejala dari masalah utama. (Ragil, 2010)

Di bawah ini akan dijelaskan mengenai pengertian dari masing- masing komponen PIECES sebagai berikut :

a. Analisis Kinerja Sistem ( Performance )

Kinerja adalah suatu kemampuan sistem dalam menyelesaikan tugas dengan cepat sehingga sasaran dapat segera tercapai.

b. Analisis Informasi ( Information )

Informasi merupakan hal penting karena dengan informasi tersebut pihak manajemen (marketing) dan user dapat melakukan langkah selanjutnya. c. Analisis Ekonomi ( Economy )

Pemanfaatan biaya yang digunakan dari pemanfaatan informasi. Peningkatan terhadap kebutuhan ekonomis mempengaruhi pengendalian biaya dan peningkatan manfaat.

d. Analisis Pengendalian ( Control )

Analisis ini digunakan untuk membandingkan sistem yang dianalisa berdasarkan pada segi ketepatan waktu, kemudahan akses, dan ketelitian data yang diproses.

e. Analisis Efisiensi ( Efficiency )

Efisiensi berhubungan dengan bagaimana sumber tersebut dapat digunakan secara optimal. Operasi pada suatu perusahaan dikatakan efisien atau tidak biasanya didasarkan pada tugas dan tanggung jawab dalam melaksanakan kegiatan.

(31)

f. Analisis Pelayanan ( Service )

Peningkatan pelayanan memperlihatkan kategori yang beragam. Proyek yang dipilih merupakan peningkatan pelayanan yang lebih baik bagi manajemen (marketing), user dan bagian lain yang merupakan simbol kualitas dari suatu sistem informasi.

2.5. Schema Oracle

Menurut Alapati (2009, p20), schema adalah sekumpulan objek database yang berhubungan yang merupakan bagian dari struktur database logikal pada sebuah database Oracle. Struktur schema dideskripsikan dalam database management system (DBMS) dan secara umum disimpan di dalam data dictionary. Schema sering digunakan untuk merujuk pada suatu gambaran grafis dari struktur database. Dengan kata lain, schema merupakan struktur pada database yang mendefinisikan objek database. Komponen–komponen pada schema Oracle secara umum:

Table merupakan objek database yang digunakan untuk menyimpan data aplikasi. Sebuah table merupakan sekumpulan elemen-elemen data yang dikelompokkan dengan menggunakan model dua dimensi, yaitu baris dan kolom.

Index merupakan objek database yang berfungsi untuk mempercepat pencarian data. Index dapat dibuat menggunakan satu atau lebih kolom-kolom pada tabledatabase.

 View merupakan objek database yang berupa pendefinisian query yang mengakses ke satu atau beberapa table. View terdiri dari query yang disimpan dalam sebuah table virtual. Perubahan data pada table fisik yang menjadi acuan sebuah view akan secara otomatis mengubah data di dalam view.

Sequence adalah objek database yang dipakai untuk meng-generate nomor urut yang unik.

(32)

Function merupakan objek database yang berisikan perintah SQL atau PL/SQL yang dipakai bersama-sama untuk mengeksekusi fungsi tertentu dan selalu diperlukan pengembalian nilai.

Procedure adalah objek database yang berisikan perintah SQL atau PL/SQL yang dipakai bersama-sama untuk mengeksekusi fungsi tertentu dan tidak diperlukan pengembalian nilai.

Package adalah objek database yang secara umum terdiri dari beberapa function dan procedure yang berhubungan.

Trigger adalah objek database yang dipanggil ketika ada kejadian tertentu. Trigger merupakan kode prosedural yang secara dieksekusi secara otomatis ketika merespon kejadian pada table atau view tertentu dalam database. Trigger secara umum digunakan untuk memelihara integritas informasi pada database.

2.6. Unified Modeling Language

Menurut (Brigida Arie Minartiningtyas, 2013) Unified Modelling Language (UML) merupakan standar modeling language yang terdiri dari kumpulan-kumpulan diagram, dikembangkan untuk membantu para pengembang system dan software agar bisa menyelesaikan tugas-tugas seperti spesifikasi, visualisasi, desain arsitektur, kontruksi, simulasi dan testing serta dokumentasi (jomla).

UML merupakan sebuah model standar untuk membangun, mendokumentasikan, dan menspesifikasikan perangkat lunak. Tujuan dari Unified Modeling Language adalah untuk menyediakan istilah-istilah atau simbol secara teknik berbasis objek dan penggunaan teknik diagram yang cukup banyak untuk menggambarkan proyek pengembangan sistem mulai dari analisa sampai desain (Dennis, et al., 2012).

(33)

2.6.1. Usecase Diagram

Use Case Diagram merupakan model diagram UML ( Unified Modeling Language ) yang digunakan untuk menggambarkan kesepakatan fungsional yang diharapkan dari sebuah sistem. Use Case selalu dibuat pertama, tapi urutan diagram lainnya diciptakan tergantung pada proyek dan preferensi pribadi para analis (Dennis, et al., 2012).

Table 2. 1 Anotasi untuk Usecase

Simbol Keterangan

Simbol Actor adalah seseorang atau sesuatu yang berperan untuk berinteraksi dengan sistem tetapi tidak memiliki kontrol akan use case.

Simbol UseCase menggambar kan fungsionalitas dari sistem, sehingga pengguna paham mengenai manfaat dari sistem yang dibangun.

Simbol System boundary adalah simbol yang digunakan untuk menggambarkan batasan sistem.

Simbol Association relantionship adalah garis yang akan menunjukkan relasi antara aktor dan usecase

(34)

2.6.2. Activity Diagram

Activity Diagram adalah bagan Diagram yang merepresentasikan analis dengan tujuan untuk memodelkan alur proses dan hubungan antar proses dalam suatu sistem informasi dan juga berisikan tentang scenario yang ada dalam sistem tersebut (Pressman & Maxim, 2015).

Table 2. 2 Anotasi untuk Activity Diagram

Simbol Keterangan

Simbol action menggambarkan aktivitas yang dilakukan oleh aktor dari proses dalam aliran pekerjaan

Simbol transition menggambarkan arus proses yang terjadi dalam rangkaian aktivitas

Simbol initial dan final menggambarkan awal dan akhir dari sebuah aktivitas sistem

2.6.3. Class Diagram

Class Diagram adalah diagram yang menunjukkan class-class yang ada dari sebuah sistem dan saling berhubungan secara logika [Roger S. Pressman, 2015 : 192]. Diagram ini menggambarkan struktur statis dari sebuah sistem. Karena itu, class diagram merupakan tulang punggung atau kekuatan dasar dari hamper setiap metode berorientasi objek termasuk UML ( Unified Modeling Language ).

Table 2. 3 Anotasi untuk Class Diagram

Simbol Keterangan

Simbol Class menggambarkan objek Terdiri dari 3 bagian :

Bagian Class name adalah nama kelas, Bagian Atribut untuk menjelaskan atribut, Bagian Operation untuk menjelaskan method dalam class tersebut

Simbol association untuk menggambarkan bentuk relasi antar class

(35)

2.6.4. Sequence Diagram

Sequence Diagram adalah diagram yang menjelaskan interaksi antar objek yang disusun berdasarkan waktu proses berlangsung. Diagram ini digunakan untuk menggambarkan tahap demi tahap yang harus dilakukan oleh pengguna sistem untuk menghasilkan sesuatu dari use case diagram yang sudah dibuat (Pressman & Maxim, 2015).

Table 2. 4 Anotasi untuk Sequence Diagram

Simbol Keterangan

Simbol Actor adalah seseorang atau sesuatu yang berperan untuk berinteraksi dengan sistem.

Simbol Object menunjukkan sebuah objek dalam diagram

Simbol lifeline menggambarkan seberapa jauh pemanfaatan objek yang bersangkutan dalam diagram

Simbol focus control sebagai tempat untuk hasil input atau output dari sebuah proses yang dilakukan oleh objek ataupun aktor yang ada dalam sistem

Simbol message menggambarkan arus informasi dari satu objek ke objek lain

2.7. Proses Query Oracle

Proses query Oracle merupakan proses transformasi SQL statement ke dalam execution plan yang efisien untuk mengembalikan data yang dieksekusi dari database. Tahap-tahap proses eksekuser ketika SQL statement dipanggil :

Parsing adalah proses parsing mengecek sintaks dan semantik pada SQLstatement. SQL statement diurai ke dalam query relational algebra untuk melihat apakah penulisan sintaksnya tepat atau tidak. Proses parsing memiliki 2 jenis yaitu :

(36)

o Hard parsing adalah proses parsing yang operasinya

melibatkan disk. Hard parsing dilakukan apabila tidak ditemukan kecocokan struktur SQL di shared pool. Operasi hard parsing membutuhkan resource yang lebih besar karena semua operasi yang terlibat dalam proses parsing dijalankan.

o Soft parsing adalah proses parsing yang operasinya tidak

melibatkan disk. Soft parsing dilakukan apabila ditemukan kecocokan struktur SQL di shared pool sehingga SQL statement dijalankan kembali tanpa memerlukan resource sebesar hard parsing.

Optimization adalah proses untuk memilih access method untuk memanggil data berdasarkan query yang digunakan. Access method merupakan jalan yang dipilih optimizer dalam mengakses data untuk memilih query yang paling efisien, seperti yang disampaikan Mahjour dan Sohafi (2012, p284), optimization merupakan proses untuk memilih evaluasi query plan yang paling efisien dari beberapa strategi yang ada. Proses optimization memungkinkan optimizer untuk mengambil informasi mengenai type, length,dan statistik mengenai referensi hubungan dan access method yang tersedia. Setelah itu, optimizer mempertimbangkan setiap query block dan memilih plan untuk block tersebut. Proses optimization merupakan proses yang palingpenting karena dipakai untuk menjabarkan seberapa cepat data akan dipanggil. Dua jenis pendekatan optimization yaitu Rule Based Optimizer(RBO) dan Cost Based Optimizer (CBO). Rule Based Optimizer (RBO) merupakan pendekatan optimization yang selalu mengikuti aturan terdefinisi untuk memilih access method yang digunakan. Sedangkan Cost Based Optimizer (CBO) merupakan pendekatan optimization yang menggunakan statistik untuk memilih access method yang berfokus pada nilai cost terkecil. Pendekatan optimization yang digunakan pada penelitian ini menggunakan

(37)

Cost Based Optimizer (CBO). Cost Based Optimizer (CBO) menggunakanbeberapa parameter dasar :

o Current queue length adalah waktu tunggu yang diperlukan

untukmenunggu atau menjalankan eksekusi pada server. Semakin kecil waktu tunggu, maka semakin kecil cost yang digunakan.

o Server distance mengacu kepada jarak geografis pada server

dari klien yang bersangkutan. Semakin dekat dengan server, maka semakin kecil cost pada fetch data.

o Server capacity merupakan jumlah proses yang menjalankan

server tanpa mengganggu fungsionalitas pada server.

o Load merupakan rasio angka yang diminta server untuk total

kapasitas permintaan yang bisa ditangani oleh server. Parameter ini memungkinkan untuk menyeimbangkan konten pada masing-masingserver.

Execution adalah proses untuk mengeksekusi query yang dipanggil. Jika statement dalam bentuk select, maka data yang dipanggil akan dikembalikan kepada pengguna. Jika statement dalam bentuk insert, update, delete, makadata akan dimodifikasi.

Fetching adalah proses dimana Oracle harus mengembalikan data yang direquest oleh pengguna. Proses fetching hanya dipakai apabila pengguna melakukan perintah SELECT.

2.8. Index

Menurut Connolly dan Begg (2010, p242), index merupakan struktur yang menyediakan akses kepada baris-baris dari table berdasarkan nilai pada satu kolom atau lebih. Sebuah index menyimpan nilai dari kolom yang di-index dengan physical RowID pada record yang memiliki nilai dari index tersebut. Apabila terdapat kesamaan antara nilai pencarian dengan nilai pada index, RowID pada index akan menunjuk ke suatu lokasi baris di dalam table.

(38)

Adapun jenis-jenis umum index pada Oracle adalah sebagai berikut :  B-tree index adalah index dengan bentuk pada binary tree dan

merupakantipe default pada index. Key value pada b-tree index disimpan dalam balancetree (B-tree) yang menghasilkan pencarian data secara cepat.

Gambar 2. 4 Struktur Internal Pada B-tree Index (Sumber : Oracle Database Concepts 11g Release 2 (11.2))

Pada gambar 2.4, Branch blocks merupakan level blocks teratas pada b-treeindex yang dipakai untuk melakukan proses pencarian. Branch Blocks mengandung awalan key minimum yang diperlukan untuk membuat keputusan percabangan antara key-key. Selain itu, Branch blocks juga merupakan pointer yang memiliki key untuk menunjuk pada level index blokdi bawahnya. Sedangkan leaf blocks merupakan level block terbawah yang menyimpan setiap key value pada data yang di-index dan RowID yang dipakai untuk mengalokasikan kepada baris sesungguhnya.

Sintaks penulisan B-tree Index : CREATE INDEX INDEX_NAME

(39)

Ketika melakukan CREATE index, jumlah kolom yang di-index boleh lebihdari 1. Penggunaan Index yang memiliki lebih dari 1 kolom disebut dengan composite index.

Contoh penulisan B-tree Index : CREATE INDEX ID_PERSON ON PERSON (ID_PERSON);

Bitmap index adalah index yang menyimpan data dengan bit array (bitmap) untuk menandai kolom yang dibuatkan index. penggunaan bitmap indexcocok dipakai untuk kolom yang tingkat keragamannya rendah misalnyaseperti kolom jenis kelamin yang datanya berupa pria dan wanita. Penerapan pengkodean bitmap index secara umum menggunakan basic (equality) encoding dan range encoding. Penggunaan basic (equality) encoding efisien apabila dipakai untuk query yang hanya mengandung kondisi = pada klausa WHERE. Sedangkan penggunaan range encoding efisien apabila dipakaiuntuk query yang mengandung large-range query seperti >= atau <= padaklausa WHERE. Bitmap index menggunakan bin dimana dipakai untukmempartisi data.

Gambar 2. 5 Contoh Bitmap Index

(Sumber : Oracle Database Concepts 11g Release 2 (11.2)) Sintaks penulisan Bitmap Index :

CREATE BITMAP INDEX INDEX_NAME

ON TABLE_NAME (COLUMN_NAME[, COLUMN_NAME]...); Ketika menulis Bitmap Index, diwajibkan untuk menambahkan klausaBITMAP setelah klausa CREATE.

CREATE BITMAP INDEX JENIS_KELAMIN ON PERSON(JENIS_KELAMIN);

(40)

2.9. Database Performance Tuning

Menurut Chan dan Ashdown (2012, pp1-2), Performance tuning database adalah kegiatan mengindetifikasi masalah yang paling signifikan dan melakukan perubahan-perubahan yang tepat untuk mengurangi atau mengeliminasi pengaruh dari masalah yang bersangkutan. Sedangkan menurut Whalen (2004, p4), performance tuning database merupakan kegiatan memodifikasi dan mengatur kembali sebuah sistem untuk mencapai performa yang lebih baik.

Dari pengertian di atas, dapat disimpulkan bahwa performance tuning database adalah usaha mengidentifikasi masalah yang paling signifikan, memodifikasi dan mengatur kembali sebuah sistem untuk mencapai performa yang lebih baik.

Menurut Alapati (2009, p1042), terdapat beberapa jenis performance tuning database untuk meningkatkan kinerja pada sistem Oracle Database. Adapun jenis-jenis performance tuning database tersebut adalah:

SQL Tuning merupakan proses untuk memanipulasi kode SQL sehingga menghasilkan proses eksekusi query akan berjalan lebih cepat dan tidak memerlukan beban kerja yang besar.

Memory Tuning merupakan proses pengaturan ukuran memori secara tepatuntuk mengoptimalkan proses soft parsing sehingga resource yang diperlukan menjadi lebih kecil.

Disk I/O Tuning merupakan metode tuning dengan melakukan penempatan data file pada disk secara tepat sehingga memampukan untuk menyeimbangkan load. Hal ini digunakan untuk mempermudah akses data file tersebut sehingga tidak diperlukan resource yang besar.

Contention Tuning merupakan metode tuning dengan melakukan pengaturan latch dan wait event.Contention terjadi karena ada proses yang berjalan dengan proses lain pada resource yang sama secara berkesinambungan. Oleh sebab itu, dengan mengatur latch dan wait event, maka akan meningkatkan performa pada database.

(41)

Adapun manfaat melakukan tuning pada database adalah :

Memampukan penurunan ukuran dari konfigurasi perangkat keras yang diperlukan sehingga dapat menurunkan biaya pengadaan perangkat keras, dan oleh sebab itu dapat menurunkan biaya maintenance bagi perangkatkeras.

 Mampu meminimalisasi penambahan perangkat keras. Hal ini disebabkankarena melalui proses tuning, dapat mengurangi penggunaan sumber daya sehingga tidak perlu dilakukan penambahan perangkat keras.

 Memampukan waktu respon yang lebih cepat sehingga menghasilkan peningkatan produktifitas bagi pengguna maupun organisasi. Waktu respon yang lebih cepat menghasilkan proses bisnis menjadi lebih efektif sehingga terjadi peningkatan produktifitas.

Meningkatkan moral kerja pegawai perusahaan karena meningkatnya waktu respon. Waktu respon yang meningkat memungkinkan tercapainya tingkat kepuasan pengguna yang lebih baik.

Meningkatkan kepuasan pelanggan karena meningkatnya waktu respon. Kinerja yang cepat karena meningkatnya waktu respon secara tidak langsung juga mempengaruhi kepuasan pelanggan. Pada penelitian ini, pendekatan performance tuning yang dilakukan untuk meningkatkan kinerja database adalah menggunakan SQL Tuning. SQL Tuning merupakan tindakan optimalisasi query dengan memilih strategi eksekusi yang paling efisien dalam mengeksekusi sebuah query. Secara umum, pengukuran query yang efisien adalah melalui pengukuran cost dan pengukuran execution time (time)

Cost merupakan pendekatan pada query optimizer dimana nilai yang terdapat pada cost merupakan sebuah ukuran relatif yang dihasilkan oleh database Oracle untuk mewakili jumlah work yang diperlukan untuk menjalankan proses transaksi. Jumlah total cost dari semua langkah pada explain plan merepresentasikan besaran nilai cost

(42)

yang dibutuhkan untuk mengeksekusi sebuah query. Nilai pada cost terbagi menjadi dua jenis yaitu CPU cost danI/O cost. Nilai pada cost tidak ditentukan oleh operasi pengaksesan pada table.

o CPU cost merupakan nilai yang sebanding dengan jumlah

siklus mesin yang dibutuhkan untuk melakukan proses optimization.

o I/O cost merupakan nilai yang sebanding dengan jumlah

data block yang dibaca ketika melakukan proses optimization.

Execution time adalah lamanya waktu yang diperlukan untuk menampilkan hasil output dari proses seleksi data yang dikehendaki. Semakin cepat execution time yang dihasilkan, maka semakin efektif proses pemanggilan query yang dilakukan.

Penerapan SQL tuning merupakan parameter yang wajib digunakan di dalam pengelolaan query, seperti yang disampaikan Karthik, Reddy, dan Vanan (2012, p418), beberapa alasan pentingnya melakukan proses SQL tuning :

Memungkinkan untuk mengurangi response time ketika memproses SQL. Melalui access method yang tepat, maka tingkat kompleksitas jalannya proses optimization menjadi lebih rendah sehingga mampu mengurangi response time.

Menemukan access method yang lebih efisien. Proses Access method yangtepat memungkinkan penurunan sumber daya yang diperlukan ketika mengakses query sehingga menjadi lebih efisien.  Meningkatkan waktu pencarian menggunakan index. Penggunaan

index yang tepat memungkinkan penghapusan kondisi pengaksesan table secara menyeluruh (full table scan) sehingga mempercepat waktu pencarian.

 Memungkinkan proses join table lebih efisien. Penggunaan strategi join yangtepat memungkinkan penurunan sumber daya yang diperlukan sehingga menjadi lebih efisien.

(43)

Beberapa cara proses SQL tuning adalah dengan penulisan SQL yang efisien, penggunaan bind variable, penggunaan index yang tepat, penyesuaian commit rate dan penambahan hint optimizer yang sesuai.

 Berikut merupakan beberapa cara untuk melakukan proses penulisan SQL yang efisien:

1. Gunakan equijoin secara tepat. Apabila memungkinkan, gunakan fungsi equijoin sehingga menghasilkan query yang lebih efisien.

Sintaks umum penulisan equijoin :

SELECT A.COLUMN_NAME, B.COLUMN_NAME FROM TABLE_NAME A, TABLE_NAME B

WHERE A.COLUMN_NAME= B.COLUMN_NAME; Contoh penulisan equijoin :

SELECT M.EMPLOYEE_ID, M.EMPLOYEE_LAST_NAME, N.DEPARTMENT_NAME

FROM EMPLOYEES M, DEPARTMENTS N

WHERE M.EMPLOYEE_ID = N.EMPLOYEE_ID;

2. Batasi penggunaan SQL function, NOT EQUAL, dan IS NULL maupun IS NOT NULL di dalam klausa WHERE. Penggunaan SQL function, NOT EQUAL, dan IS NULL maupun IS NOT NULL didalam klausa WHERE akan menyebabkan Optimizer tidak dapatmemanggil Index yang dibuat.

(44)

Sintaks umum penulisan SQL function : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE SQL_FUNCTION_NAME = ‘VALUE’; Contoh penulisan SQL function :

SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES

WHERE SUBSTR (JOB_ID, 4) =’REP’;

Sintaks umum penulisan NOT EQUAL (<>) : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE COLUMN_NAME<>VALUE’;

Contoh penulisan NOT EQUAL (<>) : SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES

WHERE JOB_ID <>‘ST_CLERK’;

Sintaks umum penulisan NOT EQUAL (!=) : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE COLUMN_NAME != ‘VALUE’; Contoh penulisan NOT EQUAL (!=) : SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES

(45)

Sintaks umum penulisan IS NULL : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE COLUMN_NAME IS NULL; Contoh penulisan IS NULL : SELECT LAST_NAME, SALARY FROM EMPLOYEES

WHERE MANAGER_ID IS NULL;

Sintaks umum penulisan IS NOT NULL : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE COLUMN_NAME IS NOT NULL; Contoh penulisan IS NOT NULL : SELECT LAST_NAME, SALARY

FROM EMPLOYEES

WHERE MANAGER_ID IS NOT NULL; 3. Penggunaan subquery secara efisien

 Jika subquery mengandung predikat selective WHERE, maka akanlebih baik dengan menggunakan subquery IN.

Sintaks umum penulisan subquery IN : SELECT A.COLUMN_NAME

FROM TABLE_NAME A WHERE COLUMN_NAME IN

(SELECT COLUMN_NAMEFROM TABLE_NAME B) ; Contoh penulisan subquery IN :

SELECT E.EMPLOYEE_ID FROM EMPLOYEES E WHERE EMPLOYEE_ID IN

(46)

 Jika parent query mengandung sebagian besar filter yang selective,maka akan lebih baik dengan menggunakan subquery EXISTS. Halini memungkinkan predikat-predikat selective pada parent query dijalankan terlebih dahulu sebelum melakukan proses filtering terhadap baris-baris yang diseleksi.

Sintaks umum penulisan subquery EXISTS : SELECT A.COLUMN_NAME

FROM TABLE_NAME A

WHERE EXISTS (SELECT COLUMN_NAME FROM TABLE_NAME B

WHERE B.COLUMN_NAME= A.COLUMN_NAME) ; Contoh penulisan subquery EXISTS : SELECT E.EMPLOYEE_ID

FROM EMPLOYEES E

WHERE EXISTS (SELECT EMPLOYEE_ID FROM JOB_HISTORY J

WHERE J.EMPLOYEE_ID= E.EMPLOYEE_ID) ;

4. Penggunaan klausa WHERE lebih baik dibandingkan klausa HAVING. Klausa WHERE akan membatasi jumlah baris yang akandiakses sedangkan klausa HAVING memiliki kecenderungan untuk mengakses jumlah baris yang lebih banyak dari yang diperlukan danjuga menggunakan tambahan sorting.

(47)

Sintaks umum penulisan klausa WHERE : SELECT COLUMN_NAME

FROM TABLE_NAME

WHERE COLUMN_NAME = ‘VALUE’; Contoh penulisan klausa WHERE : SELECT BARANG_ID, MIN(HARGA) FROM BARANG

WHERE BARANG_ID IN(100,101) GROUP BY BARANG_ID;

Sintaks umum penulisan klausa HAVING : SELECT COLUMN_NAME,

GROUP_FUNCTION(COLUMN_NAME) FROM TABLE_NAME

GROUP BY COLUMN_NAME

HAVING COLUMN_NAME = (‘VALUE’); Contoh penulisan klausa HAVING : SELECT BARANG_ID, MIN(HARGA) FROM BARANG

GROUP BY BARANG_ID

(48)

5. Gunakan function CASE. Gunakan function CASE untuk menghindari proses pemeriksaan baris-baris yang sama secara berulang-ulang atau menghindari proses join pada table yang samasecara berulang-ulang.

Sintaks penulisan function CASE : SELECT COLUMN_NAME

CASE COLUMN_NAME

WHEN ‘VALUE’ THEN CONDITION WHEN ‘VALUE’ THEN CONDITION ELSE COLUMN_NAME

END AS “COLUMN_NAME” FROM TABLE_NAME;

Contoh penulisan function CASE :

SELECT NAMA_PEGAWAI, KODE_BAG, GAJI AS “GAJI”, CASE KODE_BAG WHEN 31 THEN GAJI*1.1

WHEN 41 THEN GAJI*1.5 ELSE GAJI

END AS “GAJI BARU” FROM PEGAWAI;

6. Penggunaan subquery NOT EXISTS atau NOT IN yang lebih baik dibandingkan operator MINUS. Operator MINUS memiliki kecenderungan untuk menggunakan proses sorting pada table yang diseleksi. Sedangkan Subquery NOT EXISTS atau NOT IN akan menghasilkan proses filtering sehingga tidak diperlukan lagi penggunaan sorting pada table yang diseleksi.

(49)

Sintaks penulisan subquery NOT EXISTS : SELECT A.COLUMN_NAME

FROM TABLE_NAME A

WHERE NOT EXISTS (SELECT COLUMN_NAME FROM TABLE_NAME B

WHERE B.COLUMN_NAME= A.COLUMN_NAME) ; Contoh penulisan subquery NOT EXISTS : SELECT E.EMPLOYEE_ID

FROM EMPLOYEES E

WHERE NOT EXISTS (SELECT EMPLOYEE_ID FROM JOB_HISTORY J

WHERE J.EMPLOYEE_ID = E.EMPLOYEE_ID) ;

Sintaks penulisan subquery NOT IN: SELECT A.COLUMN_NAME

FROM TABLE_NAME A

WHERE COLUMN_NAME NOT IN (SELECT COLUMN_NAME

FROM TABLE_NAME B) ;

Contoh penulisan subquery NOT IN : SELECT E.EMPLOYEE_ID

FROM EMPLOYEES E

WHERE EMPLOYEE_ID NOT IN (SELECT EMPLOYEE_ID

Gambar

Gambar 2. 1 Contoh Entitas Mahasiswa
Gambar 2. 3 Contoh Hubungan Antara Entitas Mahasiswa Dengan Entitas Pembayaran
Table 2. 1 Anotasi untuk Usecase
Table 2. 2 Anotasi untuk Activity Diagram
+3

Referensi

Dokumen terkait

Vi hade en förhoppning på att detta även skulle kunna leda till minskade behandlingar mot ledinflammationer i de olika besättningarna, men här har vi för lite försöksresultat och

- Telah memenuhi status sebagai pegolf profesional sesuai dengan peraturan yang berlaku. - Bersedia mematuhi Anggaran Dasar dan Anggaran Rumah Tangga dan

Memberikan kuasa dan wewenang kepada Direksi Perseroan [dengan hak substitusi] untuk melaksanakan keputusan persetujuan mengenai pemberian jaminan atau mengagunkan atau

Mackenzie yang berjudul American Government: Politics and Public Policy (1986, p. 99) disebutkan bahwa kelompok kepentingan menggunakan berbagai strategi dan teknik

Evaluasi Implementasi Peraturan Daerah Nomor 2 Tahun 2014 Tentang Pengelolaan Sampah Rumah Tangga dan Sejenis Sampah Rumah Tangga di Kabupaten Sumedang peneliti

Tujuan dari penelitian ini adalah untuk mengidentifikasi rasio-rasio keuangan yang memiliki dengan tujuan untuk mendapatkan bukti empiris bahwa capital adequacy ratio, bia-

Karena itu diusulkan sebuah sistem yang memfasilitasi penanganan dokumen SOP berbasiskan web yang berfungsi untuk mendistribusikan SOP secara efisien dan akurat dengan membatasi