0% menganggap dokumen ini bermanfaat (0 suara)
528 tayangan

Modul Client Server

Dokumen tersebut merupakan modul pembelajaran untuk mata kuliah Pemrograman Client Server yang berisi penjelasan tentang arsitektur aplikasi client server. Modul ini membahas konsep dan pengertian arsitektur aplikasi client server, fungsi dan komponennya, serta keunggulan dan kelemahannya dibandingkan arsitektur lainnya.

Diunggah oleh

Dina Rosdiana
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
528 tayangan

Modul Client Server

Dokumen tersebut merupakan modul pembelajaran untuk mata kuliah Pemrograman Client Server yang berisi penjelasan tentang arsitektur aplikasi client server. Modul ini membahas konsep dan pengertian arsitektur aplikasi client server, fungsi dan komponennya, serta keunggulan dan kelemahannya dibandingkan arsitektur lainnya.

Diunggah oleh

Dina Rosdiana
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 47

PEMROGRAMAN CLIENT SERVER

Emha Taufiq Luthfi, ST

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM YOGYAKARTA 2006


0

Kata pengantar

Puji syukur kami panjatkan ke hadirat Tuhan Yang Maha Esa, berkat rahmat dan hidayah-Nya kami dapat menyusun modul pegangan mahasiswa untuk mata kuliah Pemrograman Client Server yang disusun berdasarkan kurikulum berbasis kompetensi. Modul ini disusun dengan maksud untuk memberikan pedoman dan arahan dalam mempelajari mata kulian Pemrograman Client Server secara mudah, lengkap, benar dan terstruktur. Adapun penyajian modul ini penjabaranya mengacu pada belajar bermakna yaitu belajar yang mengutamakan pengertian atau pemahaman konsep. Secara keseluruhan modul ini terdiri dari 8 (delapan bab). Kritik dan saran yang membangun dari pemakai modul ini sangat kami harapkan untuk penyempurnaannya. Untuk itu diucapkan banyak terimakasih. Semoga modul ini dapat memberi manfaat.

DAFTAR ISI

HALAMAN JUDUL KATA PENGANTAR DAFTAR ISI GLOSARIUM PENDAHULUAN BAB I ARSITEKTUR APLIKASI CLIENT SERVER A. Teori Singkat ................................................................................................. B. Soal ................................................................................................................ BAB II BATASAN INTEGRITAS A. Teori Singkat .................................................................................................. B. Latihan ........................................................................................................... C. Tugas ............................................................................................................. VIEW A. Teori Singkat .................................................................................................. B. Latihan ........................................................................................................... C. Tugas ............................................................................................................. STORE PROCEDURE A. Teori Singkat .................................................................................................. B. Latihan ........................................................................................................... C. Tugas ............................................................................................................. FUNCTION A. Teori Singkat .................................................................................................. B. Latihan ........................................................................................................... C. Tugas ............................................................................................................. TRIGGER A. Teori Singkat .................................................................................................. B. Latihan ........................................................................................................... C. Tugas ............................................................................................................. CURSOR D. Teori Singkat .................................................................................................. E. Latihan ........................................................................................................... F. Tugas ............................................................................................................. ? ?

? ? ?

BAB IV

? ? ?

BAB IV

? ? ?

BAB V

? ? ?

BAB VI

? ? ?

BAB VII

? ? ?

GLOSARIUM

Database adalah koleksi terpadu dari data-data yang saling berkaitan DBMS adalah koleksi terpadu dari database dan program-program komputer (DBMS = database + program utilitas) DDL (data definition language)

PENDAHULUAN

Deskripsi Materi Arsitektur aplikasi client server, batasan integritas, view, store procedure, function, trigger, cursor, pengembangan aplikasi client. Prasyarat Mata kuliah Pemrograman Basis Data (PBD). Petunjuk pemakaian modul 1. Pahami mata deskripsi materi 2. Pahami kompetensi dasar dengan indikatornya 3. Bacalah bab demi bab dengan cermat dan teliti Standar kompetensi Memahami konsep dan pengertian arsitektur aplikasi client server serta mampu melakukan analisa dan perancangan aplikasi dengan arsitektur client server menggunakan salah satu DBMS dengan penajaman pada penguasaan bahasa Structured Query Language (SQL). Kompetensi dasar 1. Mampu menjelaskan konsep dan pengertian arsitektur aplikasi client server 2. Mampu menjelaskan konsep dan menguasai implementasi batasan integritas dalam database 3. Mampu menjelaskan konsep dan menguasai implementasi VIEW dalam database 4. Mampu menjelaskan konsep dan menguasai implementasi Store Procedure dalam database 5. Mampu menjelaskan konsep dan menguasai implementasi Function dalam database 6. Mampu menjelaskan konsep dan menguasai implementasi Trigger dalam database 7. Mampu menjelaskan konsep dan menguasai implementasi Cursor dalam database 8. Pengembangan aplikasi client

BAB I Arsitektur Aplikasi Client Server

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan pengertian arsitektur aplikasi client server : - Mampu menjelaskan konsep arsitektur aplikasi - Mampu menjelaskan macam arsitektur aplikasi - Mampu secara khusus menjelaskan konsep dan pengertian arsitektur aplikasi client server - Mampu menjelaskan fungsi dan komponen dari arsitektur aplikasi client server - Mampu menjelaskan keunggulan serta kelemahan arsitektur aplikasi client server dibandingkan arsitektur aplikasi yang lain

A. Teori Singkat Istilah arsitektur mengacu pada desain sebuah aplikasi, atau dimana komponen yang membentuk suatu sistem ditempatkan dan bagaimana mereka berkomunikasi. Arsitektur terdistribusi sebuah istilah yang relatif baru untuk menjelaskan arsitektur aplikasi berarti bahwa pemrosesan dari suatu aplikasi terjadi pada lebih dari satu mesin. Terdapat beberapa macam arsitektur aplikasi, yaitu : 1. Standalone (one-tier) Pada arsitektur ini semua pemrosesan dilakukan pada mainframe. Kode aplikasi, data dan semua komponen sistem ditempatkan dan dijalankan pada host. Seperti terlihat pada gambar 1.1.

Gambar 1.1 Walaupun komputer client dipakai untuk mengakses mainframe, tidak ada pemrosesan yang terjadi pada mesin ini, dan karena mereka dump-client atau dump-terminal. Tipe model ini, dimana semua pemrosesan terjadi secara terpusat, dikenal sebagai berbasis-host. Sekilas dapat dilihat kesalahan pada 5

model ini. Ada dua masalah pada komputasi berbasis host: Pertama, semua pemrosesan terjadi pada sebuah mesin tunggal, sehingga semakin banyak user yang mengakses host, semakin kewalahan jadinya. Jika sebuah perusahaan memiliki beberapa kantor pusat, user yang dapat mengakses mainframe adalah yang berlokasi pada tempat itu, membiarkan kantor lain tanpa akses ke aplikasi yang ada. Pada saat itu jaringan sudah ada namun masih dalam tahap bayi, dan umumnya digunakan untuk menghubungkan terminal dump dan mainframe. Internet baru saja dikembangkan oleh pemerintah US dan pada saat itu dikenal sebagai ARPANET. Namun keterbatasan yang dikenakan pada user mainframe dan jaringan telah mulai dihapus. 2. Client/Server (two-tier) Dalam model client/server, pemrosesan pada sebuah aplikasi terjadi pada client dan server. Client/server adalah tipikal sebuah aplikasi two-tier dengan banyak client dan sebuah server yang dihubungkan melalui sebuah jaringan, seperti terlihat dalam gambar 1.2. Aplikasi ditempatkan pada komputer client dan mesin database dijalankan pada server jarak-jauh. Aplikasi client mengeluarkan permintaan ke database yang mengirimkan kembali data ke client-nya.

