Praktikum
5
VIEW DAN INDEX
Tujuan :Praktikan mampu memahami view dan index.
Alat dan Bahan :
1. Buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server
2000, khususnya mengenai view dan index.
2. Modul praktikum.
Landasan Teori : 1. View
a. View dari satu tabel
Sebuah VIEW adalah tabel yang dibangun dari satu atau beberapa tabel yang sudah ada. Secara fisik VIEW tidak membuat penyimpanan data seperti tabel, melainkan hanya menyimpan referansi/pointer ke record pada tabel-tabel yang berkaitan. VIEW disebut juga sebagai “Virtual Table”.
Secara umum aturan membuat VIEW adalah:
CREATE VIEW NamaView (Kolom1, Kolom2) AS
SELECT Kolom1, Kolom2 FROM NamaTabel WHERE predikat
Sebagai contoh adalah sebuah VIEW yang terbentuk dari satu tabel:
CREATE VIEW v1 AS
SELECT npm, Nama FROM mahasiswa_XXX
Karena VIEW dibentuk tanpa mencantumkan nama kolom baru, maka v1 mewarisi kolom yang yang dipilih pada tabel mahasiswa_XXX.
Menjalankan view diatas :
SELECT * FROM v1
b. View Dari Beberapa Tabel
VIEW dapat diciptakan dari beberapa tabel, misalnya sebuah join sederhana seperti berikut: VIEW V4 terdiri atas kolom yang dihasilkan melalui SELECT atas tabel mahasiswa_XXX dan asisten_XXX.
CREATE VIEW v4 AS SELECT A.npm, M.nama
FROM asisten_XXX A,mahasiswa_XXX M WHERE A.npm=M.npm
c. Menghapus View
VIEW dapat dihapus dengan menggunakan DROP VIEW seperti berikut:
DROP VIEW v1
d. Mengubah View
Untuk dapat langsung mengubah VIEW, gunakan ALTER sama dengan syntax alter pada tabel.
e. Updating dan insert data Melalui View
Updating dapat dilakukan ke dalam VIEW dengan memberikan nilai seperti pada inserting dan updating tabel. Namun harus memperhatikan “NOT NULL” option dan CONSTRAINT lainnya, sebelum memasukkan nilai ke dalam VIEW.
CREATE VIEW v6 (npm, nama, alamat, kota) AS
SELECT npm, nama, alamat, kota FROM mahasiswa_XXX WHERE kota=’JAKARTA’
INSERT INTO v6 VALUES (’03113331’, ‘Maya Kusuma’, ’Jl. Manunggal’,
‘Tuban’)
Perhatikan bahwa walaupun dalam WHERE dibatasi kota=’JAKARTA’, namun SQL tidak dapat menolak nilai kota yang bukan ‘JAKARTA’
Agar konsistensi dapat dijaga, maka pada saat VIEW dibuat, pada akhir instruksi harus ditambahkan “WITH CHECK OPTION”
Contoh :
ALTER VIEW v6(npm, nama, alamat, kota) AS
SELECT npm, nama, alamat, kota FROM mahasiswa_XXX WHERE kota=’JAKARTA’ WITH CHECK OPTION
INSERT INTO v6 VALUES (’02113316’, ‘Puspasari’, ’Jl. Kalimosodo
9’, ‘Malang’)
Akan muncul error : ERROR at line 2:
ORA-01402: view WITH CHECK OPTION where-clause violation
2. Batasan Manipulasi Melalui VIEW
Melalui VIEW dapat dilakukan INSERT, UPDATE, dan DELETE dengan beberapa limitasi yaitu:
a. Tidak dapat memasukkan record baru jika mengabaikan nilai NOT NULL pada basis tabel
b. Tidak dapat melakukan INSERT atau UPDATE jika salah satu kolom dalam VIEW merupakan
hasil kalkulasi atau hasil dari nilai balik fungsi.
c. Tidak dapat melakukan INSERT, UPDATE, atau DELETE jika dalam VIEW terdapat GROUP BY
atau DISTINCT.
3. INDEX
a. Penggunaan Index
Dalam konteks SQL-Server, index adalah sebuah obyek database yang dibuat berdasarkan kolom dalam tabel. Index mempercepat pencarian data. Dengan menggunakan index ,data tidak perlu dicari dari awal hingga akhir, melainkan menggunakan algoritma pencarian yang efisien, sehingga waktu proses menjadi semakin cepat. Tanpa index, proses pemanggilan table scan terjadi, yang berarti query processor harus melalui masing-masing record dalam tabel secara indvidual untuk menemukan record yang sesuai dengan kriteria yang dipilih. Proses ini sama dengan mengalokasikan informasi spesifik di dalam buku. Anda dapat menggunakan daftar isi atau index untuk menemukan topik tertentu secara mudah. Tanpa itu semua, Anda harus membuka dan mencari melalui semua halaman sampai Anda menemukan yang Anda cari. Index mempunyai Overhead selain tempat memory yang lebih besar, juga reorganisasi data karena operasi insert dan delete menjadi lebih kompleks.
Dengan demikian index tidak boleh digunakan secara sembarang, melainkan dengan perencanaan dan performance tuning yang baik.
b. Memilih kolom untuk index
Index dipilih berdasarkan selektifitas dari query yaitu seberapa sering data-data pada suatu record diakses melalui select, update atau delete.
Selektifitas dipengaruhi oleh kriteria pencarian, yaitu bagaimana memenuhi kriteria tersebut dengan mengakses atribut apa saja.
Hal-hal yang dapat dijadikan landasan untuk membuat index adalah :
• Kolom yang sangat sering dicari
• Primary key dan Foreign key
• Kolom yang diakses secara abjad
• Kolom yang diakses dan sering digunakan dengan join
• Kolom yang sering dicari berdasarkan urutan (range)
• Kolom yang sering menjadi predikat pada kunci kata “Where”
Hal-hal yang menyarankan untuk tidak menggunakan index adalah :
• Hasil query melebihi 20% jumlah record
• Kolom yang mempunyai nilai valid sedikit (misalnya jenis kelamin)
• Panjang kolom yang besar.
Untuk melihat index yang sudah ada gunakan stored procedure sp_helpindex namatabel dan
sp_spaceused untuk mengetahui pemakaian disk. c. Clustered Index
Dengan Clustered index secara fisik record disusun sesuai dengan susunan index. Dengan demikian hanya ada satu clustered index yang boleh didefinisikan dalam satu tabel. Primary key adalah kandidat baik untuk menjadi clustered index (index secara implicit diciptakan melalui constraint primary key). Dalam menciptakan index, maka secara default otomatis yang dipilih adalah non clustered index.
Cara membuat index adalah:
DROP INDEX CI_NoPeg
CREATE CLUSTERED INDEX CI_NoPeg ON Pegawai (NoPeg)
DROP dijalankan untuk memastikan bahwa index tersebut belum ada.
d. Non Clustered Index
Dalam non clustered index secara fisik susunan record tidak berpengaruh. Non clustered index menyimpan pointer yang menunjuk ke baris atau record dari tabel.
Dalam sebuah tabel dapat dibuat banyak non clustered index, sejauh index tersebut dibutuhkan. Dalan syntax create index pilih NONCLUSTERED adalah default.
Cara membuatnya adalah:
DROP INDEX NI_Nama
CREATE NONCLUSTERED INDEX NI_Nama ON Pegawai (Nama)
Atau:
CREATE INDEX NI_Nama ON Pegawai (Nama)
e. Unique Index
Secara otomatis unique index diciptakan melalui constraint primary key dan unique. Sistem akan memeriksa setiap saat record baru diciptakan atau di-update.
Membuat unique index secara manual adalah:
CREATE UNIQUE INDEX UI_KTP ON Pegawai (KTP)
Tugas Pendahuluan Praktikum
1. Apa yang dimaksud dengan view ? Sebutkan keuntungan dari view !
2. Apa yang dimaksud dengan index ? Sebutkan keuntungan dari index !
3. Bagaimana hubungan sifat index dengan primary key ?
4. Apa yang dimaksud dengan clustering ? Sebutkan keuntungan dari clustering!
5. Sebutkan batasan manipulasi melalui view !
Percobaan :
Sebelum memulai, aktifkan Tools Query Analyzer
Percobaan 1 : Buat sebuah VIEW yang terdiri dari nama asisten dan honor yang mempunyai
honor diatas rata-rata (join tabel mahasiswa_XXX dan asisten_XXX)
Percobaan 2 : Buat sebuah view yang akan menampilkan isi data npm, nama, alamat, dan
nomor telpon dari mahasiswa_XXX untuk mahasiswa yang mempunyai nama ‘Bambang’ dan nomor telfonnya mengandung ’081803’ saja.
Percobaan 3 : Isi data pada data mahasiswa_XXX melalui view yang dibuat dengan data :
NPM : 02311815
Nama : Erich Irmanto
Jenis Kelamin : Laki-Laki
Alamat : Jl. KS. Tubun Banjarmasin Kalsel
Telp : 08122553201
NPM : 03113406
Nama : Nyoman Sutrisna
Jenis Kelamin : Laki-Laki
Alamat : Poharin B20 Malang Jatim
Telp : 0354333456
NPM : 02311832
Nama : Dyah Ayu Puspita Sarie
Jenis Kelamin : Perempuan
Alamat : Jl. Danau Tondano Dalam 42 Malang Jatim
Telp : 0354232323
Percobaan 4 : Buat view dari tabel asisten_XXX dan lakukan update data honor dengan
memberikan THR pada setiap asisten dengan jumlah 23 % dari honor yang diterima.
Percobaan 5 : Buat view dari tabel asisten_XXX dan lakukan update data honor dengan
memberikan bonus bagi yang mengajar lebih dari 7 jam sebasar 5 % dari total honor yang diterima.
Percobaan 6 : Buat view dari tabel mahasiswa_XXX dan lakukan update data propinsi
menjadi Jabar bila npm memiliki angka ganjil di setiap akhir npm. Gunakan fungsi IN