schema objects - dedyrw.staff.telkomuniversity.ac.id

37
Schema Objects MI2154 – SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA [email protected]

Upload: others

Post on 14-Apr-2022

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Schema Objects

MI2154 – SQL LANJUTDedy Rahman Wijaya, S.T., M.T., [email protected]

Page 2: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Sasaran

• Memahami tujuan penciptaan index• Mampu menciptakan index• Mampu membedakan private & public

synonyms• Mampu membuat private & public synonyms• Mampu menciptakan, mengelola &

menggunakan sequence

Page 3: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

INDEX

• Salah satu jenis objek pada schema yangberfungsi untuk mempercepat pencarian data

• Menghindari membaca isi dari seluruh tabel,tapi langsung pada inti pencariannya

• Digunakan dan dikelola secara otomatis

Page 4: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Jenis Index

• Bitmap Index• Function-based Index• B-Tree Index Index

Default

Page 5: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Penciptaan INDEX

• Otomatis (Unique Index)– Pada saat mendefinisikan constraint PRIMARY KEY– Pada saat membuat constraint UNIQUE

• Manual (Non-Unique Index)– Didefinisikan sendiri oleh pembuat, misalkan

membuat index pada kolom yg menjadi foreignkey untuk mempercepat operasi join

Page 6: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Cara Kerja Index

Page 7: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

B-Tree Index

• Index default• Gunakan jenis index ini untuk kolom yang

memiliki range sangat luas (kemungkinannilainya sangat banyak)– Ex: nim, nomor transaksi, nomor keanggotaan

• Jangan gunakan jenis index ini untuk kolomyang memiliki range sempit.– Ex: jenis kelamin (L,P), ukuran baju (S, M, L, XL,

XXL), dll

Page 8: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

B-Tree Index

• Untuk membuat index pada satu atau lebih kolom, sintakpenulisannya :CREATE [UNIQUE] INDEX index_name ONtable_name(column_name[, column_name ...])[TABLESPACE tab_space];

• Contoh:

Tips: Untuk alasan performansi , tablespace untuk menyimpan data pada tabel seharusnyaDibedakan dengan tablespace untuk menyimpan indeks

Page 9: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Function-based index• Index B-Tree tidak akan bekerja jika query pada

klausa WHERE yang kita jalankan mengandungfunction

SELECT first_name, last_nameFROM customersWHERE last_name = UPPER('BROWN');

• Supaya query di atas dapat berjalan lebih cepatmaka kita harus mendefinisikan function-basedindex

CREATE INDEX i_func_customers_last_name ONcustomers(UPPER(last_name));

Tips: supaya function-based index bekerja maka parameter QUERY_REWRITE_ENABLED harusDiset TRUEALTER SYSTEM SET QUERY_REWRITE_ENABLED=TRUE;

Page 10: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Bitmap Index• Biasa digunakan untuk sistem datawarehouse

– Jumlah data sangat besar– Data tidak/ jarang mengalami operasi DML– Sering dilakukan Operasi SELECT

• Gunakan jenis index ini untuk kolom yangmemiliki nilai dengan range kecil– Ex: jenis kelamin (L,P), ukuran baju

• Contoh:• CREATE BITMAP INDEX i_order_status ON

order_status(status);

Page 11: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Melihat INDEX

Gunakan Data Dictionary:• USER_INDEXES dan• USER_IND_COLUMNS.

– Contoh: SELECT * FROM USER_INDEXESAtau

SELECT * FROM USER_IND_COLUMNS

Page 12: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Kapan INDEX diperlukan ?• Index perlu dibuat pada saat :

– Kolom sering digunakan dalam klausa WHERE ataukondisi join

– Kolom berisi jangkauan nilai yang sangat luas– Kolom berisi banyak sekali nilai NULL– Dua atau lebih kolom sering digunakan bersama-sama

dalam klausa WHERE atau kondisi join– Table berukuran besar dan baris yang didapatkan pada

saat query paling banyak diperkirakan kurang dari 2-4%dari baris yang ada.

Page 13: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Do not overindex !!!

Page 14: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Kapan INDEX tidak diperlukan ?• Index tidak perlu dibuat jika :

– Tabel berukuran kecil– Kolom tidak terlalu sering digunakan sebagai kondisi

dalam query– Baris yang didapatkan pada saat query lebih dari 2-4%

dari baris yang ada.– Tabel sering di-update

Page 15: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Menghapus INDEX• Untuk menghapus index dari data dictionary digunakan

perintah DROP INDEX.

• Contoh:

Page 16: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

SEQUENCES

• Object yang dapat membuat deret bilanganinteger

• Objek yang dapat digunakan bersama(sharable)

• Biasanya digunakan untuk mengisi kolomprimary key secara otomatis (autoincrement)

• Dapat mengantikan kode pada aplikasi untukmembuat nilai-nilai secara unik