Gambar 1.2 Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari aplikasi yang berinteraksi dengan user, termasuk logika bisnis dan komunikasi dengan server database. Tipe-tipe tugas yang terjadi pada client adalah : Antarmuka pengguna Interaksi database Pengambilan dan modifikasi data Sejumlah aturan bisnis Penanganan kesalahan

Server database berisi mesin database, termasuk tabel, prosedur tersimpan, dan trigger (yang juga berisi aturan bisnis). Dalam sistem client/server, sebagian besar logika bisnis biasanya diterapkan dalam database. Server database manangani : Manajemen data Keamanan Query, trigger, prosedur tersimpan Penangan kesalahan Arsitektur client/server merupakan sebuah langkah maju karena mengurangi beban pemrosesan dari komputer sentral ke komputer client. Ini berarti semakin banyak user bertambah pada aplikasi client/server, kinerja server file tidak akan menurun dengan cepat. Dengan client/server user dair berbagai lokasi dapat mengakses data yang sama dengan sedikit beban pada sebuah mesin tunggal. Namun masih terdapat kelemahan pada model ini. Selain menjalankan tugas-tugas tertentu, kinerja dan skalabilitas merupakan tujuan nyata dari sebagian besar aplikasi. Model client/server memiliki sejumlah keterbatasan : Kurangnya skalabilitas Koneksi database dijaga Tidak ada keterbaharuan kode Tidak ada tingkat menengah untuk menangani keamanan dan transaksi Aplikasi-aplikasi berbasis client/server memiliki kekurangan pada skalabilitas. Skalabilitas adalah seberapa besar aplikasi bisa menangani suatu kebutuhan yang meningkat - misalnya, 50 user tambahan yang mengakses aplikasi tersebut. Walaupun model client/server lebih terukur daripada model berbasis host, masih banyak pemrosesan yang terjadi pada server. Dalam model client/server semakin banyak client yang menggunakan suatu aplikasi, semakin banyak beban pada server. Koneksi database harus dijaga untuk masing-masing client. Koneksi menghabiskan sumber daya server yang berharga dan masing-masing client tambahan diterjemahkan ke dalam satu atau beberapa koneksi. Logika kode tidak bisa didaur ulang karena kode aplikasi ada dalam sebuah pelaksanaan executable monolitik pada client. Ini juga menjadikan modifikasi pada kode sumber sulit. Penyusunan ulang perubahan itu ke semua komputer client juga membuat sakit kepala. Keamanan dan transaksi juga harus dikodekan sebagai pengganti penanganan oleh COM+/MTS. Bukan berarti model client/server bukanlah merupakan model yang layak bagi aplikasi-aplikasi. Banyak aplikasi yang lebih kecil dengan jumlah user terbatas bekerja sempurna dengan model ini. Kemudahan pengembangan aplikasi client/server turut menjadikannya sebuah solusi menarik bagi perusahaan. Pengembangan umumnya jauh lebih cepat dengan tipe sistem ini. Siklus pengembangan yang lebih cepat ini tidak hanya menjadikan aplikasi meningkat dan berjalan dengan cepat namun juga lebih hemat biaya. 7

3. Three-Tier / Multi-Tier Model three-tier atau multi-tier dikembangkan untuk menjawab keterbatasan pada arsitektur client/server. Dalam model ini, pemrosesan disebarkan di dalam tiga lapisan (atau lebih jika diterapkan arsitektur multitier). Lapisan ketiga dalam arsitektur ini masing-masing menjumlahkan fungsionalitas khusus. Yaitu : Layanan presentasi (tingkat client) Layanan bisnis (tingkat menengah) Layanan data (tingkat sumber data) Layanan presentasi atau logika antarmuka pengguna ditempatkan pada mesin client. Logika bisnis dikeluarkan dari kode client dan ditempatkan dalam tingkat menengah. Lapisan layanan data berisi server database. Setiap tingkatan dalam model three-tier berada pada komputer tersendiri, seperti pada gambar 1.3

Gambar 1.3 Konsep model three-tier adalah model yang membagi fungsionalitas ke dalam lapisan-lapisan, aplikasiaplikasi mendapatkan skalabilitas, keterbaharuan, dan keamanan.

B. Tugas 1. Ada berapa macam arsitektur aplikasi ? Sebutkan ! 2. Jelaskan perbedaan masing-masing arsitektur, kelebihan serta kekurangannya !

Daftar pustaka Dianne Siebold, Visual Basic Developer Guide to SQL Server, Sybex, 2001

BAB II Batasan Integritas


Kompetensi Dasar Indikator : Mampu menjelaskan konsep dan menguasai implementasi batasan integritas dalam database : - Mampu menjelaskan konsep batasan integritas dalam database - Mampu menjelaskan macam batasan integritas dalam database beserta fungsinya - Mampu mengimplementasikan batasan integritas dalam perancangan database dengan penggunaan sintaks DDL SQL

A. Teori Singkat Batasan Integritas (Integrity Constraint) adalah kondisi yang ditetapkan pada skema database dan membatasi data yang dapat disimpan di dalam database tersebut. Terdapat lima tipe batasan integritas, yaitu : 1. Membutuhkan Data (Required Data) Kolom harus mengandung data yang benar, tidak diijinkan untuk mengandung nilai NULL. 2. Batasan Domain (Domain Contraints) Setiap kolom memiliki domain atau nilai yang diijinkan untuk kolom tersebut. Contoh ; domain untuk kolom JenisKelamin adalah L atau P. Batasan ini didefinisikan dengan klausa CHECK pada kolom. 3. Integritas Entiti (Entity Integrity) Primary Key pada tabel harus mengandung nilai unik dan tidak boleh bernilai null pada setiap baris data. Batasan ini mendefinisikan primary key dengan klausa PRIMARY KEY yang hanya dapat dilakukan sekali dalam setiap tabel dan sebagai tambahan dapat didefinisikan alternate key dengan klausa UNIQUE. 4. Integritas Referensi (Referential Integrity) Foreign Key adalah kolom yang menghubungkan setiap baris data pada tabel anak yang mengandung foreign key ke tabel induk yang memiliki nilai candidate key yang cocok. Batasan ini didefinisikan dengan klausa FOREIGN KEY 5. Batasan Umum (General Contraints) Batasan tambahan yang didefinisikan oleh pengguna database.

Keseluruhan batasan integritas diterapkan pada tabel database melalui perintah CREATE TABLE atau ALTER TABLE.

Sintaks dasar untuk membuat tabel :


