Modul Client Server
-
Author
maspie-kaskus -
Category
Documents
-
view
61 -
download
2
Embed Size (px)
Transcript of Modul Client Server
-
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 [email protected]_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 [email protected],[email protected] where [email protected]_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 [email protected]_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 [email protected]_pesawat and [email protected]_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 [email protected]_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
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