Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian pengubahan data.
DBMS yang kita gunakan harus dapat menjamin bahwa setiap satuan transaksi harus dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian karena hal itu akan dapat menyebabkan adanya inkonsistensi basis data.
Karakteristik Transaksi
-Atomicity (Atomik), yaitu dimana operasi-operasi didalam suatu transaksi harus dapat dikerjakan semua atau tidak dikerjakan sama sekali.
-Consistentcy (Konsisten), dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap konsisten setelah sebuah transaksi berakhir.
-Isolated (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 bisa dimulai dan harus bisa berakhir.
-Durability (Daya Tahan), di mana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya system mati/ down.
Status Transaksi
-Active (Aktif), yang merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
-Partially Committed (Berhasil Sebagian), yaitu keadaan yang dicapai oleh suatu transaksi tepat pada saat operasi/ instruksi terakhir dalam transaksi selesai dikerjakan.
-Failed (Gagal), yang merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
-Aborted (Batal), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan.
-Committed (Berhasil Sempurna), keadaan di mana transaksi telah dinyatakan berhasil dikerjakan seluruhnya
Transaksi mengakses data dengan operasi:
-read(X), mentransfer data item X dari database ke local buffer yang dimiliki oleh transaksi yang mengeksekusi operasi pembacaan (read)
-write(X), mentransfer data item X dari local buffer dari aksi transaksi yang mengeksekusi perintah penulisan kembali ke database (write)
Contoh Implementasi Transaksi
misal transaksi transfer uang sebesar $50 dari rekening A ke rekening B, maka transaksi tersebut dapat di definisikan sebagai berikut:
•read(A)
•A:=A-50
•write(A)
•read(B)
•B:=B+50
•write(B)