CREATE TABLE NamaTabel {(NamaKolom TipeData [NOT NULL] [UNIQUE] [DEFAULT NilaiDefault] [CHECK (kondisi)] [,...]} [PRIMARY KEY (DaftarKolom),] {[UNIQUE (DaftarKolom) [,...]} {[FOREIGN KEY (DaftarKolomForeignKey) REFERENCES NamaTabelInduk [(DaftarKolomKandidatKey)] [MATCH {PARTIAL | FULL} [ON UPDATE Aksi] [ON DELETE Aksi]][,...]} {[CHECK (kondisiPencarian)][,...]})

Sintaks dasar untuk merubah tabel :


ALTER TABLE NamaTabel [ADD [COLUMN] NamaKolom TipeData [NOT NULL][UNIQUE] [DEFAULT NilaiDefault] [CHECK (kondisi)]] [DROP [COLUMN] NamaKolom [NO ACTION| CASCADE]] [ADD [CONSTRAINT [NamaConstraint]] DefinisiConstraint] [DROP CONSTRAINT NamaConstraint [NO ACTION | CASCADE]] [ALTER [COLUMN] SET DEFAULT NilaiDefault] [ALTER [COLUMN] DROP DEFAULT]

B. Latihan Buat database dengan nama AIRLINES yang akan memiliki tabel-tabel dengan struktur sbb :
PESAWAT Nama Kolom * Id_Pesawat Nama Jarak_Jelajah PILOT * Nama Kolom Id_Pilot Nama Gaji Tipe Data CHAR VARCHAR NUMERIC Tipe Data INT CHAR CHAR Lebar 2 40 Not null Keterangan lain Primary key, harus 2 digit (check) DEFAULT 0 Lebar 2 2 Not null Keterangan lain Primary key, Identity(1,1) FOREIGN KEY FOREIGN KEY Tipe Data CHAR VARCHAR INT Lebar 2 30 Not null Keterangan lain Primary key, harus 2 digit (check) DEFAULT 0

SERTIFIKASI Nama Kolom * Id_Sertifikasi ** Id_Pilot ** Id_Pesawat

10

Langkah-langkah (simpan semua script yang anda buat ) : 1. Buat Database AIRLINES
CREATE DATABASE AIRLINES

atau dengan cara :


CREATE DATABASE AIRLINES ON ( NAME = airlines_dat, FILENAME = 'd:\airlines.mdf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB) LOG ON ( NAME = airlines_log, FILENAME = 'd:\airlines.ldf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB)

2. Aktifkan database AIRLINES


USE AIRLINES

3. Buat Tabel PESAWAT


CREATE TABLE PESAWAT ( Id_Pesawat CHAR(2) NOT NULL PRIMARY KEY CHECK (len(Id_Pesawat)=2), Nama VARCHAR(30) NOT NULL, Jarak_Jelajah INT DEFAULT 0)

atau dengan cara :


CREATE TABLE PESAWAT ( Id_Pesawat CHAR(2) NOT NULL, nama VARCHAR(30) NOT NULL, Jarak_Jelajah INT DEFAULT 0, CONSTRAINT pk_id_pesawat PRIMARY KEY (id_pesawat), CONSTRAINT ck_id_pesawat CHECK (len(id_pesawat)=2))

4. Buat Tabel PILOT


CREATE TABLE PILOT ( Id_Pilot CHAR(2) NOT NULL, nama VARCHAR(40) NULL, Gaji NUMERIC NOT NULL DEFAULT 0, CONSTRAINT pk_id_pilot PRIMARY KEY (id_pilot), CONSTRAINT ck_id_pilot CHECK (len(id_pilot)=2))

5. Buat Tabel SERTIFIKASI


CREATE TABLE SERTIFIKASI (Id_Sertifikasi INT NOT NULL PRIMARY KEY IDENTITY(1,1), Id_Pesawat CHAR(2) FOREIGN KEY REFERENCES Pesawat (Id_Pesawat) ON DELETE NO ACTION ON UPDATE CASCADE, Id_Pilot CHAR(2) FOREIGN KEY REFERENCES Pilot (Id_Pilot) ON DELETE NO ACTION ON UPDATE CASCADE)

11

atau dengan cara :


CREATE TABLE SERTIFIKASI (Id_Sertifikasi INT NOT NULL PRIMARY KEY IDENTITY(1,1), Id_Pesawat CHAR(2) CONSTRAINT fk_sertifikasi_pesawat FOREIGN KEY REFERENCES pesawat (Id_Pesawat) ON DELETE NO ACTION ON UPDATE CASCADE, Id_Pilot CHAR(2) CONSTRAINT fk_sertifikasi_pilot FOREIGN KEY REFERENCES pilot (id_pilot)ON DELETE NO ACTION ON UPDATE CASCADE)

atau dengan cara :


CREATE TABLE SERTIFIKASI (Id_Sertifikasi INT NOT NULL IDENTITY(1,1), Id_Pesawat CHAR(2), Id_Pilot CHAR(2), CONSTRAINT pk_sertifikasi PRIMARY KEY(Id_Sertifikasi), CONSTRAINT fk_sertifikasi_pesawat FOREIGN KEY (Id_Pesawat) REFERENCES pesawat (Id_Pesawat) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT fk_sertifikasi_pilot FOREIGN KEY (Id_Pilot) REFERENCES pilot (Id_Pilot)ON DELETE NO ACTION ON UPDATE CASCADE)

Hasil :

6. Coba menambahkan data ke dalam tabel Pesawat dengan script berikut :


insert into pesawat values ('1','Boeing 747-400',8430) go insert into pesawat values ('2','British Aerospace Jetstream',1502) go insert into pesawat values ('3',' Boeing 777-300',6475) go

Apa yang terjadi ?

12

7.

Coba kermbali menambahkan data ke dalam tabel Pesawat dengan script berikut :
insert into pesawat values ('01','Boeing 747-400',8430) go insert into pesawat values ('02','British Aerospace Jetstream',1502) go insert into pesawat values ('03',' Boeing 777-300',6475) go

8. Coba menambahkan data ke dalam tabel Pilot dengan script berikut :


insert into pilot values ('01','Christopher Columbus',98000000) go insert into pilot values ('01','Duncan Mcleod',102000000) go

Apa yang terjadi ? 9. Ubah script baris ke-2 langkah 8 menjadi sbb :
insert into pilot values ('02','Duncan Mcleod',102000000) go

10. Coba menambahkan data ke dalam tabel sertifikasi dengan script berikut :
insert into sertifikasi(id_pesawat, id_pilot) values ('Boeing','Luthfi') go

Apa yang terjadi ? 11. Ubah script langkah 10 menjadi sbb :


insert into sertifikasi(id_pesawat, id_pilot) values ('01','Luthfi') go

Apa yang terjadi ? 12. Ubah script langkah 11 menjadi sbb :


insert into sertifikasi(id_pesawat, id_pilot) values ('01','02') go

13. Mencoba menambahkan kembali data ke tabel sertifikasi sbb :


insert into sertifikasi(id_pesawat, id_pilot) values ('01','01') go insert into sertifikasi(id_pesawat, id_pilot) values ('02','01') go insert into sertifikasi(id_pesawat, id_pilot) values ('01','02') go

14. Pelajari semuanya 13

C. Tugas 1. Buat database dengan nama Perusahaan yang akan memiliki tabel-tabel dengan struktur sbb :
PEGAWAI Nama Kolom * Id_Pegawai Nama Gaji DEPARTEMEN Nama Kolom * Id_Dept Nama Anggaran Id_Manajer DEPARTEMEN_PEGAWAI Nama Kolom * Id_Pegawai (**) * Id_Dept (**) Persentase_Jam_Kerja

Tipe Data CHAR VARCHAR NUMERIC Tipe Data CHAR VARCHAR NUMERIC CHAR Tipe Data CHAR CHAR INT

Lebar 4 40

Not null

Keterangan lain Primary key, harus 4 digit (check) DEFAULT 0

Lebar 2 40 4 Lebar 4 2

Not null

Keterangan lain Primary key, harus 2 digit (check) DEFAULT 0 FOREIGN KEY

Not null

Keterangan lain Primary Key, FOREIGN KEY Primary Key, FOREIGN KEY DEFAULT 100, CHECK MAX 100

2. Coba tambahkan data untuk table-tabel diatas !

Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005

14

BAB III View

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan menguasai implementasi View dalam database : - Mampu menjelaskan konsep View dalam database - Mampu menjelaskan fungsi View dalam database - Mampu mengimplementasikan View dalam database

A. Teori Singkat View adalah tabel virtual atau query yang tersimpan. Data yang terakses melalui view tidak disimpan dalam database sebagai obyek tersendiri akan tetapi berupa query select dari satu atau lebih tabel. View digunakan untuk melakukan fungsi-fungsi berikut : Membatasi pengguna kepada baris data tertentu dalam tabel Sebagai contoh : mengijinkan pekerja hanya melihat data catatan kerja harian miliknya dari tabel CatatanKerjaHarian Membatasi pengguna kepada kolom tertentu dalam tabel Sebagai contoh : mengijinkan pekerja yang tidak berada pada bagian kepegawaian untuk melihat kolom nama, departemen, telepon dari tabel pekerja tetapi tidak diijinkan melihat beberapa kolom lain yang berkaitan dengan gaji atau informasi pribadi. Menggabungkan kolom dari beberapa tabel sehingga terlihat seperti sebuah tabel Menjumlahkan informasi daripada memberikan detail Sebagai contoh : menyajikan jumlah dari kolom, nilai maksimum atau minimum dari sebuah kolom. Sintaks dasar untuk membuat view :
CREATE VIEW NamaView AS SubSelect

Sintaks dasar untuk merubah view :


ALTER VIEW NamaView AS SubSelect

B. Latihan Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database AIRLINES yang anda buat pada Bab II 2. Aktifkan database AIRLINES
USE AIRLINES

15

3. Kosongkan semua tabel yang ada dengan query DELETE


DELETE FROM Sertifikasi Go DELETE FROM Pilot Go DELETE FROM Pesawat Go

4. Gunakan query INSERT untuk mengisi kembali ketiga tabel tersebut dengan keseluruhan data sbb :
PESAWAT PILOT

SERTIFIKASI

5. Membuat View V_DATA_PILOT_PESAWAT


CREATE view v_data_pilot_pesawat AS select a.nama as pesawat, a.jarak_jelajah, c.nama as pilot from pesawat a left join sertifikasi b on (a.id_pesawat=b.id_pesawat) LEFT JOIN pilot c on (b.id_pilot=c.id_pilot)

6. Coba tampilkan isi V_DATA_PILOT_PESAWAT


SELECT * FROM v_data_pilot_pesawat ORDER BY pesawat ASC

16

7. Cari informasi jumlah pilot untuk masing-masing pesawat


SELECT pesawat, count(pilot) as Jumlah_Pilot FROM v_data_pilot_pesawat GROUP BY pesawat ORDER BY pesawat ASC

C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II 2. Jika belum ada data dalam tabel-tabel database Perusahaan silakan tambahkan terlebih dahulu (bebas). 3. Buatlah sebuah View yang menunjukan semua nama pegawai serta nama departemen dimana saja dia bertugas beserta persentase jam kerjanya. 4. Cari informasi pegawai serta jumlah di berapa departemen dia bertugas 17

Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005 SqlServer 2000 Documentation

18

BAB IV Store Procedure

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan menguasai implementasi Store Procedure dalam database : - Mampu menjelaskan konsep Store Procedure dalam database - Mampu menjelaskan fungsi Store Procedure dalam database - Mampu mengimplementasikan Store Procedure dalam database

A. Teori Singkat Store Procedure adalah kumpulan dari perintah Transact-SQL yang dikompile dalam satu unit untuk dijalankan bersama. Dalam SQL Server store procedure memiliki kemampuan antara lain : Menerima parameter input dan mengembalikan beberapa nilai parameter output dari procedure yang dipanggil. Mengandung statement pemrograman yang melakukan operasi terhadap database termasuk memanggil store procedure lain. Memberikan status yang mengindikasikan keberhasilan atau kegagalan eksekusi store procedure Keuntungan pemakaian store procedure adalah : Merupakan pemrograman modular Store procedure dibuat sekali dan dapat dipakai berulang untuk komputasi yang sama Memungkinkan eksekusi lebih cepat Ketika pertama kali dijalankan store procedure akan tersimpan dalam memori. Sehingga memungkinkan eksekusi berikutnya lebih cepat. Mengurangi trafik jaringan Barisan kode transact SQL yang seharusnya dilewatkan jaringan, akan digantikan dengan statement tunggal pemanggilan store procedure Dapat digunakan sebagai mekanisme sekuriti Pengguna dimungkinkan mengeksekusi Store procedure, walau mungkin tidak dapat mengeksekusi procedure didalamnya secara langsung. Sebelum mempelajari cara pembuatan store procedure, perlu juga dipelajari statement Transact SQL untuk pemrograman server. Beberapa statement Transact SQL : TIPE DATA PADA PEMROGRAMAN SERVER Data yang dapat dimasukkan ke dalam database kita tentunya bermacam-macam. Secara khusus MSSQL Server 2000 mendukung berbagai macam tipe data. 19

Numeric 1. bigint Nilai integer dengan (9223372036854775807). 2. int nilai dari -2^63 (-9223372036854775808) sampai 2^63-1

Nilai integer dengan nilai dari -2^31 (-2,147,483,648) sampai 2^31 - 1 (2,147,483,647). 3. smallint Nilai integer dengan nilai dari 2^15 (-32,768) sampai 2^15 - 1 (32,767). 4. tinyint Nilai integer dengan nilai dari 0 sampai 255. 5. bit Nilai integer dengan nilai 1 atau 0. 6. Decimal dan Numeric Angka dengan akurasi tetap dari -10^38 +1 sampai 10^38 1. Money 1. money Data dengan nilai mata uang (+922,337,203,685,477.5807) 2. SmallMoney -2^63 (-922,337,203,685,477.5808) hingga 2^63 - 1

Data dengan nilai mata uang -214,748.3648 through +214,748.3647 Numeric Precession 1. float Bilangan presesi dari -1.79E + 308 sampai 1.79E + 308. 2. real Bilangan presesi dari -3.40E + 38 sampai 3.40E + 38. Date Time 1. datetime Tanggal dan waktu dari January 1, 1753, samapi December 31, 9999, dengan akurasi sampai 3.33 millidetik. 2. smalldatetime Tanggal dan waktu dari January 1, 1900, samapi June 6, 2079, denagn akurasi satu menit. Strings 1. char Field berisi karakter dengan ukuran panjang tetap dengan panjang maksimum 8,000 karakter. 2. varchar Field berisi karakter dengan panjang ukuran tidak tetap dengan panjang maksimum 8,000 characters. 3. text variabel berisi karakter denagn ukuran panjang sampai 2^31 - 1 (2,147,483,647) karakter.

20

Unicode Character Strings 1. nchar Karakter unicode dengan ukuran panjang tetap 4,000 karakter. 2. nvarchar Karakter dengan panjang tidak tetap hingga 4,000 karakter.. 3. ntext Karakter dengan panjang tidak tetap hingga of 2^30 - 1 (1,073,741,823) Karakter. Binary Strings 1. binary Ukuran tetap data binary hingga 8,000 bytes. 2. varbinary Ukuran panjang tidak tetap data binary hingga 8,000 bytes. 3. image Ukuran tidak tetap data binary hingga 2^31 - 1 (2,147,483,647) bytes. Tipe Data Lain 1. cursor Referensi ke cursor. 2. timestamp Angka ekslusif yang dikenali oleh database 3. uniqueidentifier Pengenal global yang eksklusif.

OPERATOR Urutan operator yang didukung secara khusus oleh SQL Server berdasar urutan evaluasi: o + (positif), - (negatif), ~ (birwise NOT) o * (perkalian), / (pembagian), % (modulus) o + (penjumlahan), + (pengabungan), - (pengurangan) o =, >, <, >=, <=, <>, !=, !>, !< (perbandingan) o ^ (bitwise exclusive OR), & (bitwise AND), | (bitwise OR) o NOT o AND o ALL, ANY, BETWEEN, IN, LIKE, OR, SOME o = (penugasan)

21

VARIABEL Semua bahasa pemrograman mengenal bahasa pemroraman, termasuk pemrograman database di server. Variabel di deklarasikan pada badan Bacth atau Procedure dengan pernyataan DECLARE dan diberi nilai dengan pernyataan SET atau SELECT. Variabel cursor bisa dideklarasikan dengan pernyataan ini. Setelah deklarasi semua variabel diinisialisasi dengan nilai NULL. Variabel Biasa Sintaks :
DECLARE @variabel_lokal tipe_data

Description @variabel lokal Nama variabel. Setiap nama variabel lokal selalu diawali dengan tanda @, dan harus unik pada suatu blok. Tipe data Semua tipe data yang disediakan oleh sistem. Contoh: DECLARE @pesawat CHAR(40) Mendefinisikan sebuah variabel bernama pesawat dengan tipe CHAR panjang 40.

Variabel Cursor Untuk medefinisikan atribut dari CURSOR server di Transact-SQL. Misalnya perilaku scrolling dan query yang digunakan utnuk membuat hasil dimana cursor beroperasi Sintaks :
DECLARE nama_cursor CURSOR FOR statement_select

Description Nama_Cursor Nama variabel yang bertipe cursor Statement_Select Pernyataan SELECT standar yang mendefinisikan hasil dari cursor. Kata kunci COMPUTE, COMPUTE BY, FOR BROWSE dan INTO tidak boleh dalam select_statement dari deklarasi cursor. Contoh: DECLARE Cur_Pilot CURSOR Memesan variabel bertipe Cursor bernama Cur_Pilot 22

BLOK STATEMENT (BEGIN ... END) Berfungsi untuk mendefinisikan blok statement Sintaks :
BEGIN { Statement SQL } END

PERULANGAN (WHILE) Perulangan digunakan untuk mengeksekusi suatu perintah Transact-SQL atau blok perintah TransactSQL secara berulang-ulang selama kondisinya adalah terpenuhi. Eksekusi dari perintah WHILE dapat di kendalikan dengan BREAK dan CONTINUE. Sintaks :
WHILE ekspresi_boolean { Statement_SQL | Blok_Statement } [ BREAK ] { Statement_SQL | Blok_Statement } [ CONTINUE ]

Deskripsi Ekspresi_Boolean Kondisi yang mengembalikan nilai TRUE atau FALSE. { Statement_SQL | Blok_Statement } Adalah perintah Transact-SQL atau grup statement dalam satu blok. BREAK Perintah untuk mengakhiri perintah perulangan. CONTINUE Untuk mengulang perulangan. Contoh: while (select avg(gaji) from pilot) < 15000000 begin update pilot set gaji = gaji * 2 select max(gaji) from pilot if (select max(gaji) from gaji) > 20000000 break else continue end print Gaji sudah tinggi 23

GOTO label Melanjutkan proses ke statement pada label KONDISI BERSYARAT (IF ... ELSE) Mendefinisikan suatu kondisi bersyarat Sintaks :
IF ekspresi_boolean { statement SQL | blok statement } [ ELSE { statement SQL | blok statement } ]

Deskripsi Ekspresi_Boolean Ekspresi yang menghasilkan TRUE atau FALSE. Statement SQL Pernyataan-pernyataan SQL yang sakan dilaksanakan. Contoh: IF (SELECT COUNT(*) FROM Sertifikasi) < 20 BEGIN PRINT 'Jumlah Pilot kurang memadai' END ELSE BEGIN PRINT Jumlah Pilot sudah cukup' END

Sintaks dasar untuk membuat store procedure :


CREATE PROC [ EDURE ] Nama_Procedure [ { @parameter tipe_data } ] AS sql_statement [ ...n ]

Deskripsi : Nama_Procedure Adalah nama store procedure. Nama harus mengikuti aturan dimana harus unik dalam sebuah database.

24

@parameter Adalah parameter procedure. Kita bisa mendefinisikan lebih dari satu parameter dalam satu parameter pada waktu membuat Store Procedure. Satu Store Procedure maksimum memiliki 2,100 parameters. Tipe_data Adalah tipe data dari parameter yang bersangkutan. Semua tipe data dapat masuk seperti Text, Numeric, Int, Smallint dan lainnya. Tipe data Cursor hanya dapat digunakan sebagai Output. AS Tempat meletakkan aksi-aksi procedure. sql_statement Kumpulan perintah SQL yang akan dimasukkan dalam procedure tersebut n Adalah indikasi berapa banyak Statement SQL yang dimasukkan

Catatan: Ukuran satu store procedure maksimal 128 MB.

B. Latihan Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database AIRLINES yang anda buat pada Bab II 2. Aktifkan database AIRLINES
USE AIRLINES

3. Membuat Store Procedure untuk menampilkan seluruh data pesawat


CREATE PROC Sp_TampilkanDataPesawat AS SELECT * FROM pesawat

4. Jalankan store procedure Sp_TampilkanDataPesawat


Exec Sp_TampilkanDataPesawat

5. Membuat Store Procedure untuk menampilkan data pesawat tertentu


CREATE PROC Sp_TampilkanDataPesawatId (@Id_Pesawat CHAR(2)) AS SELECT * FROM pesawat where id_pesawat=@Id_Pesawat

6. Jalankan store procedure Sp_TampilkanDataPesawatId


Exec Sp_TampilkanDataPesawatId '01'

25

7. Membuat Store Procedure untuk menambahkan data pesawat


CREATE PROC Sp_TambahDataPesawat ( @Id_Pesawat CHAR(2), @Nama CHAR(40), @JarakJelajah Numeric) AS BEGIN TRANSACTION Insert into pesawat values (@Id_Pesawat,@Nama,@ JarakJelajah) If @@Error <> 0 Begin Rollback Transaction End Else Begin Commit Transaction End

8. Jalankan store procedure Sp_TambahDataPesawat


exec Sp_TambahDataPesawat '17','Boeing 777-309',7800

9. Membuat Store Procedure untuk merubah data pesawat


CREATE PROC Sp_UbahDataPesawat ( @Id_Pesawat CHAR(2), @Nama CHAR(40), @JarakJelajah Numeric) AS BEGIN TRANSACTION Update pesawat set Nama=@Nama,Jarak_Jelajah=@JarakJelajah where id_pesawat=@Id_Pesawat If @@Error <> 0 Begin Rollback Transaction End Else Begin Commit Transaction End

10. Jalankan store procedure Sp_UbahDataPesawat


exec Sp_UbahDataPesawat '01',' Airbus A340-777', 10800

11. Membuat Store Procedure untuk menghapus data pesawat


CREATE PROC Sp_HapusDataPesawat (@Id_Pesawat CHAR(2)) AS BEGIN TRANSACTION Delete from pesawat where id_pesawat=@Id_Pesawat If @@Error <> 0 Begin Rollback Transaction End Else Begin Commit Transaction End

26

12. Jalankan store procedure Sp_HapusDataPesawat


exec Sp_HapusDataPesawat '16'

C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II 2. Buat store procedure untuk menampilkan semua data pegawai 3. Buat store procedure untuk menampilkan data pegawai berdasar id_pegawai 4. Buat store procedure untuk menambahkan data pegawai 5. Buat store procedure untuk merubah data pegawai 6. Buat store procedure untuk menghapus data pegawai 7. Buat store procedure untuk menampilkan semua data departemen 8. Buat store procedure untuk menampilkan data departemen berdasar id_dept 9. Buat store procedure untuk menambahkan data departemen 10. Buat store procedure untuk merubah data departemen 11. Buat store procedure untuk menghapus data departemen 12. Buat store procedure untuk menampilkan semua data departemen 13. Buat store procedure untuk menampilkan data departemen berdasar id_dept 14. Buat store procedure untuk menambahkan data departemen 15. Buat store procedure untuk merubah data departemen 16. Buat store procedure untuk menghapus data departemen 17. Buat store procedure untuk menampilkan semua data departemen_pegawai 18. Buat store procedure untuk menampilkan data departemen_pegawai berdasar id_dept 19. Buat store procedure untuk menampilkan data departemen_pegawai berdasar id_pegawai 20. Buat store procedure untuk menambahkan data departemen_pegawai 21. Buat store procedure untuk merubah data departemen_pegawai 22. Buat store procedure untuk menghapus data departemen_pegawai Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005 SqlServer 2000 Documentation

27

BAB V Function

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan menguasai implementasi Function dalam database : - Mampu menjelaskan konsep Function dalam database - Mampu menjelaskan fungsi Function dalam database - Mampu mengimplementasikan Function dalam database

A. Teori Singkat Function dalam bahasa pemrograman adalah sebuah subrutin yang digunakan untuk mengenkapsulasi logika yang sering digunakan. Dengan function, kode program yang membutuhkan logika seperti terdapat dalam function tidak perlu menuliskan ulang akan tetapi cukup memanggil function tersebut. Perbedaan function dengan store procedure adalah function memberikan nilai keluaran sementara store procedure tidak. Secara khusus dalam SQL Server 2000 terdapat 2 macam function : Built-in Functions Merupakan function yang disediakan untuk melakukan suatu operasi tertentu. Misal : - Aggregate Functions Melakukan operasi yang mengkombinasi beberapa nilai menjadi satu. Contoh : COUNT, SUM, MIN dan MAX - Cunfiguration Functions Merupakan Function dengan nilai skalar yang memberikan nilai konfigurasi setting. - Cursor Functions Memberikan informasi tentang status cursor - Date and time Functions Memanipulasi nilai datetime dan smalldatetime - Mathematical Functions Melakukan operasi trigonometri, geometri dan numerik - Meta data Functions Memberikan informasi tentang atribut dari database dan obyek database - Rowset Functions Memberikan rowset yang dapat digunakan pada tabel referensi dalam statement Transact-SQL 28

- Security Functions Memberikan informasi tentang users dan roles - String Functions Memanipulasi nilai char, varchar, nchar, nvarchar, binary dan varbinary - System Functions Operasi atau laporan pada bermacam level sistem dan obyek - System statistical Functions Memberikan informasi berkaitan dengan kemampuan SQL Server - Text and Image Functions Memanipulasi nilai text dan image User-defined Functions Merupakan function yang didefinisikan sendiri oleh pengguna. SQL Server 2000 mendukung 3 tipe userdefined functions yaitu : - Scalar Functions - Inline table-valued functions - Multistatement table Sintaks dasar untuk pembuatan Function :
CREATE FUNCTION nama_function ( [ @parameter tipe_data [ ,...n ] ] ) RETURNS tipe_data_return [ AS ] BEGIN statement RETURN nilai-return END

Deskripsi Nama_function Adalah nama fungsinya. Harus mengikuti aturan identifier, yaitu harus unik pada sebuah database, @parameter Adalah parameter yang didefiisikan oleh user. Boleh mendefinisikan lebih dari satu parameter. Paramater harus isi pada saat fungsi di eksekusi. Tipe_data_return Adalah tipe data dari hasil yang dikembalikan. Nilai yang dikembalikan harus memgacu ke tipe data yang didefinisikan sebelumnya.

29

Statement Adalah tempat menuliskan perintah-perintah SQL (Transact-SQL statement). B. Latihan Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database AIRLINES yang anda buat pada Bab II
USE AIRLINES

2. Membuat function yang memberikan nilai total pengeluaran untuk gaji pilot
create function Func_TotalPengeluaranGaji() returns numeric as begin declare @totgaji numeric select @totgaji = sum(gaji) from pilot return @totgaji end

3. Membuat store procedure untuk menjalankan function yang telah dibuat


Create proc Sp_TotalPengeluaranGaji As begin declare @x numeric exec @x = func_totalpengeluarangaji print @x end

4. Jalankan store procedure yang telah dibuat untuk melihat hasil dari function
exec Sp_TotalPengeluaranGaji

C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II 2. Buatlah function yang akan memberikan nilai jumlah pegawai yang bekerja pada lebih dari 1 departemen 3. Buat store procedure untuk mencoba function pada soal no 2 4. Buatlah function untuk menghitung rata-rata persentase_jam_kerja seoarang pegawai pada setiap departemen 5. Buat store procedure untuk mencoba function pada soal no 4 Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005 SqlServer 2000 Documentation 30

BAB VI Trigger

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan menguasai implementasi Trigger dalam database : - Mampu menjelaskan konsep Trigger dalam database - Mampu menjelaskan fungsi Trigger dalam database - Mampu mengimplementasikan Trigger dalam database

A. Teori Singkat Trigger adalah prosedur yang secara otomatis dijalankan sebagai respon terhadap perubahan yang telah ditentukan pada database, dan biasanya ditentukan oleh DBA. Sebuah database memiliki sekumpulan trigger yang telah digabung disebut active database. Deskripsi trigger terdiri dari tiga bagian : Event Condition Action : Perubahan database yang mengaktifkan trigger : Query atau tes yang berjalan ketika tigger sedang diaktifkan : Sebuah procedure yang dieksekusi ketika trigger diaktifkan dan persyaratannya bernilai benar. Trigger dapat dianggap sebagai daemon yang memonitor database, dan dieksekusi ketika database dimodifikasi dengan suatu cara yang sesuai dengan spesifikasi event. Pernyataan insert, delete atau update dapat mengaktifkan trigger, tanpa mempertimbangkan pengguna mana atau aplikasi mana yang meminta pernyataan pengaktifan. Pengguna bahkan mungkin tidak sadar bahwa trigger telah dieksekusi sebagai efek samping dari program mereka. Condition pada trigger dapat merupakan pernyataan true/false atau sebuah query. Query diinterpretasikan sebagai true jika set jawaban tidak kosong dan false jika query tidak memiliki jawaban. Jika bagian persyaratan mengevaluasi true, maka tindakan yang berhubungan dengan trigger dieksekusi. Sintaks dasar untuk pembuatan Trigger :
CREATE TRIGGER nama_trigger ON table | view FOR INSERT | UPDATE | DELETE AS statement_sql [ ...n ]

Deskripsi Nama_trigger Adalah nama trigger. Nama triger harus mengikuti aturan identifier dan harus unik harus unik di dalam satu database.

31

Table Tabel adalah tempat dimana trigger tersebut berapa dan dieksekusi. AS Adalah Aksi yang dilakikan oleh trigger tersebut. Statement_sql Adalah kondisi dan aksi perintah SQL yang ada saat Trigger itu dijalankan. n Variabel yang menyatakan bahwa anda bisa menyertakan banyak pernyataan Transact-SQL. B. Latihan Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database AIRLINES yang anda buat pada Bab II
USE AIRLINES

2. Tambahkan tabel Penerbangan dan Bonus pada Database AIRLINES


PENERBANGAN Nama Kolom * Id_Penerbangan Tgl_Penerbangan Kota_Asal Kota_Tujuan ** Id_Pesawat ** Id_Pilot Jml_Penumpang BONUS * ** Nama Kolom Id_Bonus Tgl_Bonus Id_Pilot Nilai_Bonus Tipe Data INT DATETIME CHAR NUMERIC Lebar Not null Keterangan lain Primary key, Identity(1,1) FOREIGN KEY DEFAULT 0 Tipe Data INT DATETIME CHAR CHAR CHAR CHAR SMALLINT Lebar Not null Keterangan lain Primary key, Identity(1,1) DEFAULT GETDATE()

15 15 2 2

FOREIGN KEY FOREIGN KEY DEFAULT 0

3. Membuat tabel penerbangan


CREATE TABLE PENERBANGAN ( Id_Penerbangan INT NOT NULL PRIMARY KEY IDENTITY(1,1), Tgl_Penerbangan DATETIME NOT NULL DEFAULT GETDATE(), Kota_Asal CHAR(15) NOT NULL, Kota_Tujuan CHAR(15) NOT NULL, Id_Pesawat CHAR(2) NOT NULL FOREIGN KEY REFERENCES pesawat(id_pesawat) ON DELETE NO ACTION ON UPDATE CASCADE, Id_Pilot CHAR(2) NOT NULL FOREIGN KEY REFERENCES pilot(id_pilot) ON DELETE NO ACTION ON UPDATE CASCADE, Jml_Penumpang SMALLINT NOT NULL DEFAULT 0)

4. Membuat tabel Bonus


CREATE TABLE BONUS (Id_Bonus INT NOT NULL Primary key Identity(1,1), Tgl_Bonus DATETIME NOT NULL, Id_Pilot CHAR(2) NOT NULL FOREIGN KEY REFERENCES pilot(id_pilot) ON DELETE NO ACTION ON UPDATE CASCADE, Nilai_Bonus NUMERIC NOT NULL DEFAULT 0)

32

5. Pada penerbangan. Pilot harus memiliki sertifikasi untuk pesawat yang dibawa. Buat Trigger untuk mengecek pilot apakah sudah tersertifikasi
create trigger tr_cek_pilot_penerbangan on penerbangan for insert, update as declare @id_pesawat char(2) declare @id_pilot char(2) select @id_pesawat=id_pesawat, @id_pilot=id_pilot from inserted if (select count(*) from sertifikasi where id_pesawat=@id_pesawat and id_pilot=@id_pilot) = 0 begin RAISERROR ('Pilot belum sertifikasi untuk pesawat tsb', 16, 1) rollback transaction end

6. Setiap melakukan penerbangan. Pilot akan mendapatkan bonus sebesar : 0.005 x Gaji x Jml_Penumpang. Buat Trigger untuk menambahkan data bonus secara otomatis setiap ada penerbangan baru.
create trigger tr_bonus_penerbangan on penerbangan for insert as declare @tgl datetime declare @id_pilot char(2) declare @jml_penumpang smallint declare @gaji numeric begin transaction select @tgl=Tgl_Penerbangan, @id_Pilot=Id_Pilot, @jml_Penumpang=Jml_Penumpang from inserted select @gaji=gaji from pilot where id_pilot=@id_pilot insert into bonus values (@tgl,@id_pilot,((0.005)*@gaji*@jml_penumpang)) if @@error <> 0 rollback transaction else commit transaction

7. Cek apakah trigger-trigger tersebut telah berfungsi dengan menambahkan data penerbangan.
insert into penerbangan values (Getdate(),'JOG','JKT','04','01',9) go insert into penerbangan values (Getdate(),'JOG','JKT','01','01',9) go

33

C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II 2. Tambahkan tabel Lembur dan Bonus pada Database PERUSAHAAN
LEMBUR Nama Kolom * Id_Lembur Tgl_Lembur ** Id_Pegawai Jml_Jam_Lembur Tipe Data INT DATETIME CHAR SMALLINT Lebar Not null Keterangan lain Primary key, Identity(1,1) DEFAULT GETDATE() FOREIGN KEY DEFAULT 0

BONUS * ** Nama Kolom Id_Bonus Tgl_Bonus Id_Pegawai Nilai_Bonus Tipe Data INT DATETIME CHAR NUMERIC Lebar Not null Keterangan lain Primary key, Identity(1,1) FOREIGN KEY DEFAULT 0

3. Buatlah trigger pada tabel lembur yang akan menambahkan secara otomatis data bonus ke tabel bonus. Nilai bonus untuk setiap kali lembur adalah 0,04 * jumlah_jam_lembur * gaji karyawan bersangkutan Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005 SqlServer 2000 Documentation

34

BAB VII Cursor

Kompetensi Dasar Indikator

: Mampu menjelaskan konsep dan menguasai implementasi Cursor dalam database : - Mampu menjelaskan konsep Cursor dalam database - Mampu menjelaskan fungsi Cursor dalam database - Mampu mengimplementasikan Cursor dalam database

A. Teori Singkat Cursor merupakan suatu mekanisme yang memungkinkan untuk mendapatkan baris, satu per satu dari relasi. Cursor dapat dideklarasikan pada semua relasi atau semua query SQL (karena setiap query mengembalikan kumpulan baris). Sekali cursor dideklarasikan, kita dapat open (membuka) posisi cursor tepat sebelum baris pertama; fecth (mengambil) baris berikutnya; move (memindahkan) cursor ke baris berikutnya, ke baris setelah baris ke n berikutnya, ke baris pertama atau ke baris sebelumnya, dsb; atau close (menutup) cursor. Jadi cursor pada dasarnya memungkinkan untuk mendapatkan nilai baris dalam tabel dengan menempatkan cursor pada baris tertentu dan membaca isinya.

Sintaks dasar untuk pembuatan Cursor :


DECLARE nama_cursor [INSENSITIVE][SCROLL]CURSOR FOR statement_select [FOR READONLY | FOR UPDATE]

Deskripsi Nama_cursor Adalah nama variabel cursor yang didefinisikan. Statement_sql Adalah perintah dasar SELECT yang hasilnya akan diset sebagai cursor. B. Latihan Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database AIRLINES yang anda buat pada Bab II
USE AIRLINES

35

2. Membuat store procedure dengan cursor di dalamnya


create proc sp_cur_pesawat as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint declare pesawat_cur cursor for select * from pesawat open pesawat_cur fetch next from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) fetch next from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

3. Coba jalankan store procedure dibuat


Exec sp_cur_pesawat

4. Membuat kembali store procedure dengan cursor di dalamnya


create proc sp_cur_pesawat_desc as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint declare pesawat_cur cursor scroll for select * from pesawat open pesawat_cur fetch last from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) fetch prior from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

