Uploaded by User106841

Laporan Akhir [3]

advertisement
BAB I
TUJUAN DAN LANDASAN TEORI
A. TUJUAN
a. Mahasiswa memahami manfaat Manajemen Transaksi.
b. Mahasiswa dapat membuat Manajemen Transaksi.
B. LANDASAN TEORI
Transaksi adalah sebuah aksi atau serangkaian aksi, yang dilakukan oleh
user atau aplikasi yang mengakses atau mengubah isi dari database atau
transaksi juga bisa diartikan sebagai pengeksekusian sebuah program/aplikasi
yang melakukan pengaksesan dan perubahan basis data. Namun apabila kita
ingin melakukan transaksi data setelah melakukan transksi haruslah tetap
konsisten dan DBMS yang kita gunakan juga harus menjamin bahwa setiap
transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak
boleh ada transaksi yang hanya dikerjakan sebagian, karena dapat
menyebabkan
inkonsistensi
basis
data.
Misalkan
ketika
kita
melakukan pengubahan, penambahan atau penghapusan suatu tabel maka
akan berdampak pada isi tabel tersebut dan pada saat eksekusi transaksi
terjadi kagagalan, maka akan menimbulkan ketidak konsistenan integrasi
antar tabel. Namun Untuk menjamin agar integritas dapat tetap terpelihara
maka setiap transaksi harus memiliki sifat-sifat:
1.
Atomik, dimana semua operasi dalam transaksi dapat dikerjakan
seluruhnya atau tidak sama sekali.
2.
Konsisten, dimana eksekusi transaksi secara tunggal harus dapat
menjamin data tetap konsisten setelah transaksi berakhir.
3.
Terisolasi, jika pada sebuah sistem basis data terdapat sejumlah transaksi
yang dilaksanakan secara bersamaan, maka semua transaksi yang
dilaksanakan pada saat yang bersamaan tersebut harus dapat dimulai dan
bisa berakhir.
1
2
4.
Bertahan, dimana perubahan data yang terjadi setelah sebuah transaksi
berakhir dengan baik, harus dapat bertahan bahkan jika seandainya
sistem menjadi mati.
Terhentinya suatu transaksi tidak selalu diakibatkan oleh kegagalan insidental
baik dari perangkat keras (crash) ataupun kemacetan sistem operasi
(hang). Tapi lebih sering terjadi karena user sengaja menghentikan transaksi
atau karena penghentian transaksi oleh DBMS akibat adanya kondisi tak
diinginkan, seperti deadlock atau timeout.
Sebuah transaksi dapat menghasilkan dua kemungkinan:
a.
Jika
dilaksanakan
lengkap
seluruhnya,
transaksi
tersebut
telah
di commit dan basis data mencapai keadaan konsisten baru.
b.
Jika transaksi tidak sukses, maka transaksi dibatalkan dan basis data
dikembalikan ke keadaan konsisten sebelumnya (rollback).
Transaksi yang sudah di commit tidak dapat dibatalkan lagi. Jika ada
kesalahan, maka harus dilakukan transaksi lain yang membalik dampak
transaksi sebelumnya
Ketika transaksi dilaksanakan/ dilakukan dari awal sampai akhir maka
terdapat beberapa kemungkinan yang akan terjadi, yaitu :
1.
Aktif (Active), yang merupakan status awal (initial state) sebuah
transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
2.
Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai
transaksi tepat pada saat operasi terakhir dalam transaksi selesai
dikerjakan.
3.
Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi
terhenti pengeksekusiannya sebelum tuntas sama sekali.
4.
Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap
tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan
mengembalikan semua data yang telah diubah ke nilai-nilai semula.
(yang menjadi tanggung jawab DBMS).
5.
Berhasil Sempurna (Committed), keadaan dimana transaksi telah
dinyatakan berhasil dikerjakan seluruhnya dan basis data telah
merefleksikan perubahan-perubahan yang memang diinginkan transaksi.
3
Ketika sebuah transaksi mulai dikerjakan, maka transaksi itu berada dalam
status aktif. Jika terjadi penghentian sebelum operasi berakhir, maka
transaksi segera beralih ke status gagal/failed. Namun, bila keseluruhan
transaksi selesai dikerjakan, maka transaksi itu berada pada status berhasil
sebagian/partially committed, dimana perubahan-perubahan data masih
berada
di
dalam
memori
utama
yang
bersifat volatile/tidak
permanen. Transaksi dalam status ini masih mungkin untuk pindah ke status
failed, karena ada pembatalan transaksi baik sengaja maupun tidak. Jika tidak
beralih ke status failed, maka nilai-nilai data yang ada di memori utama akan
direkam ke dalam disk yang bersifat permanen. Begitu proses perekaman
selesai, maka transaksi beralih ke status committed.
Sementara itu, transaksi yang berada pada status failed, maka DBMS harus
menjalan proses rollback. Proses tersebut dapat berupa:
1) Mengulangi pelaksanaan transaksi / restart, yang dilakukan pada
transaksi yang failed akbiat kemacetan perangkat keras ataupun
perangkat lunak dan bukannya penghentian transaksi secara sengaja oleh
user.
2) Mematikan transaksi / kill, yang dilakukan untuk transaksi yang
dihentikan secara sengaja oleh user atau akibat adanya kesalahan lojik
dalam penulisan aplikasi.
Sistem basis data harus menjamin ACID (Atomicity, Consistency, Isolation
and
Durability)
pada
setiap
transaksi.
Sebuah
transaksi
mungkin
membutuhkan beberapa query, yang membaca atau menulis informasi dalam
basis data. Ketika hal ini terjadi, harus dipastikan tidak ada query yang
terlewat yang akan digunakan pada basis data. Terdapat dua pilihan transaksi
yang bisa dilakukan, yaitu commit transaction atau rollback transaction.
Namun sebelumnya harus didahului dengan perintah begin transaction atau
start transaction.
4
BAB II
PEMBAHASAN
Pembahasan ini dibuat menggunakan database restoran pada modul pertama.
Berikut ini penjelasannya :
1.
Lengkapi prosedur hitung total dan hitung total pembayaran dengan
manajemen transaksi.
Gambar 2.1. Procedure Hitung Total dengan Manajemen Transaksi
Penjelasan :
Prosedur diatas bernama HitungTotal2 dan memiliki 3 parameter yaitu
nfaktur hrga dan Bnyak. Baris perintah ketiga yaitu declare exit handler for
sqlexception,
sqlwarning,not
found
rollback
, digunakan
untuk
mendeklarasikan fungsi exception handling bila terjadi error, warning dan
proses-proses yang abnormal maka akan di lakukan perintah rollback, atau
jika terdapat eksepsi atau warning maka kondisi database akan dikembalikan
ke kondisi semula. rollback artinya jika terjadi eror pada query dalam sebuah
transaksi, maka semua perubahan yang terjadi sebelumnya akan diabaikan
dan query selanjutnya juga akan diabaikan atau artinya rollback akan
mengabaikan semua perubahan. Baris selanjutnya yaitu Start transaction;,
adalah perintah yang digunakan untuk memulai transaksi. Isi transaksi adalah
UPDATE Pembayaran SET JumlahPemesanan=Bnyak, total=hrga*Bnyak
WHERE Nofaktur=nfaktur;, yang merupakan perintah untuk meng-update
tabel pembayaran dengan field total telah dihitung. Commit;, adalah sebuah
perintah digunakan untuk menyimpan perubah secara fisik ke database.
5
Untuk
memanggil
procedure
diatas
digunakan
perintah
CALL
HitungTotal2('F1','20000','15'); , dimana F1 adalah nomor faktur, 20000
merupakan harga yang baru, dan 15 merupakan jumlah pemesanan yang baru.
Tampilan outputnya yaitu :
Gambar 2.2. Output HitungTotal
2. Membuat Prosedur Menghitung diskon. Diskon akan diberikan 5% jika
ada pengunjung yang berbelanja atau membeli makan lebih dari 200.000.
Gambar 2.3. Procedure Menampilkan NoMeja yang Paling Banyak
Ditempati
Penjelasan:
Prosedur ini bernama HitungDiskon dan memiliki parameter yaitu
nfaktur dengan tipe data varchar(4). Sama seperti langkah pertama,
prosedur ini diberikan deklarasi untuk exception handling pada baris
ketiga prosedur yang digunakan untuk menangani bila terjadi error,
warning dan proses-proses yang abnormal maka akan di lakukan perintah
rollback, atau jika terdapat eksepsi atau warning maka kondisi database
akan dikembalikan ke kondisi semula. Dalam transaksi diberikan perintah
update
pembayaran
set
diskon='0'
where
total<'200000'
and
nofaktur=nfaktur; untuk mengupdate tabel pembayaran dimana tidak akan
diberikan diskon jika total belanja kurang dari 200.000 dan juga perintah
update pembayaran set diskon=((total*5)/100) where total>='200000' and
nofaktur=nfaktur; yang berfungsi untuk update pada tabel pembayaran.
Tetapi perintah ini digunakan jika ada pengunjung yang berbelanja lebih
dari 200.000 maka akan diberikan diskon 5%.
6
Untuk
memanggil
procedure
digunakan
perintah
CALL
HitungDiskon('F1'); , dimana F1 adalah nomor faktur yang akan dilakukan
penghitungan diskon.
Tampilan outputnya yaitu :
Gambar 2.4. HitungDiskon
3. Membuat procedure hitung total pembayaran.
Gambar 2.5. HitungTotalPembayaran
Penjelasan:
Prosedur ini bernama HitungTotalPembayaran dan memiliki
parameter yaitu nfaktur dengan tipe data VARCHAR(4). Prosedur ini juga
menggunakan handling rollback untuk mengembalikan database ke
kondisi semula bila terjadi kesalahan. Baris perintah UPDATE
pembayaran
SET
TotalPembayaran=Total-Diskon
WHERE
NoFaktur=nfaktur;, ini merupakan perintah update pada tabel pembayaran
yang digunakan pada field Total Pembayaran. Dimana untuk dapat
mengetahui total pemabayaran maka akan dilakukan penghitungan sesuai
dengan operasi pengurangan, yaitu total harga makanan dikurangi dengan
diskon yang diberikan.
Untuk
memanggil
procedure
digunakan
perintah
CALL
HitungTotalPembayaran('F1');, dimana F1 merupakan nomor faktur yang
akan dilakukan update total pembayaran.
Tampilan outputnya yaitu :
Gambar 2.6. HitungTotalpembayaran
7
4. Membuat procedure untuk menampilkan menu paling sering dipesan dan
menu yang memiliki harga paling mahal.
Gambar 2.7. Menu yang paling sering Dipesan
Penjelasan:
Prosedur ini
bernama
MenuLaris.
Sama
seperti
prosedur
sebelumnya , prosedur ini juga menggunakan handler rollback untuk
menangani bila terjadi error, warning dan proses-proses yang abnormal
atau jika terdapat eksepsi atau warning maka kondisi database akan
dikembalikan ke kondisi semula. Baris perintah SELECT NamaMenu,
SUM(Banyak) AS 'JumlahPemesanan' FROM detailpesan, ini merupakan
perintah untuk menampilkan nama menu dari tabel detail pesan dengan
nama field yang baru Jumlah Pemesanan. SUM(Banyak) digunakan untuk
menjumlah field banyak untuk mengetahui nama menu yang paling sering
dipesan pada tabel detail pesan. Baris perintah GROUP BY NamaMenu
ORDER BY JumlahPemesanan DESC LIMIT 1;, merupakan lanjutan
perintah sebelumnya. Artinya adalah akan ditampilkan field nama menu
pada field yang baru yaitu Jumlah Pemesanan dengan diurutkan dari yang
paling besar ke kecil. Namun yang ditampilkan hanya 1 record saja atau
dengan kata lain nama menu yang paling sering dipesan.
Untuk memanggil procedure diatas digunakan perintah CALL
MenuLaris();
Tampilan outputnya yaitu :
Gambar 2.8. Menu paling sering Dipesan
8
Gambar 2.9. Menu dengan Harga paling Mahal
Penjelasan :
Prosedur ini bernama MenuMahal. Memiliki jenis handling
rollback seperti prosedur lainnya yang akan mengembalikan database ke
kondisi
semula
bila
terjadi
error.
Baris
perintah
SELECT
NamaMenu,Harga FROM menu GROUP BY harga DESC LIMIT 1;, ini
merupakan perintah untuk menampilkan nama menu dan harga dari tabel
menu. Dimana tampilannya akan diurutkan dari yang paling besar ke kecil,
tetapi hanya akan ditampilkan 1 record saja atau hanya akan ditampilkan
nama menu dengan harga yang paling mahal.
Untuk memanggil procedure diatas digunakan perintah CALL
MenuMahal();
Tampilan outputnya yaitu :
Gambar 2.10. Menu paling Mahal
BAB IV
KESIMPULAN
Berdasarakan hasil praktikum yang telah dilakukan untuk menangani bila
terjadi error, warning dan proses-proses yang abnormal maka dapat di lakukan
perintah ROLLBACK, atau jika terdapat eksepsi atau warning maka kondisi
database akan dikembalikan ke kondisi semula. Perintah Commit digunakan untuk
menyimpan perubah secara fisik ke database.
9
DAFTAR PUSTAKA
Dendi,Riyadi . 2009 . MySQL Transaction.
http://dendieisme.blogspot.co.id/2009/04/mysql-transaction.html (Diakses 6
November 2017)
10
LAMPIRAN
1. HitungTotal
Gambar 5.1. HitungTotal
2. HitungTotalPembayaran
Gambar 5.2. HitungTotalPembayaran
3. HitungDiskon
Gambar 5.3. HitungDiskon
4. Menu paling Laris
Gambar 5.4. Menu paling Laris
5. Menu paling Mahal
Gambar 5.5. Menu paling Mahal
11
Download