Rabu, 05 November 2014

Tentang E-Ticketing Kereta Api

Zaman sekarang, seiring berjalannya waktu, tehknologi semakin kesini semakin maju tanpa terasa sedikitpun. Seperti contoh dalam pembelian tiket, kita sering lihat di Bioskop-Bioskop, nonton konser, ataupun lainnya kita untuk membeli tiketnya tuh harus ngantri panjang-panjang sampai belain nunggu berjam-jam untuk mendapatkan satu tiket. Tapi seiring teknologi maju, sekarang pun kita ga usah ngantri panjang-panjang buat dapetin tiket tersebut. Dengan sistem E-Ticketing, kita ga perluu datengin tempat tersebut buat dapetin tiket, kita tinggal online aja terus mesen tiketnya dan berees deh.. :)

Pada kesempatan kali ini saya akan menjelaskan apa itu E-Ticketing dan Sistem E-Ticketing pada Kereta Api

Apa itu E-Ticketing?

E-Ticketing atau electronic ticketing adalah suatu cara mendokumentasikan proses penjualan dari semua aktfitas perjalanan pelanggan tanpa harus mengeluarkan dokumen baik secara fisik ataupun paper tiket.

Manfaat E-Ticketing

  • Buruh Simpanan
  • Aman
  • Pengiriman yang sangat instant
  • Periklanan

Bagaimana Cara Kerja Sistem E-Ticketing pada kereta Api

Untuk lebih jelasnya kita lihat langsung lihat flow chart E-Ticketing Kereta Api
Jadi dalam alur tersebut, kita masuk ke website http://kereta-api.co.id/ untuk melakukan transaksi pemsanan tiket kereta api secara online. Lalu dalam halaman web tersebut kita masuk untuk memilih menu mana yg akan merujuk ke pemesanan tiket. Setelah itu, kita masuk untuk mengecek jadwal pemberangkatan kereta api dan kelas mana yang akan kita pilih. Jika tersedia, maka kita akan membooking jadwal tersebut, jika tidak kita langsung keluar. Setelah itu, kita mengisi data diri untuk melakukan pemesanan. Setelah itu kita mendapat no. reservasi untuk melakukan pembayaran, bisa melalui ATM ataupun Minimarket yang tersedia di  http://kereta-api.co.id/ . Setelah kita melakukan pembayaran, kita akan mendapat notifikasi e-mail dari website tersebut.

Bagaimana Alur Data E-Ticketing Kereta Api?

Untuk lebih jelasnya kita lihat ERD Kereta Api

 Dalam ERD ini di buat 3 entitas yang dibutuhkan untuk menyimpan semua informasi dari sistem e-ticketing. Terdapat 4 buah entitas yaitu user, kereta, gerbong dan relasi yang menjadi entitasi di tiket.
A.      Pemesan
Dalam user terdapat atribut berupa id _pemesan sebagai primary key, nama pengguna sebagai penanda tiap orang dalam pemesan tersebut. Alamat untuk menaruh asal dari pemesan tersebut dan alamat e-mail untuk notifikasi pembayaran.

B.      Kereta
Dalam entitas kereta terdapat id_kereta sebagai primary key. Serta entitas tujuan untuk menentukan tujuan dari masing-masing kereta dan id_gerbong sebagai foreign key dari entitas gerbong untuk menentukan jumlah kursi masih tersedia atau tidak.

C.      Gerbong
Dalam entitas ini terdapat id_gerbong sebagai primary key. Serta jumlah kursi yang tersedia dari setiap gerbongnya.
D.      Tiket
Tiket adalah relasi yang menjadi entitas karena kardinalitasnya banyak ke banyak. Dalam tiket terdapa id_tiket sebagai primary key. Serta atribut jadwal yang menentukan kapan kereta yang dipesan berangkat. Kelas untuk menentukan kelas ekonomi/ bisnis dan lain-lain. Foreign key terdapat pada id_kereta, id_user. No kursi diambil dari id_gerbong dan urutan ke berapa kursi di gerbong tersebut.

Lalu bagaimana cara kerja SQL nya?

 

                Dari ERD diatas kita dapat membuat sql sebagai berikut untuk table-tablenya :
create table user(
                id_pemesan varchar2(10) primary key not null,
                nama varchar2(20) not null,
                alamat varchar2(30) not null,
                alamat_email varchar2(20) not null
);

create table kereta (
                id_kereta varchar2(10) primary key not null,
                tujuan varchar2(20) not null,
                id_gerbong varchar2(10) not null,
                constraint "k_g" foreign key (id_gerbong) references gerbong(id_gerbong)
);

create table tiket (
                id_tiket varchar2 (10) primary key not null,
                id_pemesan varchar2(10) not null,
                id_kereta varchar2(10) not null,
                jadwal timestamp not null,
                kelas varchar2(10) not null,
                no_kursi number(5) not null,
                constraint "t_u" foreign key (id_user) references user(id_user) on delete set null,
                constraint "t_k" foreign key (id_kereta) references kereta(id_kereta) on delete set null
);

create table gerbong(
                id_gerbong varchar2(10) primary key not null,
                jumlah_kursi number (10) not null
);

                Tringger dibutuhkan untuk mengatur jumlah kursi apakah masih tersedia atau tidak, tringgernya adalah sebagai berikut :

create or replace trigger kursi
after
insert on delete or update
                on tiket
for each row
begin
                if inserting then
                                update  gerbong set jumlah_kursi=jumlah_kursi-1 where no_kursi:=new.no_kursi;
                end if;                  
                if deleting then
                                update  gerbong set jumlah_kursi=jumlah_kursi+1 where no_kursi:=old.no_kursi;
                end if;
                if updating then
                                update  gerbong set jumlah_kursi=jumlah_kursi-1 where no_kursi:=new.no_kursi;
                                update  gerbong set jumlah_kursi=jumlah_kursi+1 where no_kursi:=old.no_kursi;
                end if;
end;
/

Jika dalam tiket no kursi ditambah maka jumlah kursi dalam gerbong akan berkurang. Berkurang karena sebelumnya id_gerbong sudah di foreign key dengan kereta. 

Referensi Budi Laksono Putro, S.SI, M.T.