5. Coba jalankan store procedure dibuat


Exec sp_cur_pesawat_desc

Apa perbedaaan sp_cur_pesawat dengan sp_cur_pesawat_desc

36

6. Membuat kembali store procedure dengan cursor di dalamnya


create proc sp_cur_pesawat_update as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint declare pesawat_cur cursor scroll for select * from pesawat for update open pesawat_cur fetch last from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) if @id_pesawat='01' begin update pesawat set nama=nama + '_updated' where current of pesawat_cur end fetch prior from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

7. Coba jalankan store procedure dibuat


Exec sp_cur_pesawat_update Exec sp_cur_pesawat

Pelajari ?

C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II 2. Buatlah sebuah store procedure dengan variabel cursor di dalamnya untuk menampilkan data departemen dalam bentuk list secara descending 3. Buatlah sebuah store procedure dengan variabel cursor di dalamnya untuk menampilkan data id pegawai, nama pegawai serta nama departemen dimana saja dia bertugas dalam bentuk list secara ascending Daftar pustaka Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005 Raghu Ramakrishnan, Johannes Gehrke. Database Management System Third Edition. McGrawHill, 2003 SqlServer 2000 Documentation

37

BAB VIII Pemrograman Client

Kompetensi Dasar Indikator

: Mampu menguasai pemrograman client dalam arsitektur aplikasi client server : - Mampu merancang form antarmuka - Mampu merancang koneksi ke database server - Mampu merancang proses manipulasi data di server dengan memanfaatkan proses pemrograman server yang telah dibuat - Mampu menerapkan aturan bisnis serta proses penanganan kesalahan pada aplikasi client

