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 dari VIEW tersebut.
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