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

Modul Client Server

Nov 24, 2015

Download

Documents

Maspie Kaskus
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
  • 0

    PEMROGRAMAN CLIENT SERVER

    Emha Taufiq Luthfi, ST

    SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM YOGYAKARTA

    2006

  • 1

    Kata pengantar

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

  • 2

    DAFTAR ISI

    HALAMAN JUDUL KATA PENGANTAR DAFTAR ISI GLOSARIUM PENDAHULUAN BAB I ARSITEKTUR APLIKASI CLIENT SERVER

    A. Teori Singkat ................................................................................................. ? B. Soal ................................................................................................................ ?

    BAB II BATASAN INTEGRITAS

    A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?

    BAB IV VIEW

    A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?

    BAB IV STORE PROCEDURE

    A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?

    BAB V FUNCTION

    A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?

    BAB VI TRIGGER

    A. Teori Singkat .................................................................................................. ? B. Latihan ........................................................................................................... ? C. Tugas ............................................................................................................. ?

    BAB VII CURSOR

    D. Teori Singkat .................................................................................................. ? E. Latihan ........................................................................................................... ? F. Tugas ............................................................................................................. ?

  • 3

    GLOSARIUM

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

  • 4

    PENDAHULUAN Deskripsi Materi Arsitektur aplikasi client server, batasan integritas, view, store procedure, function, trigger, cursor, pengembangan aplikasi client. Prasyarat Mata kuliah Pemrograman Basis Data (PBD). Petunjuk pemakaian modul

    1. Pahami mata deskripsi materi 2. Pahami kompetensi dasar dengan indikatornya 3. Bacalah bab demi bab dengan cermat dan teliti

    Standar kompetensi Memahami konsep dan pengertian arsitektur aplikasi client server serta mampu melakukan analisa dan perancangan aplikasi dengan arsitektur client server menggunakan salah satu DBMS dengan penajaman pada penguasaan bahasa Structured Query Language (SQL). Kompetensi dasar 1. Mampu menjelaskan konsep dan pengertian arsitektur aplikasi client server 2. Mampu menjelaskan konsep dan menguasai implementasi batasan integritas dalam database 3. Mampu menjelaskan konsep dan menguasai implementasi VIEW dalam database 4. Mampu menjelaskan konsep dan menguasai implementasi Store Procedure dalam database 5. Mampu menjelaskan konsep dan menguasai implementasi Function dalam database 6. Mampu menjelaskan konsep dan menguasai implementasi Trigger dalam database 7. Mampu menjelaskan konsep dan menguasai implementasi Cursor dalam database 8. Pengembangan aplikasi client

  • 5

    BAB I

    Arsitektur Aplikasi Client Server

    Kompetensi Dasar : Mampu menjelaskan konsep dan pengertian arsitektur aplikasi client server Indikator : - Mampu menjelaskan konsep arsitektur aplikasi

    - Mampu menjelaskan macam arsitektur aplikasi

    - Mampu secara khusus menjelaskan konsep dan pengertian arsitektur aplikasi client server

    - Mampu menjelaskan fungsi dan komponen dari arsitektur aplikasi client server

    - Mampu menjelaskan keunggulan serta kelemahan arsitektur aplikasi client server dibandingkan arsitektur aplikasi yang lain

    A. Teori Singkat

    Istilah arsitektur mengacu pada desain sebuah aplikasi, atau dimana komponen yang membentuk

    suatu sistem ditempatkan dan bagaimana mereka berkomunikasi. Arsitektur terdistribusi sebuah istilah yang

    relatif baru untuk menjelaskan arsitektur aplikasi berarti bahwa pemrosesan dari suatu aplikasi terjadi pada

    lebih dari satu mesin.

    Terdapat beberapa macam arsitektur aplikasi, yaitu :

    1. Standalone (one-tier)

    Pada arsitektur ini semua pemrosesan dilakukan pada mainframe. Kode aplikasi, data dan semua

    komponen sistem ditempatkan dan dijalankan pada host. Seperti terlihat pada gambar 1.1.

    Gambar 1.1

    Walaupun komputer client dipakai untuk mengakses mainframe, tidak ada pemrosesan yang terjadi pada

    mesin ini, dan karena mereka dump-client atau dump-terminal. Tipe model ini, dimana semua

    pemrosesan terjadi secara terpusat, dikenal sebagai berbasis-host. Sekilas dapat dilihat kesalahan pada

  • 6

    model ini. Ada dua masalah pada komputasi berbasis host: Pertama, semua pemrosesan terjadi pada

    sebuah mesin tunggal, sehingga semakin banyak user yang mengakses host, semakin kewalahan

    jadinya. Jika sebuah perusahaan memiliki beberapa kantor pusat, user yang dapat mengakses mainframe

    adalah yang berlokasi pada tempat itu, membiarkan kantor lain tanpa akses ke aplikasi yang ada.

    Pada saat itu jaringan sudah ada namun masih dalam tahap bayi, dan umumnya digunakan untuk

    menghubungkan terminal dump dan mainframe. Internet baru saja dikembangkan oleh pemerintah US

    dan pada saat itu dikenal sebagai ARPANET. Namun keterbatasan yang dikenakan pada user mainframe

    dan jaringan telah mulai dihapus.

    2. Client/Server (two-tier)

    Dalam model client/server, pemrosesan pada sebuah aplikasi terjadi pada client dan server. Client/server

    adalah tipikal sebuah aplikasi two-tier dengan banyak client dan sebuah server yang dihubungkan melalui

    sebuah jaringan, seperti terlihat dalam gambar 1.2. Aplikasi ditempatkan pada komputer client dan mesin

    database dijalankan pada server jarak-jauh. Aplikasi client mengeluarkan permintaan ke database yang

    mengirimkan kembali data ke client-nya.

    Gambar 1.2

    Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari aplikasi yang

    berinteraksi dengan user, termasuk logika bisnis dan komunikasi dengan server database. Tipe-tipe tugas

    yang terjadi pada client adalah :

    Antarmuka pengguna

    Interaksi database

    Pengambilan dan modifikasi data

    Sejumlah aturan bisnis

    Penanganan kesalahan

  • 7

    Server database berisi mesin database, termasuk tabel, prosedur tersimpan, dan trigger (yang juga berisi

    aturan bisnis). Dalam sistem client/server, sebagian besar logika bisnis biasanya diterapkan dalam

    database. Server database manangani :

    Manajemen data

    Keamanan

    Query, trigger, prosedur tersimpan

    Penangan kesalahan

    Arsitektur client/server merupakan sebuah langkah maju karena mengurangi beban pemrosesan dari

    komputer sentral ke komputer client. Ini berarti semakin banyak user bertambah pada aplikasi

    client/server, kinerja server file tidak akan menurun dengan cepat. Dengan client/server user dair berbagai

    lokasi dapat mengakses data yang sama dengan sedikit beban pada sebuah mesin tunggal. Namun

    masih terdapat kelemahan pada model ini. Selain menjalankan tugas-tugas tertentu, kinerja dan

    skalabilitas merupakan tujuan nyata dari sebagian besar aplikasi. Model client/server memiliki sejumlah

    keterbatasan :

    Kurangnya skalabilitas

    Koneksi database dijaga

    Tidak ada keterbaharuan kode

    Tidak ada tingkat menengah untuk menangani keamanan dan transaksi

    Aplikasi-aplikasi berbasis client/server memiliki kekurangan pada skalabilitas. Skalabilitas adalah

    seberapa besar aplikasi bisa menangani suatu kebutuhan yang meningkat - misalnya, 50 user tambahan

    yang mengakses aplikasi tersebut. Walaupun model client/server lebih terukur daripada model berbasis

    host, masih banyak pemrosesan yang terjadi pada server. Dalam model client/server semakin banyak

    client yang menggunakan suatu aplikasi, semakin banyak beban pada server.

    Koneksi database harus dijaga untuk masing-masing client. Koneksi menghabiskan sumber daya server

    yang berharga dan masing-masing client tambahan diterjemahkan ke dalam satu atau beberapa koneksi.

    Logika kode tidak bisa didaur ulang karena kode aplikasi ada dalam sebuah pelaksanaan executable

    monolitik pada client. Ini juga menjadikan modifikasi pada kode sumber sulit. Penyusunan ulang

    perubahan itu ke semua komputer client juga membuat sakit kepala.

    Keamanan dan transaksi juga harus dikodekan sebagai pengganti penanganan oleh COM+/MTS.

    Bukan berarti model client/server bukanlah merupakan model yang layak bagi aplikasi-aplikasi. Banyak

    aplikasi yang lebih kecil dengan jumlah user terbatas bekerja sempurna dengan model ini. Kemudahan

    pengembangan aplikasi client/server turut menjadikannya sebuah solusi menarik bagi perusahaan.

    Pengembangan umumnya jauh lebih cepat dengan tipe sistem ini. Siklus pengembangan yang lebih cepat

    ini tidak hanya menjadikan aplikasi meningkat dan berjalan dengan cepat namun juga lebih hemat biaya.

  • 8

    3. Three-Tier / Multi-Tier

    Model three-tier atau multi-tier dikembangkan untuk menjawab keterbatasan pada arsitektur client/server.

    Dalam model ini, pemrosesan disebarkan di dalam tiga lapisan (atau lebih jika diterapkan arsitektur multi-

    tier). Lapisan ketiga dalam arsitektur ini masing-masing menjumlahkan fungsionalitas khusus. Yaitu :

    Layanan presentasi (tingkat client)

    Layanan bisnis (tingkat menengah)

    Layanan data (tingkat sumber data)

    Layanan presentasi atau logika antarmuka pengguna ditempatkan pada mesin client. Logika bisnis

    dikeluarkan dari kode client dan ditempatkan dalam tingkat menengah. Lapisan layanan data berisi server

    database. Setiap tingkatan dalam model three-tier berada pada komputer tersendiri, seperti pada gambar

    1.3

    Gambar 1.3

    Konsep model three-tier adalah model yang membagi fungsionalitas ke dalam lapisan-lapisan, aplikasi-

    aplikasi mendapatkan skalabilitas, keterbaharuan, dan keamanan.

    B. Tugas

    1. Ada berapa macam arsitektur aplikasi ? Sebutkan !

    2. Jelaskan perbedaan masing-masing arsitektur, kelebihan serta kekurangannya !

    Daftar pustaka

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

  • 9

    BAB II

    Batasan Integritas

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi batasan integritas dalam

    database Indikator : - Mampu menjelaskan konsep batasan integritas dalam database - Mampu menjelaskan macam batasan integritas dalam database beserta

    fungsinya

    - Mampu mengimplementasikan batasan integritas dalam perancangan database dengan penggunaan sintaks DDL SQL

    A. Teori Singkat

    Batasan Integritas (Integrity Constraint) adalah kondisi yang ditetapkan pada skema database dan

    membatasi data yang dapat disimpan di dalam database tersebut.

    Terdapat lima tipe batasan integritas, yaitu :

    1. Membutuhkan Data (Required Data)

    Kolom harus mengandung data yang benar, tidak diijinkan untuk mengandung nilai NULL.

    2. Batasan Domain (Domain Contraints)

    Setiap kolom memiliki domain atau nilai yang diijinkan untuk kolom tersebut. Contoh ; domain untuk kolom

    JenisKelamin adalah L atau P.

    Batasan ini didefinisikan dengan klausa CHECK pada kolom.

    3. Integritas Entiti (Entity Integrity)

    Primary Key pada tabel harus mengandung nilai unik dan tidak boleh bernilai null pada setiap baris data.

    Batasan ini mendefinisikan primary key dengan klausa PRIMARY KEY yang hanya dapat dilakukan sekali

    dalam setiap tabel dan sebagai tambahan dapat didefinisikan alternate key dengan klausa UNIQUE.

    4. Integritas Referensi (Referential Integrity)

    Foreign Key adalah kolom yang menghubungkan setiap baris data pada tabel anak yang mengandung

    foreign key ke tabel induk yang memiliki nilai candidate key yang cocok. Batasan ini didefinisikan dengan

    klausa FOREIGN KEY

    5. Batasan Umum (General Contraints)

    Batasan tambahan yang didefinisikan oleh pengguna database.

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

    ALTER TABLE.

  • 10

    Sintaks dasar untuk membuat tabel :

    CREATE TABLE NamaTabel

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

    Sintaks dasar untuk merubah tabel :

    ALTER TABLE NamaTabel

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

    B. Latihan

    Buat database dengan nama AIRLINES yang akan memiliki tabel-tabel dengan struktur sbb :

    PESAWAT

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Pesawat CHAR 2 Primary key, harus 2 digit (check)

    Nama VARCHAR 30

    Jarak_Jelajah INT DEFAULT 0

    PILOT

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Pilot CHAR 2 Primary key, harus 2 digit (check)

    Nama VARCHAR 40

    Gaji NUMERIC DEFAULT 0

    SERTIFIKASI

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Sertifikasi INT Primary key, Identity(1,1)

    ** Id_Pilot CHAR 2 FOREIGN KEY

    ** Id_Pesawat CHAR 2 FOREIGN KEY

  • 11

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buat Database AIRLINES

    atau dengan cara :

    2. Aktifkan database AIRLINES

    3. Buat Tabel PESAWAT

    atau dengan cara :

    4. Buat Tabel PILOT

    5. Buat Tabel SERTIFIKASI

    CREATE DATABASE AIRLINES

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

    USE AIRLINES

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

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

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

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

  • 12

    atau dengan cara :

    atau dengan cara :

    Hasil :

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

    Apa yang terjadi ?

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

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

    insert into pesawat values ('1','Boeing 747-400',8430) go

    insert into pesawat values ('2','British Aerospace Jetstream',1502) go

    insert into pesawat values ('3',' Boeing 777-300',6475) go

  • 13

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

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

    Apa yang terjadi ?

    9. Ubah script baris ke-2 langkah 8 menjadi sbb :

    10. Coba menambahkan data ke dalam tabel sertifikasi dengan script berikut :

    Apa yang terjadi ?

    11. Ubah script langkah 10 menjadi sbb :

    Apa yang terjadi ?

    12. Ubah script langkah 11 menjadi sbb :

    13. Mencoba menambahkan kembali data ke tabel sertifikasi sbb :

    14. Pelajari semuanya

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

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

    insert into pilot values ('02','Duncan Mcleod',102000000) go

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

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

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

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

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

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

    insert into pesawat values ('01','Boeing 747-400',8430) go

    insert into pesawat values ('02','British Aerospace Jetstream',1502) go

    insert into pesawat values ('03',' Boeing 777-300',6475) go

  • 14

    C. Tugas

    1. Buat database dengan nama Perusahaan yang akan memiliki tabel-tabel dengan struktur sbb :

    PEGAWAI

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Pegawai CHAR 4 Primary key, harus 4 digit (check)

    Nama VARCHAR 40

    Gaji NUMERIC DEFAULT 0

    DEPARTEMEN

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Dept CHAR 2 Primary key, harus 2 digit (check)

    Nama VARCHAR 40

    Anggaran NUMERIC DEFAULT 0

    Id_Manajer CHAR 4 FOREIGN KEY

    DEPARTEMEN_PEGAWAI

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * (**)

    Id_Pegawai CHAR 4 Primary Key, FOREIGN KEY

    * (**)

    Id_Dept CHAR 2 Primary Key, FOREIGN KEY

    Persentase_Jam_Kerja INT DEFAULT 100, CHECK MAX 100

    2. Coba tambahkan data untuk table-tabel diatas !

    Daftar pustaka

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

  • 15

    BAB III

    View

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi View dalam database Indikator : - Mampu menjelaskan konsep View dalam database - Mampu menjelaskan fungsi View dalam database

    - Mampu mengimplementasikan View dalam database

    A. Teori Singkat

    View adalah tabel virtual atau query yang tersimpan. Data yang terakses melalui view tidak disimpan

    dalam database sebagai obyek tersendiri akan tetapi berupa query select dari satu atau lebih tabel. View

    digunakan untuk melakukan fungsi-fungsi berikut :

    Membatasi pengguna kepada baris data tertentu dalam tabel

    Sebagai contoh : mengijinkan pekerja hanya melihat data catatan kerja harian miliknya dari tabel

    CatatanKerjaHarian

    Membatasi pengguna kepada kolom tertentu dalam tabel

    Sebagai contoh : mengijinkan pekerja yang tidak berada pada bagian kepegawaian untuk melihat kolom

    nama, departemen, telepon dari tabel pekerja tetapi tidak diijinkan melihat beberapa kolom lain yang

    berkaitan dengan gaji atau informasi pribadi.

    Menggabungkan kolom dari beberapa tabel sehingga terlihat seperti sebuah tabel

    Menjumlahkan informasi daripada memberikan detail

    Sebagai contoh : menyajikan jumlah dari kolom, nilai maksimum atau minimum dari sebuah kolom.

    Sintaks dasar untuk membuat view :

    CREATE VIEW NamaView AS SubSelect

    Sintaks dasar untuk merubah view :

    ALTER VIEW NamaView AS SubSelect

    B. Latihan

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database AIRLINES yang anda buat pada Bab II

    2. Aktifkan database AIRLINES

    USE AIRLINES

  • 16

    3. Kosongkan semua tabel yang ada dengan query DELETE

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

    PESAWAT

    PILOT

    SERTIFIKASI

    5. Membuat View V_DATA_PILOT_PESAWAT

    6. Coba tampilkan isi V_DATA_PILOT_PESAWAT

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

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

    SELECT * FROM v_data_pilot_pesawat ORDER BY pesawat ASC

  • 17

    7. Cari informasi jumlah pilot untuk masing-masing pesawat

    C. Tugas

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II

    2. Jika belum ada data dalam tabel-tabel database Perusahaan silakan tambahkan terlebih dahulu (bebas).

    3. Buatlah sebuah View yang menunjukan semua nama pegawai serta nama departemen dimana saja dia bertugas beserta persentase jam kerjanya.

    4. Cari informasi pegawai serta jumlah di berapa departemen dia bertugas

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

  • 18

    Daftar pustaka

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

    SqlServer 2000 Documentation

  • 19

    BAB IV

    Store Procedure

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Store Procedure dalam

    database Indikator : - Mampu menjelaskan konsep Store Procedure dalam database - Mampu menjelaskan fungsi Store Procedure dalam database

    - Mampu mengimplementasikan Store Procedure dalam database

    A. Teori Singkat

    Store Procedure adalah kumpulan dari perintah Transact-SQL yang dikompile dalam satu unit untuk

    dijalankan bersama. Dalam SQL Server store procedure memiliki kemampuan antara lain :

    Menerima parameter input dan mengembalikan beberapa nilai parameter output dari procedure yang

    dipanggil.

    Mengandung statement pemrograman yang melakukan operasi terhadap database termasuk memanggil

    store procedure lain.

    Memberikan status yang mengindikasikan keberhasilan atau kegagalan eksekusi store procedure

    Keuntungan pemakaian store procedure adalah :

    Merupakan pemrograman modular

    Store procedure dibuat sekali dan dapat dipakai berulang untuk komputasi yang sama

    Memungkinkan eksekusi lebih cepat

    Ketika pertama kali dijalankan store procedure akan tersimpan dalam memori. Sehingga memungkinkan

    eksekusi berikutnya lebih cepat.

    Mengurangi trafik jaringan

    Barisan kode transact SQL yang seharusnya dilewatkan jaringan, akan digantikan dengan statement

    tunggal pemanggilan store procedure

    Dapat digunakan sebagai mekanisme sekuriti

    Pengguna dimungkinkan mengeksekusi Store procedure, walau mungkin tidak dapat mengeksekusi

    procedure didalamnya secara langsung.

    Sebelum mempelajari cara pembuatan store procedure, perlu juga dipelajari statement Transact SQL untuk

    pemrograman server. Beberapa statement Transact SQL :

    TIPE DATA PADA PEMROGRAMAN SERVER

    Data yang dapat dimasukkan ke dalam database kita tentunya bermacam-macam. Secara khusus MS-

    SQL Server 2000 mendukung berbagai macam tipe data.

  • 20

    Numeric

    1. bigint

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

    2. int

    Nilai integer dengan nilai dari -2^31 (-2,147,483,648) sampai 2^31 - 1 (2,147,483,647). 3. smallint

    Nilai integer dengan nilai dari 2^15 (-32,768) sampai 2^15 - 1 (32,767). 4. tinyint

    Nilai integer dengan nilai dari 0 sampai 255. 5. bit

    Nilai integer dengan nilai 1 atau 0. 6. Decimal dan Numeric

    Angka dengan akurasi tetap dari -10^38 +1 sampai 10^38 1. Money

    1. money

    Data dengan nilai mata uang -2^63 (-922,337,203,685,477.5808) hingga 2^63 - 1 (+922,337,203,685,477.5807)

    2. SmallMoney

    Data dengan nilai mata uang -214,748.3648 through +214,748.3647 Numeric Precession

    1. float

    Bilangan presesi dari -1.79E + 308 sampai 1.79E + 308.

    2. real

    Bilangan presesi dari -3.40E + 38 sampai 3.40E + 38. Date Time

    1. datetime

    Tanggal dan waktu dari January 1, 1753, samapi December 31, 9999, dengan akurasi sampai 3.33 millidetik.

    2. smalldatetime

    Tanggal dan waktu dari January 1, 1900, samapi June 6, 2079, denagn akurasi satu menit. Strings

    1. char

    Field berisi karakter dengan ukuran panjang tetap dengan panjang maksimum 8,000 karakter. 2. varchar

    Field berisi karakter dengan panjang ukuran tidak tetap dengan panjang maksimum 8,000 characters. 3. text

    variabel berisi karakter denagn ukuran panjang sampai 2^31 - 1 (2,147,483,647) karakter.

  • 21

    Unicode Character Strings

    1. nchar

    Karakter unicode dengan ukuran panjang tetap 4,000 karakter. 2. nvarchar

    Karakter dengan panjang tidak tetap hingga 4,000 karakter.. 3. ntext

    Karakter dengan panjang tidak tetap hingga of 2^30 - 1 (1,073,741,823) Karakter.

    Binary Strings

    1. binary

    Ukuran tetap data binary hingga 8,000 bytes. 2. varbinary

    Ukuran panjang tidak tetap data binary hingga 8,000 bytes. 3. image

    Ukuran tidak tetap data binary hingga 2^31 - 1 (2,147,483,647) bytes.

    Tipe Data Lain

    1. cursor

    Referensi ke cursor.

    2. timestamp

    Angka ekslusif yang dikenali oleh database 3. uniqueidentifier

    Pengenal global yang eksklusif.

    OPERATOR

    Urutan operator yang didukung secara khusus oleh SQL Server berdasar urutan evaluasi:

    o + (positif), - (negatif), ~ (birwise NOT)

    o * (perkalian), / (pembagian), % (modulus)

    o + (penjumlahan), + (pengabungan), - (pengurangan)

    o =, >, =, , !< (perbandingan)

    o ^ (bitwise exclusive OR), & (bitwise AND), | (bitwise OR)

    o NOT

    o AND

    o ALL, ANY, BETWEEN, IN, LIKE, OR, SOME

    o = (penugasan)

  • 22

    VARIABEL

    Semua bahasa pemrograman mengenal bahasa pemroraman, termasuk pemrograman database di

    server. Variabel di deklarasikan pada badan Bacth atau Procedure dengan pernyataan DECLARE dan diberi

    nilai dengan pernyataan SET atau SELECT. Variabel cursor bisa dideklarasikan dengan pernyataan ini.

    Setelah deklarasi semua variabel diinisialisasi dengan nilai NULL.

    Variabel Biasa

    Sintaks :

    DECLARE @variabel_lokal tipe_data

    Description

    @variabel lokal

    Nama variabel. Setiap nama variabel lokal selalu diawali dengan tanda @, dan harus unik pada suatu blok. Tipe data

    Semua tipe data yang disediakan oleh sistem.

    Contoh:

    DECLARE @pesawat CHAR(40)

    Mendefinisikan sebuah variabel bernama pesawat dengan tipe CHAR panjang 40.

    Variabel Cursor

    Untuk medefinisikan atribut dari CURSOR server di Transact-SQL. Misalnya perilaku scrolling dan query

    yang digunakan utnuk membuat hasil dimana cursor beroperasi

    Sintaks :

    DECLARE nama_cursor CURSOR

    FOR statement_select

    Description

    Nama_Cursor

    Nama variabel yang bertipe cursor

    Statement_Select

    Pernyataan SELECT standar yang mendefinisikan hasil dari cursor. Kata kunci COMPUTE, COMPUTE

    BY, FOR BROWSE dan INTO tidak boleh dalam select_statement dari deklarasi cursor.

    Contoh:

    DECLARE Cur_Pilot CURSOR Memesan variabel bertipe Cursor bernama Cur_Pilot

  • 23

    BLOK STATEMENT (BEGIN ... END)

    Berfungsi untuk mendefinisikan blok statement

    Sintaks :

    BEGIN { Statement SQL }

    END

    PERULANGAN (WHILE)

    Perulangan digunakan untuk mengeksekusi suatu perintah Transact-SQL atau blok perintah Transact-

    SQL secara berulang-ulang selama kondisinya adalah terpenuhi.

    Eksekusi dari perintah WHILE dapat di kendalikan dengan BREAK dan CONTINUE.

    Sintaks :

    WHILE ekspresi_boolean { Statement_SQL | Blok_Statement } [ BREAK ] { Statement_SQL | Blok_Statement } [ CONTINUE ]

    Deskripsi

    Ekspresi_Boolean

    Kondisi yang mengembalikan nilai TRUE atau FALSE.

    { Statement_SQL | Blok_Statement }

    Adalah perintah Transact-SQL atau grup statement dalam satu blok.

    BREAK

    Perintah untuk mengakhiri perintah perulangan.

    CONTINUE

    Untuk mengulang perulangan.

    Contoh: while (select avg(gaji) from pilot) < 15000000 begin update pilot set gaji = gaji * 2 select max(gaji) from pilot if (select max(gaji) from gaji) > 20000000 break else continue end print Gaji sudah tinggi

  • 24

    GOTO label

    Melanjutkan proses ke statement pada label

    KONDISI BERSYARAT (IF ... ELSE)

    Mendefinisikan suatu kondisi bersyarat

    Sintaks :

    IF ekspresi_boolean

    { statement SQL | blok statement } [ ELSE { statement SQL | blok statement } ]

    Deskripsi

    Ekspresi_Boolean

    Ekspresi yang menghasilkan TRUE atau FALSE.

    Statement SQL

    Pernyataan-pernyataan SQL yang sakan dilaksanakan.

    Contoh:

    IF (SELECT COUNT(*) FROM Sertifikasi) < 20

    BEGIN

    PRINT 'Jumlah Pilot kurang memadai'

    END

    ELSE

    BEGIN

    PRINT Jumlah Pilot sudah cukup'

    END

    Sintaks dasar untuk membuat store procedure :

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

    Deskripsi :

    Nama_Procedure

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

  • 25

    @parameter

    Adalah parameter procedure. Kita bisa mendefinisikan lebih dari satu parameter dalam satu parameter

    pada waktu membuat Store Procedure. Satu Store Procedure maksimum memiliki 2,100 parameters.

    Tipe_data

    Adalah tipe data dari parameter yang bersangkutan. Semua tipe data dapat masuk seperti Text, Numeric,

    Int, Smallint dan lainnya. Tipe data Cursor hanya dapat digunakan sebagai Output.

    AS

    Tempat meletakkan aksi-aksi procedure.

    sql_statement

    Kumpulan perintah SQL yang akan dimasukkan dalam procedure tersebut

    n

    Adalah indikasi berapa banyak Statement SQL yang dimasukkan

    Catatan:

    Ukuran satu store procedure maksimal 128 MB.

    B. Latihan

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database AIRLINES yang anda buat pada Bab II

    2. Aktifkan database AIRLINES

    3. Membuat Store Procedure untuk menampilkan seluruh data pesawat

    4. Jalankan store procedure Sp_TampilkanDataPesawat

    5. Membuat Store Procedure untuk menampilkan data pesawat tertentu

    6. Jalankan store procedure Sp_TampilkanDataPesawatId

    USE AIRLINES

    CREATE PROC Sp_TampilkanDataPesawat AS SELECT * FROM pesawat

    Exec Sp_TampilkanDataPesawat

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

    Exec Sp_TampilkanDataPesawatId '01'

  • 26

    7. Membuat Store Procedure untuk menambahkan data pesawat

    8. Jalankan store procedure Sp_TambahDataPesawat

    9. Membuat Store Procedure untuk merubah data pesawat

    10. Jalankan store procedure Sp_UbahDataPesawat

    11. Membuat Store Procedure untuk menghapus data pesawat

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

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

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

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

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

  • 27

    12. Jalankan store procedure Sp_HapusDataPesawat

    C. Tugas

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II

    2. Buat store procedure untuk menampilkan semua data pegawai

    3. Buat store procedure untuk menampilkan data pegawai berdasar id_pegawai

    4. Buat store procedure untuk menambahkan data pegawai

    5. Buat store procedure untuk merubah data pegawai

    6. Buat store procedure untuk menghapus data pegawai

    7. Buat store procedure untuk menampilkan semua data departemen

    8. Buat store procedure untuk menampilkan data departemen berdasar id_dept

    9. Buat store procedure untuk menambahkan data departemen

    10. Buat store procedure untuk merubah data departemen

    11. Buat store procedure untuk menghapus data departemen

    12. Buat store procedure untuk menampilkan semua data departemen

    13. Buat store procedure untuk menampilkan data departemen berdasar id_dept

    14. Buat store procedure untuk menambahkan data departemen

    15. Buat store procedure untuk merubah data departemen

    16. Buat store procedure untuk menghapus data departemen

    17. Buat store procedure untuk menampilkan semua data departemen_pegawai

    18. Buat store procedure untuk menampilkan data departemen_pegawai berdasar id_dept

    19. Buat store procedure untuk menampilkan data departemen_pegawai berdasar id_pegawai

    20. Buat store procedure untuk menambahkan data departemen_pegawai

    21. Buat store procedure untuk merubah data departemen_pegawai

    22. Buat store procedure untuk menghapus data departemen_pegawai

    Daftar pustaka

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

    SqlServer 2000 Documentation

    exec Sp_HapusDataPesawat '16'

  • 28

    BAB V

    Function

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Function dalam

    database Indikator : - Mampu menjelaskan konsep Function dalam database - Mampu menjelaskan fungsi Function dalam database

    - Mampu mengimplementasikan Function dalam database

    A. Teori Singkat

    Function dalam bahasa pemrograman adalah sebuah subrutin yang digunakan untuk

    mengenkapsulasi logika yang sering digunakan. Dengan function, kode program yang membutuhkan logika

    seperti terdapat dalam function tidak perlu menuliskan ulang akan tetapi cukup memanggil function tersebut.

    Perbedaan function dengan store procedure adalah function memberikan nilai keluaran sementara store

    procedure tidak.

    Secara khusus dalam SQL Server 2000 terdapat 2 macam function :

    Built-in Functions

    Merupakan function yang disediakan untuk melakukan suatu operasi tertentu.

    Misal :

    - Aggregate Functions

    Melakukan operasi yang mengkombinasi beberapa nilai menjadi satu. Contoh : COUNT, SUM, MIN dan

    MAX

    - Cunfiguration Functions

    Merupakan Function dengan nilai skalar yang memberikan nilai konfigurasi setting.

    - Cursor Functions

    Memberikan informasi tentang status cursor

    - Date and time Functions

    Memanipulasi nilai datetime dan smalldatetime

    - Mathematical Functions

    Melakukan operasi trigonometri, geometri dan numerik

    - Meta data Functions

    Memberikan informasi tentang atribut dari database dan obyek database

    - Rowset Functions

    Memberikan rowset yang dapat digunakan pada tabel referensi dalam statement Transact-SQL

  • 29

    - Security Functions

    Memberikan informasi tentang users dan roles

    - String Functions

    Memanipulasi nilai char, varchar, nchar, nvarchar, binary dan varbinary

    - System Functions

    Operasi atau laporan pada bermacam level sistem dan obyek

    - System statistical Functions

    Memberikan informasi berkaitan dengan kemampuan SQL Server

    - Text and Image Functions

    Memanipulasi nilai text dan image

    User-defined Functions

    Merupakan function yang didefinisikan sendiri oleh pengguna. SQL Server 2000 mendukung 3 tipe user-

    defined functions yaitu :

    - Scalar Functions

    - Inline table-valued functions

    - Multistatement table

    Sintaks dasar untuk pembuatan Function :

    CREATE FUNCTION nama_function ( [ @parameter tipe_data [ ,...n ] ] ) RETURNS tipe_data_return [ AS ] BEGIN statement RETURN nilai-return END

    Deskripsi

    Nama_function

    Adalah nama fungsinya. Harus mengikuti aturan identifier, yaitu harus unik pada sebuah database,

    @parameter

    Adalah parameter yang didefiisikan oleh user. Boleh mendefinisikan lebih dari satu parameter. Paramater harus isi pada saat fungsi di eksekusi.

    Tipe_data_return

    Adalah tipe data dari hasil yang dikembalikan. Nilai yang dikembalikan harus memgacu ke tipe data yang didefinisikan sebelumnya.

  • 30

    Statement

    Adalah tempat menuliskan perintah-perintah SQL (Transact-SQL statement).

    B. Latihan

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database AIRLINES yang anda buat pada Bab II

    2. Membuat function yang memberikan nilai total pengeluaran untuk gaji pilot

    3. Membuat store procedure untuk menjalankan function yang telah dibuat

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

    C. Tugas

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II

    2. Buatlah function yang akan memberikan nilai jumlah pegawai yang bekerja pada lebih dari 1 departemen

    3. Buat store procedure untuk mencoba function pada soal no 2

    4. Buatlah function untuk menghitung rata-rata persentase_jam_kerja seoarang pegawai pada setiap departemen

    5. Buat store procedure untuk mencoba function pada soal no 4

    Daftar pustaka

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

    SqlServer 2000 Documentation

    USE AIRLINES

    create function Func_TotalPengeluaranGaji() returns numeric as

    begin declare @totgaji numeric select @totgaji = sum(gaji) from pilot return @totgaji end

    Create proc Sp_TotalPengeluaranGaji As begin

    declare @x numeric exec @x = func_totalpengeluarangaji print @x

    end

    exec Sp_TotalPengeluaranGaji

  • 31

    BAB VI

    Trigger

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Trigger dalam database Indikator : - Mampu menjelaskan konsep Trigger dalam database - Mampu menjelaskan fungsi Trigger dalam database

    - Mampu mengimplementasikan Trigger dalam database

    A. Teori Singkat

    Trigger adalah prosedur yang secara otomatis dijalankan sebagai respon terhadap perubahan yang telah

    ditentukan pada database, dan biasanya ditentukan oleh DBA. Sebuah database memiliki sekumpulan trigger

    yang telah digabung disebut active database. Deskripsi trigger terdiri dari tiga bagian :

    Event : Perubahan database yang mengaktifkan trigger

    Condition : Query atau tes yang berjalan ketika tigger sedang diaktifkan

    Action : Sebuah procedure yang dieksekusi ketika trigger diaktifkan dan persyaratannya

    bernilai benar.

    Trigger dapat dianggap sebagai daemon yang memonitor database, dan dieksekusi ketika database

    dimodifikasi dengan suatu cara yang sesuai dengan spesifikasi event. Pernyataan insert, delete atau update

    dapat mengaktifkan trigger, tanpa mempertimbangkan pengguna mana atau aplikasi mana yang meminta

    pernyataan pengaktifan. Pengguna bahkan mungkin tidak sadar bahwa trigger telah dieksekusi sebagai efek

    samping dari program mereka.

    Condition pada trigger dapat merupakan pernyataan true/false atau sebuah query. Query diinterpretasikan

    sebagai true jika set jawaban tidak kosong dan false jika query tidak memiliki jawaban. Jika bagian

    persyaratan mengevaluasi true, maka tindakan yang berhubungan dengan trigger dieksekusi.

    Sintaks dasar untuk pembuatan Trigger :

    CREATE TRIGGER nama_trigger ON table | view FOR INSERT | UPDATE | DELETE AS statement_sql [ ...n ]

    Deskripsi

    Nama_trigger

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

  • 32

    Table

    Tabel adalah tempat dimana trigger tersebut berapa dan dieksekusi. AS

    Adalah Aksi yang dilakikan oleh trigger tersebut.

    Statement_sql

    Adalah kondisi dan aksi perintah SQL yang ada saat Trigger itu dijalankan. n

    Variabel yang menyatakan bahwa anda bisa menyertakan banyak pernyataan Transact-SQL. B. Latihan

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database AIRLINES yang anda buat pada Bab II

    2. Tambahkan tabel Penerbangan dan Bonus pada Database AIRLINES

    PENERBANGAN

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Penerbangan INT Primary key, Identity(1,1)

    Tgl_Penerbangan DATETIME DEFAULT GETDATE()

    Kota_Asal CHAR 15

    Kota_Tujuan CHAR 15

    ** Id_Pesawat CHAR 2 FOREIGN KEY

    ** Id_Pilot CHAR 2 FOREIGN KEY

    Jml_Penumpang SMALLINT DEFAULT 0

    BONUS

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Bonus INT Primary key, Identity(1,1)

    Tgl_Bonus DATETIME

    ** Id_Pilot CHAR 2 FOREIGN KEY

    Nilai_Bonus NUMERIC DEFAULT 0

    3. Membuat tabel penerbangan

    4. Membuat tabel Bonus

    USE AIRLINES

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

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

  • 33

    5. Pada penerbangan. Pilot harus memiliki sertifikasi untuk pesawat yang dibawa. Buat Trigger untuk mengecek pilot apakah sudah tersertifikasi

    6. Setiap melakukan penerbangan. Pilot akan mendapatkan bonus sebesar : 0.005 x Gaji x Jml_Penumpang. Buat Trigger untuk menambahkan data bonus secara otomatis setiap ada penerbangan baru.

    7. Cek apakah trigger-trigger tersebut telah berfungsi dengan menambahkan data penerbangan.

    create trigger tr_cek_pilot_penerbangan on penerbangan for insert, update as declare @id_pesawat char(2) declare @id_pilot char(2) select @id_pesawat=id_pesawat, @id_pilot=id_pilot from inserted if (select count(*) from sertifikasi where id_pesawat=@id_pesawat and id_pilot=@id_pilot) = 0 begin RAISERROR ('Pilot belum sertifikasi untuk pesawat tsb', 16, 1) rollback transaction end

    create trigger tr_bonus_penerbangan on penerbangan for insert as declare @tgl datetime declare @id_pilot char(2) declare @jml_penumpang smallint declare @gaji numeric begin transaction select @tgl=Tgl_Penerbangan, @id_Pilot=Id_Pilot, @jml_Penumpang=Jml_Penumpang from inserted select @gaji=gaji from pilot where id_pilot=@id_pilot insert into bonus values (@tgl,@id_pilot,((0.005)*@gaji*@jml_penumpang)) if @@error 0 rollback transaction else commit transaction

    insert into penerbangan values (Getdate(),'JOG','JKT','04','01',9) go

    insert into penerbangan values (Getdate(),'JOG','JKT','01','01',9) go

  • 34

    C. Tugas

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II

    2. Tambahkan tabel Lembur dan Bonus pada Database PERUSAHAAN

    LEMBUR

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Lembur INT Primary key, Identity(1,1)

    Tgl_Lembur DATETIME DEFAULT GETDATE()

    ** Id_Pegawai CHAR 4 FOREIGN KEY

    Jml_Jam_Lembur SMALLINT DEFAULT 0

    BONUS

    Nama Kolom Tipe Data Lebar Not null Keterangan lain

    * Id_Bonus INT Primary key, Identity(1,1)

    Tgl_Bonus DATETIME

    ** Id_Pegawai CHAR 4 FOREIGN KEY

    Nilai_Bonus NUMERIC DEFAULT 0

    3. Buatlah trigger pada tabel lembur yang akan menambahkan secara otomatis data bonus ke tabel bonus.

    Nilai bonus untuk setiap kali lembur adalah 0,04 * jumlah_jam_lembur * gaji karyawan bersangkutan

    Daftar pustaka

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

    SqlServer 2000 Documentation

  • 35

    BAB VII

    Cursor

    Kompetensi Dasar : Mampu menjelaskan konsep dan menguasai implementasi Cursor dalam database Indikator : - Mampu menjelaskan konsep Cursor dalam database - Mampu menjelaskan fungsi Cursor dalam database

    - Mampu mengimplementasikan Cursor dalam database

    A. Teori Singkat

    Cursor merupakan suatu mekanisme yang memungkinkan untuk mendapatkan baris, satu per satu

    dari relasi. Cursor dapat dideklarasikan pada semua relasi atau semua query SQL (karena setiap query

    mengembalikan kumpulan baris). Sekali cursor dideklarasikan, kita dapat open (membuka) posisi cursor tepat

    sebelum baris pertama; fecth (mengambil) baris berikutnya; move (memindahkan) cursor ke baris berikutnya,

    ke baris setelah baris ke n berikutnya, ke baris pertama atau ke baris sebelumnya, dsb; atau close (menutup)

    cursor. Jadi cursor pada dasarnya memungkinkan untuk mendapatkan nilai baris dalam tabel dengan

    menempatkan cursor pada baris tertentu dan membaca isinya.

    Sintaks dasar untuk pembuatan Cursor :

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

    Deskripsi

    Nama_cursor

    Adalah nama variabel cursor yang didefinisikan.

    Statement_sql

    Adalah perintah dasar SELECT yang hasilnya akan diset sebagai cursor.

    B. Latihan

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database AIRLINES yang anda buat pada Bab II

    USE AIRLINES

  • 36

    2. Membuat store procedure dengan cursor di dalamnya

    3. Coba jalankan store procedure dibuat

    4. Membuat kembali store procedure dengan cursor di dalamnya

    5. Coba jalankan store procedure dibuat

    Apa perbedaaan sp_cur_pesawat dengan sp_cur_pesawat_desc

    create proc sp_cur_pesawat as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint

    declare pesawat_cur cursor for select * from pesawat

    open pesawat_cur fetch next from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah

    while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) fetch next from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

    Exec sp_cur_pesawat

    create proc sp_cur_pesawat_desc as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint

    declare pesawat_cur cursor scroll for select * from pesawat

    open pesawat_cur fetch last from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah

    while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) fetch prior from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

    Exec sp_cur_pesawat_desc

  • 37

    6. Membuat kembali store procedure dengan cursor di dalamnya

    7. Coba jalankan store procedure dibuat

    Pelajari ?

    C. Tugas

    Langkah-langkah (simpan semua script yang anda buat ) :

    1. Buka kembali Database PERUSAHAAN yang anda buat pada Tugas Bab II

    2. Buatlah sebuah store procedure dengan variabel cursor di dalamnya untuk menampilkan data departemen dalam bentuk list secara descending

    3. Buatlah sebuah store procedure dengan variabel cursor di dalamnya untuk menampilkan data id pegawai, nama pegawai serta nama departemen dimana saja dia bertugas dalam bentuk list secara ascending

    Daftar pustaka

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

    Raghu Ramakrishnan, Johannes Gehrke. Database Management System Third Edition. McGrawHill, 2003

    SqlServer 2000 Documentation

    create proc sp_cur_pesawat_update as declare @id_pesawat char(2) declare @nama char(30) declare @jarak_jelajah smallint

    declare pesawat_cur cursor scroll for select * from pesawat for update

    open pesawat_cur fetch last from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah

    while @@fetch_status=0 begin print @id_pesawat + ' - ' + rtrim(ltrim(@nama)) + ' - ' + rtrim(ltrim(convert(char(10),@jarak_jelajah))) if @id_pesawat='01' begin update pesawat set nama=nama + '_updated' where current of pesawat_cur end fetch prior from pesawat_cur into @id_pesawat, @nama, @jarak_jelajah end close pesawat_cur deallocate pesawat_cur

    Exec sp_cur_pesawat_update Exec sp_cur_pesawat

  • 38

    BAB VIII

    Pemrograman Client

    Kompetensi Dasar : Mampu menguasai pemrograman client dalam arsitektur aplikasi client server Indikator : - Mampu merancang form antarmuka - Mampu merancang koneksi ke database server

    - Mampu merancang proses manipulasi data di server dengan memanfaatkan proses pemrograman server yang telah dibuat

    - Mampu menerapkan aturan bisnis serta proses penanganan kesalahan pada aplikasi client

    A. Teori Singkat

    Seperti telah dipelajari sebelumnya. Dalam arsitektur aplikasi model client/server, pemrosesan pada

    sebuah aplikasi terjadi pada client dan server. Aplikasi client mengeluarkan permintaan ke database yang

    mengirimkan kembali data ke client-nya.

    Gambar 8.1

    Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari aplikasi yang

    berinteraksi dengan user, termasuk logika bisnis dan komunikasi dengan server database. Tipe-tipe tugas

    yang terjadi pada client adalah :

    Antarmuka pengguna

    Interaksi database

    Pengambilan dan modifikasi data

    Sejumlah aturan bisnis

    Penanganan kesalahan

    B. Latihan

    1. Buat project baru visual basic

    2. Tambahkan sebuah module pada project. Klik menu Project Add Module

  • 39

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

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

    Ubah property name module tsb menjadi modGeneral

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

    Klik ganda disini

    untuk mengaktifkan

    module

  • 40

    6. Tambahkan kode berikut didalam module :

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

    MsgBox "Koneksi gagal" + vbCr + Err.Description, vbCritical, "Error" End Sub

    7. Aktifkan Obyek Microsoft DataGrid Control 6.0 untuk kita gunakan. Klik Project Component Microsoft DataGrid Control 6.0 OK

  • 41

    8. Taruh obyek-obyek dan susun menjadi sbb :

    9. Atur property dari form dan object-object diatasnya dengan aturan sebagai berikut : Object Property Value

    Name frmPesawat Form Caption Data Pesawat Name lblIdPesawat 1 Caption ID Pesawat Name lblNamaPesawat 2 Caption Nama Pesawat Name lblJarakJelajah 3 Caption Jarak Jelajah Name txtIdPesawat Text (kosongkan !)

    4

    Locked True Name txtNamaPesawat Text (kosongkan !)

    5

    Locked True Name txtJarakJelajah Text (kosongkan !)

    6

    Locked True Name cmdBaru Caption Baru

    7

    Enabled True

    1

    16

    3

    4

    5

    6

    7

    8

    15

    2

    9 10 11 12 13 14

    17

  • 42

    Object Property Value

    Name cmdAwal Caption

    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