A. Teori Singkat Seperti telah dipelajari sebelumnya. Dalam arsitektur aplikasi model client/server, pemrosesan pada sebuah aplikasi terjadi pada client dan server. Aplikasi client mengeluarkan permintaan ke database yang mengirimkan kembali data ke client-nya.

Gambar 8.1 Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari aplikasi yang berinteraksi dengan user, termasuk logika bisnis dan komunikasi dengan server database. Tipe-tipe tugas yang terjadi pada client adalah : Antarmuka pengguna Interaksi database Pengambilan dan modifikasi data Sejumlah aturan bisnis Penanganan kesalahan

B. Latihan 1. Buat project baru visual basic 2. Tambahkan sebuah module pada project. Klik menu Project Add Module

38

3. Pada Project akan terdapat tambahan sebuah module pada, project properties akan berubah menjadi sbb :

4. Aktifkan module dengan cara klik ganda nama module tersebut di project explorer

Klik ganda disini untuk mengaktifkan module

Ubah property name module tsb menjadi modGeneral

5. Klik Project References. Kemudian aktifkan Microsoft ActiveX Data Object 2.7 Library OK

39

6. Tambahkan kode berikut didalam module :

Public conn As New ADODB.Connection 'buat obyek untuk koneksi Sub main() Dim strConnect As String strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" _ & "Persist Security Info=False;" _ & "Initial Catalog=airlines;Data Source=." conn.CursorLocation = adUseClient On Error GoTo out If conn.State = adStateClosed Then conn.Open strConnect 'buka koneksi End If frmPesawat.Show Exit Sub out: MsgBox "Koneksi gagal" + vbCr + Err.Description, vbCritical, "Error" End Sub

