Sabtu, 15 Juni 2013

Studi Kasus "Pemesanan Tiket Bioskop Secara Online"

STUDI KASUS DAN PEMBAHASAN
PEMESANAN TIKET BIOSKOP SECARA ONLINE

Dunia perfilman semakin hari semakin mengalami perkembangan yang sangat pesat. Mulai dari sound effect, gambar, dan lain sebagainya. Kini, industri perfilman mulai didukung pula oleh teknologi yang semakin canggih. Dalam pembahasan kali ini, kita akan membahas tentang database tiket bioskop. Dimana di dalamnya menyipan data-data tiket sesuai dengan film yang akan tayang. Pada tahap selanjutnya dapat pula diketahui hasil penjualan tiket tersebut.
Sebagai contoh, pada suatu bioskop di kota Bandung, sebutlah namanya adalah bioskop twelve. Bioskop tersebut menerima layanan pemesanan tiket lewat online dan pembayaran dilakukan melalui bank. Pada kasus ini, objek-objek yang diperlukan dalam database antara lain: pembeli, film, kategori, studio, tiket, jadwal, memesan dan kursi. Dimana objek-objek tersebut kemudian dijadikan suatu entitas dalam pembuatan ERD (Entitiy Relationship Diagram).
            Pembeli mencakup id pembeli, nama, jenis kelamin, no kontak, email, dan alamat. Film mencakup id film, judul, dan kategori. Kategori mencakup id kategori, nama kategori. Studio mencakup kode studio dan nama studio. Kemudian tiket mencakup kode tiket, harga, stok. Selanjutnya jadwal yang mencakup id jadwal, id film, kode studio, tanggal, jam mulai, dan jam selesai. Lalu ada memesan yang mencakup id pesan, id pembeli, kode tiket, banyak, total harga, dan tanggal pesan. Dan yang terkahir kursi yang mencakup id kursi dan nama. Cakupan yang ada di dalam entitas tersebut kemudian akan dijadikan atribut.
            Setelah diketahui entitas dan atribut, maka selanjutnya kita menentukan relasi antar entitas dari semua entitas yang telah tersedia. Tentulah di sini tidak semua entitas saling berhubungan langsung antara satu dengan lainnya. Tapi antar satu entitas dengan entitas yang lainnya menunjukan adanya hubungan. Pemodelan seperti tersebut disebut dengan diagram entitas atau sering kita sebut dengan ERD (Entitiy Relationship Diagram). Berikut di bawah ini merupakan ERD dari pemesanan tiket online di suatu bioskop yang dalam hal ini adalah bioskop twelve:



            Setelah pembuatan ERD selesai, selanjutnya kita lanjut ke langkah selanjutnya, yaitu melakukan integritas data yang salah satunya adalah constraint. Dari sekian banyaknya atribut yang terdapat pada setiap entitas yang telah ditentukan, setiap atribut tentunya harus memiliki type data yang sesuai untuk digunakan dalam pemrogramannya.
            Berikut kita buat struktur tabelnya terlebih dahulu kemudian kita juga tentukan constraintnya, dimana constraint ini salah satu untuk menjaga data (integritas data):
Tabel pemesan
Nama kolom
Tipe data
Keterangan
id_pemesan
nama
no_kontak
email
alamat
jk
int
varchar2(25)
number
varchar2(30)
varchar2(50)
varchar2(10)
Primary key
Constraint:
constraint pk_id_pemesan primary key (id_pemesan),
constraint check_jk check(jk = 'laki-laki' or jk = 'perempuan')

Tabel film
Nama kolom
Tipe data
Keterangan
id_film
judul
kategori
int
varchar2(40)
varchar2(5)
Primary key
Constraint:
constraint pk_id_film primary key (id_film)

Tabel kategori
Nama kolom
Tipe data
Keterangan
id_kategori
nama
varchar2(5)
varchar2(20)
Primary key
Constraint:
constraint pk_id_kategori primary key (id_kategori)

Tabel studio
Nama kolom
Tipe data
Keterangan
kode_studio
nama_studio
id_kursi
varchar2(5)
varchar2(20)
int
Primary key
Constraint:
constraint pk_kode_studio primary key (kode_studio),
constraint fk_id_kursi foreign key(id_kursi) references kursi(id_kursi)