Page 17: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Membuat Sequence

• Klausa CYCLE | NOCYCLE dalam SEQUENCE, menspesifikasikan apakahsequence akan melanjutkan untuk men-generate value setelah mencapainilai maks or min value– (default adalah NOCYCLE)

• Klausa CACHE n | NOCACHE, menspesifikasikan berapa banyak nilai yangdialokasikan oleh Oracle Server dalam memori– (default 20 values)

Page 18: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Keberadaan SEQUENCE

• Untuk memeriksa keberadaan dari sequence,informasi bisa diambil dari data dictionary :– USER_SEQUENCES

Page 19: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Buatlah Sequence Sbb

Page 20: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

NEXTVAL, CURRVAL dan Penggunaan Sequence• Next sequence ditempatkan pada NEXTVAL, sedangkan

CURRVAL menyimpan current sequence• Contoh:

Page 21: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Mengubah dan Menghapus Sequence

• Mengubah Sequence:

• Menghapus Sequence:

Page 22: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

SYNONYM

• Pernahkah anda menemukan nama tabelsbb:– tabel_mahasiswa_terancam_drop_out– tabel_daftar_mahasiswa_belum_bayar_bpp– hr.employees– User_baru.tabel_barang

• Kita bisa memanfaatkan synonym untukmembuat alias nama atau menyingkat namatabel.

Page 23: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

SYNONYM

• Salah satu jenis objek dalam schema• Berfungsi untuk:

– menyamarkan nama objek dengan memberikannama alias

– Mempermudah penyebutan nama tabel milik userlain

– Mempermudah penyebutan nama objek ygpanjang atau susah dihafal

Page 24: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Pembuatan SYNONYM

• User scott memiliki hak akses ke tabel departments dischema HR. user scott membuat synonym “dep”sebagai nama lain dari hr.departments untukmenyingkat nama tabel.– CREATE SYNONYM dep FOR hr.deparments;

• Untuk menghapus synonym digunakan perintah DROPSYNONYM .– DROP SYNONYM dep;– Hanya DBA yang bisa menghapus public synonym

• Untuk melihat detail dari SYNONYM dapatmenggunakan view USER_SYNONYMS

Page 25: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

View

• Salah satu objek dalam schema• Merepresentasikan isi data dari suatu tabel• Dapat digunakan untuk membatasi data apa

saja yang dapat diakses oleh user.• Disimpan sebagai perintah SELECT dalam

schema

Page 26: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

VIEW

Page 27: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Keuntungan Menggunakan VIEW

Page 28: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

TIPE VIEW• Ada 2 (dua) tipe view, yaitu:

– Simple View dan– Complex View

• Berikut ini perbandingan antara Simple View dan ComplexView :

Page 29: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Membuat VIEW

Page 30: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Membuat VIEW dengan kolom alias

Page 31: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Pertanyaan

• Bagaimana cara melihat isi dari view?• Bagaimana cara merubah view?

Page 32: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Complex VIEW

Page 33: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Operasi DML pada VIEW• Operasi DML dapat dilakukan pada Simple View• Baris data pada View tidak dapat dihapus, jika berisi :

– Group Function (COUNT, SUM, AVG, dll)– Klausa GROUP BY– Keyword DISTINCT– Terdapat kolom ROWNUM

• Data pada View tidak bisa diupdate jika berisi :– Group Function (COUNT, SUM, AVG, dll)– Klausa GROUP BY– Keyword DISTINCT– Terdapat kolom ROWNUM– Kolom yang berisi ekspresi (ex: salary+salary*0.1)

• Pada View tidak bisa ditambahkan data, jika :– Group Function (COUNT, SUM, AVG, dll)– Klausa GROUP BY– Keyword DISTINCT– Terdapat kolom ROWNUM– Kolom yang berisi ekspresi (ex: salary+salary*0.1)– Terdapat kolom yang memiliki constraint NOT NULL yang tidak terdapat pada VIEW

Page 34: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

WITH CHECK OPTION

• Mencegah perubahan data yangmenyebabkan view tidak dapat mengambildata (karena tidak sesuai dengan kriteria padaklausa WHERE).

Page 35: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

WITH READ ONLY

• Mencegah semua operasi DML pada view

Page 36: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Menghapus VIEW

• Menghapus view tidak akan berpengaruhpada data di based table

Page 37: Schema Objects - dedyrw.staff.telkomuniversity.ac.id

Referensi• Greenberg, N . Oracle Database 10g: SQL

Fundamentals I• Greenberg, N. (Edition 1.1 August 2004). Oracle

Database 10g: SQL Fundamental II. JobiVarghese – BAB 10

• Gavin Powell, C.M,D.(2005). Oracle SQLJumpstart With Examples. USA: Elsevier Inc –BAB 21

• Jason Price. Oracle Database 11g SQL.McGrawHill (2008) – Chapter 10