7. Aktifkan Obyek Microsoft DataGrid Control 6.0 untuk kita gunakan.


Klik Project Component Microsoft DataGrid Control 6.0 OK

40

8. Taruh obyek-obyek dan susun menjadi sbb :

4 5

2 6 3 7 16 8 9 10 11 12 13 14 17 15

9. Atur property dari form dan object-object diatasnya dengan aturan sebagai berikut :
Object Form 1 2 3 4 Property Name Caption Name Caption Name Caption Name Caption Name Text Locked Name Text Locked Name Text Locked Name Caption Enabled Value frmPesawat Data Pesawat lblIdPesawat ID Pesawat lblNamaPesawat Nama Pesawat lblJarakJelajah Jarak Jelajah txtIdPesawat (kosongkan !) True txtNamaPesawat (kosongkan !) True txtJarakJelajah (kosongkan !) True cmdBaru Baru True

41

Object 8

10

11

12

13

14

15

16

17

Property Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name Caption Enabled Name

Value cmdAwal << True cmdEdit Ubah True cmdSebelum < True cmdBatal Batal False cmdSelanjutnya > True cmdAkhir >> True cmdSimpan Simpan True cmdHapus Hapus True cmdKeluar Keluar True gridPesawat

10. Setelah dilakukan pengaturan property, seharusnya form akan tampak sbb :