Tabel tiket
Nama kolom
Tipe data
Keterangan
kode_tiket
stok
harga
id_kursi
varchar2(6)
int
float
int
Primary key
Constraint:
constraint pk_kode_tiket primary key (kode_tiket),
constraint check_stok check(stok<=40),
constraint check_stok check(harga>0),
constraint fk_id_kursi foreign key(id_kursi) references kursi(id_kursi)

Tabel kursi
Nama kolom
Tipe data
Keterangan
id_kursi
nama_kursi
int
varchar2(20)
Primary key
Constraint:
constraint pk_id_kursi primary key (id_kursi)

Tabel jadwal
Nama kolom
Tipe data
Keterangan
id_jadwal
tanggal
jam_mulai
jam_selesai
id_film
id_pemesan
int
date
varchar2(8)
varchar2(8)
int
int
Primary key
Constraint:
constraint pk_id_jadwal primary key (id_jadwal),
constraint fk_id_pemesan foreign key(id_pemesan) references pemesan(id_pemesan),
constraint fk_id_film foreign key(id_film) references film(id_film),
constraint check_jam_mulai check(jam_mulai<jam_selesai)

Tabel memesan
Nama kolom
Tipe data
Keterangan
id_memesan
tanggal_pesan
banyak
total_harga
int
date
int
float
Primary key
Constraint:
constraint pk_id_memesan primary key (id_memesan),
constraint check_banyak check(banyak<6),
constraint check_total_harga check(total_harga>0),


Selanjutnya adalah dibuatlah program untuk pemesanan tiket bioskop online tersebut. Namun, setelah kita membuat programnya maka kita harus benar-benar memperhatikan proses transaksi di dalamnya. Apa itu transaksi? Transaksi  merupakan  suatu  aksi/perbuatan  yang  dilakukan  oleh  program  bertujuan  untuk mengakses atau mengubah data yang terdapat di database. Data yang baik adalah data yang tidak hilang dan tidak rusak. Maka dari itu, transaksi ini harus dilindungi dari kehilangan dan kerusakan data. Setiap instruksi yang dimasukkan harus dijamin dikerjakan semua untuk menjamin konsistensi dari data itu sendiri. Ada 2 operasi penting yang ada dalam transaksi, yaitu:
o   Commit : ini menandakan bahwa transaksi sudah selesai
o   Rollback : ini menandakan bahwa transaksi yang dilakukan gagal, dan harus diulang.
Dalam penggunaannya, sistem pemesanan tiket online ini tentulah digunakan leh banyak orang secara bersamaan. Maka ada 3 hal yang harus dicegah dalam transaksi basis data:
o   Dirty Read : Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
o   Nonrepeatable Read : Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
o   Phantom Read : Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Untuk mendukung keberhasilan proses transaksi tersebut, maka di dalamnya diperlukan back end programming. Yang termasuk di dalamnya adalah stored procedure, function dan trigger. Misal dalam kasus di atas, dapat digunakan sebuah trigger untuk mengurangi jumlah tiket apabila tiket pada suatu jadwal sudah dipesan oleh beberapa pembeli. Dan selanjutnya akan terus berkurang apabila tiket tersebut terus dipesan. Sebenarnya tak hanya itu yang dapat dilakukan oleh trigger, tapi trigger ini juga dapat memodifikasi data, modifikasi data yang dilakukan pada tabel yaitu berupa perintah Insert, Update dan Delete.

Setelah pemesan selesai melakukan pemesanan secara online, tentu pemesan harus melakukan pembayaran terhadap tiket yang telah dipesan tersebut. Pemesan melakukan pembayaran melalui bank dengan cara menyebutkan/memasukkan kode transaksi yang telah didapat dari proses pemesanan tadi. Pemesan selanjutnya mengirim uang ke rekening bioskop sejumlah harga yang harus dibayar. Lalu bagaimana bisa data bank dan bioskop dapat dicocokan? Tentulah bisa, di sinilah peran XML untuk menghubungkan kedua database yang berbeda itu. Dan kode transaksi yang dimasukkan tadi sebagai kunci penghubungnya. Setelah itu, kita harus benar-benar menjaga keamanannya untuk menjauhkan database dari ancaman, serangan baik itu sengaja maupun tidak. Dan kita juga harus menjauhkannya dari orang yang tidak memiliki kewenangan terhadap database tersebut.

Sumber:
Basis Data, Fathansyah

Kunjungi:


4 komentar: