Upload
dina-rosdiana
View
98
Download
6
Embed Size (px)
Citation preview
0
PEMROGRAMAN CLIENT SERVER
Emha Taufiq Luthfi, ST
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER “AMIKOM” YOGYAKARTA
2006
1
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.
2
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 ............................................................................................................. ?
BAB IV VIEW
A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?
BAB IV STORE PROCEDURE
A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?
BAB V FUNCTION
A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?
BAB VI TRIGGER
A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?
BAB VII CURSOR
D. Teori Singkat .................................................................................................. ? E. Latihan ........................................................................................................... ? F. Tugas ............................................................................................................. ?
3
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)
4
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
5
BAB I
Arsitektur Aplikasi Client Server
Kompetensi Dasar : Mampu menjelaskan konsep dan pengertian arsitektur aplikasi client server Indikator : - 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
6
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
7
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.
8
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 multi-
tier). 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, aplikasi-
aplikasi 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
9
BAB II
Batasan Integritas
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi batasan integritas dalam
database Indikator : - 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.
10
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 Tipe Data Lebar Not null Keterangan lain
* Id_Pesawat CHAR 2 ���� Primary key, harus 2 digit (check)
Nama VARCHAR 30
Jarak_Jelajah INT ���� DEFAULT 0
PILOT
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Pilot CHAR 2 ���� Primary key, harus 2 digit (check)
Nama VARCHAR 40
Gaji NUMERIC ���� DEFAULT 0
SERTIFIKASI
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Sertifikasi INT ���� Primary key, Identity(1,1)
** Id_Pilot CHAR 2 FOREIGN KEY
** Id_Pesawat CHAR 2 FOREIGN KEY
11
Langkah-langkah (simpan semua script yang anda buat ) :
1. Buat Database AIRLINES
atau dengan cara :
2. Aktifkan database AIRLINES
3. Buat Tabel PESAWAT
atau dengan cara :
4. Buat Tabel PILOT
5. Buat Tabel SERTIFIKASI
CREATE DATABASE AIRLINES
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)
USE AIRLINES
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)
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))
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))
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)
12
atau dengan cara :
atau dengan cara :
Hasil :
6. Coba menambahkan data ke dalam tabel Pesawat dengan script berikut :
Apa yang terjadi ?
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)
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)
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
13
7. Coba kermbali menambahkan data ke dalam tabel Pesawat dengan script berikut :
8. Coba menambahkan data ke dalam tabel Pilot dengan script berikut :
Apa yang terjadi ?
9. Ubah script baris ke-2 langkah 8 menjadi sbb :
10. Coba menambahkan data ke dalam tabel sertifikasi dengan script berikut :
Apa yang terjadi ?
11. Ubah script langkah 10 menjadi sbb :
Apa yang terjadi ?
12. Ubah script langkah 11 menjadi sbb :
13. Mencoba menambahkan kembali data ke tabel sertifikasi sbb :
14. Pelajari semuanya
insert into pilot values ('01','Christopher Columbus',98000000)
go
insert into pilot values ('01','Duncan Mcleod',102000000) go
insert into pilot values ('02','Duncan Mcleod',102000000)
go
insert into sertifikasi(id_pesawat, id_pilot)
values ('Boeing','Luthfi')
go
insert into sertifikasi(id_pesawat, id_pilot) values ('01','Luthfi')
go
insert into sertifikasi(id_pesawat, id_pilot) values ('01','02')
go
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
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
14
C. Tugas
1. Buat database dengan nama Perusahaan yang akan memiliki tabel-tabel dengan struktur sbb :
PEGAWAI
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Pegawai CHAR 4 ���� Primary key, harus 4 digit (check)
Nama VARCHAR 40
Gaji NUMERIC ���� DEFAULT 0
DEPARTEMEN
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Dept CHAR 2 ���� Primary key, harus 2 digit (check)
Nama VARCHAR 40
Anggaran NUMERIC ���� DEFAULT 0
Id_Manajer CHAR 4 ���� FOREIGN KEY
DEPARTEMEN_PEGAWAI
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* (**)
Id_Pegawai CHAR 4 ���� Primary Key, FOREIGN KEY
* (**)
Id_Dept CHAR 2 ���� Primary Key, FOREIGN KEY
Persentase_Jam_Kerja INT ���� DEFAULT 100, CHECK MAX 100
2. Coba tambahkan data untuk table-tabel diatas !
Daftar pustaka
Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005
15
BAB III
View
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi View dalam database Indikator : - 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
16
3. Kosongkan semua tabel yang ada dengan query DELETE
4. Gunakan query INSERT untuk mengisi kembali ketiga tabel tersebut dengan keseluruhan data sbb :
PESAWAT
PILOT
SERTIFIKASI
5. Membuat View V_DATA_PILOT_PESAWAT
6. Coba tampilkan isi V_DATA_PILOT_PESAWAT
DELETE FROM Sertifikasi
Go
DELETE FROM Pilot
Go
DELETE FROM Pesawat
Go
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)
SELECT * FROM v_data_pilot_pesawat ORDER BY pesawat ASC
17
7. Cari informasi jumlah pilot untuk masing-masing pesawat
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
SELECT pesawat, count(pilot) as Jumlah_Pilot
FROM v_data_pilot_pesawat GROUP BY pesawat ORDER BY pesawat ASC
18
Daftar pustaka
Thomas Connolly, Carolyn Begg. Database Systems. Addison Wesley, 2005
SqlServer 2000 Documentation
19
BAB IV
Store Procedure
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Store Procedure dalam
database Indikator : - 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 MS-
SQL Server 2000 mendukung berbagai macam tipe data.
20
� Numeric
1. bigint
Nilai integer dengan nilai dari -2^63 (-9223372036854775808) sampai 2^63-1 (9223372036854775807).
2. int
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 -2^63 (-922,337,203,685,477.5808) hingga 2^63 - 1 (+922,337,203,685,477.5807)
2. SmallMoney
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.
21
� 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)
22
� 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
23
� 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 Transact-
SQL 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’
24
� 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.
25
@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
3. Membuat Store Procedure untuk menampilkan seluruh data pesawat
4. Jalankan store procedure Sp_TampilkanDataPesawat
5. Membuat Store Procedure untuk menampilkan data pesawat tertentu
6. Jalankan store procedure Sp_TampilkanDataPesawatId
USE AIRLINES
CREATE PROC Sp_TampilkanDataPesawat AS SELECT * FROM pesawat
Exec Sp_TampilkanDataPesawat
CREATE PROC Sp_TampilkanDataPesawatId (@Id_Pesawat CHAR(2)) AS SELECT * FROM pesawat where id_pesawat=@Id_Pesawat
Exec Sp_TampilkanDataPesawatId '01'
26
7. Membuat Store Procedure untuk menambahkan data pesawat
8. Jalankan store procedure Sp_TambahDataPesawat
9. Membuat Store Procedure untuk merubah data pesawat
10. Jalankan store procedure Sp_UbahDataPesawat
11. Membuat Store Procedure untuk menghapus 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
exec Sp_TambahDataPesawat '17','Boeing 777-309',7800
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
exec Sp_UbahDataPesawat '01',' Airbus A340-777', 10800
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
27
12. Jalankan store procedure Sp_HapusDataPesawat
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
exec Sp_HapusDataPesawat '16'
28
BAB V
Function
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Function dalam
database Indikator : - 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
29
- 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 user-
defined 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.
30
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
2. Membuat function yang memberikan nilai total pengeluaran untuk gaji pilot
3. Membuat store procedure untuk menjalankan function yang telah dibuat
4. Jalankan store procedure yang telah dibuat untuk melihat hasil dari function
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
USE AIRLINES
create function Func_TotalPengeluaranGaji()
returns numeric
as
begin
declare @totgaji numeric
select @totgaji = sum(gaji) from pilot
return @totgaji end
Create proc Sp_TotalPengeluaranGaji
As
begin
declare @x numeric
exec @x = func_totalpengeluarangaji
print @x end
exec Sp_TotalPengeluaranGaji
31
BAB VI
Trigger
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Trigger dalam database Indikator : - 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 : Perubahan database yang mengaktifkan trigger
• Condition : Query atau tes yang berjalan ketika tigger sedang diaktifkan
• Action : 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.
32
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
2. Tambahkan tabel Penerbangan dan Bonus pada Database AIRLINES
PENERBANGAN
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Penerbangan INT ���� Primary key, Identity(1,1)
Tgl_Penerbangan DATETIME ���� DEFAULT GETDATE()
Kota_Asal CHAR 15 ����
Kota_Tujuan CHAR 15 ����
** Id_Pesawat CHAR 2 ���� FOREIGN KEY
** Id_Pilot CHAR 2 ���� FOREIGN KEY
Jml_Penumpang SMALLINT ���� DEFAULT 0
BONUS
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Bonus INT ���� Primary key, Identity(1,1)
Tgl_Bonus DATETIME ����
** Id_Pilot CHAR 2 ���� FOREIGN KEY
Nilai_Bonus NUMERIC ���� DEFAULT 0
3. Membuat tabel penerbangan
4. Membuat tabel Bonus
USE AIRLINES
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)
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)
33
5. Pada penerbangan. Pilot harus memiliki sertifikasi untuk pesawat yang dibawa. Buat Trigger untuk mengecek pilot apakah sudah tersertifikasi
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.
7. Cek apakah trigger-trigger tersebut telah berfungsi dengan menambahkan data penerbangan.
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
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
insert into penerbangan values (Getdate(),'JOG','JKT','04','01',9)
go
insert into penerbangan values (Getdate(),'JOG','JKT','01','01',9)
go
34
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 Tipe Data Lebar Not null Keterangan lain
* Id_Lembur INT ���� Primary key, Identity(1,1)
Tgl_Lembur DATETIME ���� DEFAULT GETDATE()
** Id_Pegawai CHAR 4 ���� FOREIGN KEY
Jml_Jam_Lembur SMALLINT ���� DEFAULT 0
BONUS
Nama Kolom Tipe Data Lebar Not null Keterangan lain
* Id_Bonus INT ���� Primary key, Identity(1,1)
Tgl_Bonus DATETIME ����
** Id_Pegawai CHAR 4 ���� FOREIGN KEY
Nilai_Bonus NUMERIC ���� 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
35
BAB VII
Cursor
Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Cursor dalam database Indikator : - 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
36
2. Membuat store procedure dengan cursor di dalamnya
3. Coba jalankan store procedure dibuat
4. Membuat kembali store procedure dengan cursor di dalamnya
5. Coba jalankan store procedure dibuat
Apa perbedaaan sp_cur_pesawat dengan sp_cur_pesawat_desc
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
Exec sp_cur_pesawat
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
Exec sp_cur_pesawat_desc
37
6. Membuat kembali store procedure dengan cursor di dalamnya
7. Coba jalankan store procedure dibuat
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
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
Exec sp_cur_pesawat_update Exec sp_cur_pesawat
38
BAB VIII
Pemrograman Client
Kompetensi Dasar : Mampu menguasai pemrograman client dalam arsitektur aplikasi client server Indikator : - 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
39
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
Ubah property name module tsb menjadi modGeneral
5. Klik Project → References. Kemudian aktifkan Microsoft ActiveX Data Object 2.7 Library → OK
Klik ganda disini
untuk mengaktifkan
module
40
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
41
8. Taruh obyek-obyek dan susun menjadi sbb :
9. Atur property dari form dan object-object diatasnya dengan aturan sebagai berikut : Object Property Value
Name frmPesawat Form
Caption Data Pesawat
Name lblIdPesawat 1
Caption ID Pesawat
Name lblNamaPesawat 2
Caption Nama Pesawat
Name lblJarakJelajah 3
Caption Jarak Jelajah
Name txtIdPesawat
Text (kosongkan !)
4
Locked True
Name txtNamaPesawat
Text (kosongkan !)
5
Locked True
Name txtJarakJelajah
Text (kosongkan !)
6
Locked True
Name cmdBaru
Caption Baru
7
Enabled True
1
16
3
4
5
6
7
8
15
2
9 10 11 12 13 14
17
42
Object Property Value
Name cmdAwal
Caption <<
8
Enabled True
Name cmdEdit
Caption Ubah
9
Enabled True
Name cmdSebelum
Caption <
10
Enabled True
Name cmdBatal
Caption Batal
11
Enabled False
Name cmdSelanjutnya
Caption >
12
Enabled True
Name cmdAkhir
Caption >>
13
Enabled True
Name cmdSimpan
Caption Simpan
14
Enabled True
Name cmdHapus
Caption Hapus
15
Enabled True
Name cmdKeluar
Caption Keluar
16
Enabled True
17 Name gridPesawat
10. Setelah dilakukan pengaturan property, seharusnya form akan tampak sbb :
43
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
44
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
45
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
46
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