42

11. Tambahkan kode kode berikut :

Dim rsPesawat As New ADODB.Recordset Dim OPERASI As String

12. Buat procedure kosongkan sbb :

Sub kosongkan() txtIdPesawat.Text = "" txtNamaPesawat.Text = "" txtJarakJelajah.Text = "" End Sub

13. Buat procedure tampilkan sbb :

Sub tampilkan() Call kosongkan If rsPesawat.RecordCount < 0 Then Exit Sub With rsPesawat txtIdPesawat.Text = Trim(.Fields("id_pesawat")) txtNamaPesawat.Text = Trim(.Fields("nama_pesawat")) txtJarakJelajah.Text = Trim(.Fields("jarak_jelajah")) End With End Sub

14. Buat procedure ubahTombolAktif sbb :

Sub ubahTombolAktif() cmdBaru.Enabled = Not (cmdBaru.Enabled) cmdEdit.Enabled = Not (cmdEdit.Enabled) cmdBatal.Enabled = Not (cmdBatal.Enabled) cmdSimpan.Enabled = Not (cmdSimpan.Enabled) cmdHapus.Enabled = Not (cmdHapus.Enabled) cmdAwal.Enabled = Not (cmdAwal.Enabled) cmdSebelum.Enabled = Not (cmdSebelum.Enabled) cmdSelanjutnya.Enabled = Not (cmdSelanjutnya.Enabled) cmdAkhir.Enabled = Not (cmdAkhir.Enabled) cmdKeluar.Enabled = Not (cmdKeluar.Enabled) End Sub

