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: