Top Banner
0 PEMROGRAMAN CLIENT SERVER Emha Taufiq Luthfi, ST SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER “AMIKOM” YOGYAKARTA 2006
47

Modul Client Server

Oct 28, 2015

Download

Documents

Dina Rosdiana
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modul Client Server

0

PEMROGRAMAN CLIENT SERVER

Emha Taufiq Luthfi, ST

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER “AMIKOM” YOGYAKARTA

2006

Page 2: Modul Client Server

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.

Page 3: Modul Client Server

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 ............................................................................................................. ?

Page 4: Modul Client Server

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)

Page 5: Modul Client Server

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

Page 6: Modul Client Server

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

Page 7: Modul Client Server

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

Page 8: Modul Client Server

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.

Page 9: Modul Client Server

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

Page 10: Modul Client Server

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.

Page 11: Modul Client Server

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

Page 12: Modul Client Server

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)

Page 13: Modul Client Server

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

Page 14: Modul Client Server

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

Page 15: Modul Client Server

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

Page 16: Modul Client Server

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

Page 17: Modul Client Server

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

Page 18: Modul Client Server

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

Page 19: Modul Client Server

18

Daftar pustaka

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

SqlServer 2000 Documentation

Page 20: Modul Client Server

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.

Page 21: Modul Client Server

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.

Page 22: Modul Client Server

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)

Page 23: Modul Client Server

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

Page 24: Modul Client Server

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’

Page 25: Modul Client Server

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.

Page 26: Modul Client Server

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'

Page 27: Modul Client Server

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

Page 28: Modul Client Server

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'

Page 29: Modul Client Server

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

Page 30: Modul Client Server

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.

Page 31: Modul Client Server

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

Page 32: Modul Client Server

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.

Page 33: Modul Client Server

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)

Page 34: Modul Client Server

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

Page 35: Modul Client Server

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

Page 36: Modul Client Server

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

Page 37: Modul Client Server

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

Page 38: Modul Client Server

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

Page 39: Modul Client Server

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

Page 40: Modul Client Server

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

Page 41: Modul Client Server

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

Page 42: Modul Client Server

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

Page 43: Modul Client Server

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 :

Page 44: Modul Client Server

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

Page 45: Modul Client Server

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

Page 46: Modul Client Server

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

Page 47: Modul Client Server

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