15. Buat procedure ubahAktifTextBox sbb :

Sub ubahAktifTextBox(status As Boolean) txtIdPesawat.Locked = Not (status) txtNamaPesawat.Locked = Not (status) txtJarakJelajah.Locked = Not (status) End Sub

43

16. Tambahkan kode pada Form Load

Private Sub Form_Load() On Error GoTo out OPERASI = "" Set rsPesawat = conn.Execute("exec Sp_TampilkanDataPesawat") Set gridPesawat.DataSource = rsPesawat Call tampilkan Exit Sub out: MsgBox "Terjadi kesalahan" + vbCr + Err.Description, vbCritical, "Error" End Sub

17. Tambahkan kode pada cmdBaru Click

Private Sub cmdBaru_Click() Call ubahTombolAktif Call kosongkan Call ubahAktifTextBox(True) txtIdPesawat.SetFocus OPERASI = "BARU" End Sub

18. Tambahkan kode pada cmdEdit Click

Private Sub cmdEdit_Click( Call ubahTombolAktif Call ubahAktifTextBox(True) txtIdPesawat.Locked = True txtNamaPesawat.Text = "" txtJarakJelajah.Text = "" txtNamaPesawat.SetFocus OPERASI = "UBAH" End Sub

19. Tambahkan kode pada cmdBatal Click

Private Sub cmdBatal_Click() OPERASI = "" Call tampilkan Call ubahTombolAktif Call ubahAktifTextBox(False) End Sub

20. Tambahkan kode pada cmdKeluar Click

Private Sub cmdKeluar_Click() Unload Me End Sub

44

21. Tambahkan kode pada cmdHapus Click

Private Sub cmdHapus_Click() Dim konfirm As VbMsgBoxResult konfirm = MsgBox("ANDA YAKIN MAU MENGHAPUS PESAWAT ID='" + txtIdPesawat.Text + "'", vbExclamation + vbOKCancel, "KONFIRMASI") On Error GoTo out If konfirm = vbOK Then conn.Execute "Exec Sp_HapusDataPesawat'" + Trim(txtIdPesawat.Text) + "'" rsPesawat.Requery gridPesawat.Refresh Call cmdSelanjutnya_Click End If Exit Sub out: MsgBox "Terjadi Error" + vbCr + Err.Description, vbCritical, "Error" End Sub

22. Tambahkan kode pada cmdSimpan Click

Private Sub cmdSimpan_Click() Dim query As String If txtIdPesawat.Text = "" Then MsgBox "ID TIDAK BOLEH KOSONG", vbInformation, "WARNING" Exit Sub End If If OPERASI = "BARU" Then query = "Exec TambahDataPesawat '" + txtIdPesawat.Text + "'," _ & "'" + txtNamaPesawat.Text + "','" + txtJarakJelajah.Text + "'" ElseIf OPERASI = "UBAH" Then query = "Exec UbahDataPesawat '" + txtIdPesawat.Text + "'," _ & "'" + txtNamaPesawat.Text + "','" + txtJarakJelajah.Text + "'" End If On Error GoTo out conn.Execute query rsPesawat.Requery gridPesawat.Refresh Call cmdBatal_Click OPERASI = "" Exit Sub out: MsgBox "Terjadi Error" + vbCr + Err.Description, vbCritical, "ERROR" End Sub

23. Tambahkan kode pada cmdAwal Click

Private Sub cmdAwal_Click() rsPesawat.MoveFirst Call tampilkan End Sub

24. Tambahkan kode pada cmdSebelum Click

Private Sub cmdSebelum_Click() rsPesawat.MovePrevious If rsPesawat.BOF Then rsPesawat.MoveFirst Call tampilkan End Sub

45

25. Tambahkan kode pada cmdSelanjutnya Click

Private Sub cmdSelanjutnya_Click() rsPesawat.MoveNext If rsPesawat.EOF Then rsPesawat.MoveLast Call tampilkan End Sub

26. Tambahkan kode pada cmdAkhir Click

Private Sub cmdAkhir_Click() rsPesawat.MoveLast Call tampilkan End Sub

27. Simpan project anda, jalankan dan pelajari !!! C. Tugas Langkah-langkah (simpan semua script yang anda buat ) : 1. Dengan cara yang sama rancanglah form untuk Menu Utama, Data Pilot, dan Data Penerbangan ! Daftar pustaka Raghu Ramakrishnan, Johannes Gehrke. Database Management System Third Edition. McGrawHill, 2003 Harip Santoso, Pemrograman Client Server menggunakan SQLServer 2000 dan Visual Basic 6.0 SqlServer 2000 Documentation

46

Anda mungkin juga menyukai