Laporan Pemprograman Basis Data
“Transaksi”
Disusun oleh:
Meyla Yan Sari
IK – 3B
3.34.13.1.10
PROGAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
I.
Tujuan Instruksional Khusus
Setelah melakukan praktek ini, mahasiswa diharapkan mampu : 1. Mengetahui dan memahami apa itu Transaksi
2. Dapat membuat transaksi dan mengoprasikan transaksi
3. Dapat mengakses transaksi melalui program yang dibuat melalui visual studio melalui ado.net
II.
Dasar Teori
Pengenalan Transaksi
Transaksi merupakan sekumpulan operasi hanya dianggap berhasil jika seluruh operasi berhasil. Jika salah satu operasi yang dilakukan gagal maka transaksi dianggap gagal. Contoh umum dari transaksi adalah proses transfer uang. Dalam proses transfer terjadi 2 sub proses yaitu pengurangan saldo pada akun pengirim dan penambahan saldo di akun penerima. Jika salah satu proses tidak berjalan semestinya maka proses yang sudah dilakukan akan di ulang atau di gagalkan sehingga keadaan akun pengirim dan penerima tidak terdapat perubahan.
Penggunaan transaksi terdapat pada proses berikut :
1. Dalam proses batch dimana proses CRUD harus terjadi dalam 1 kesatuan proses.
2. Proses perubahan nilai pada tabel dimana perubahan harus konsisten terhadap tabel lain.
3. Ketika terjadi perubahan data pada 2 database atau lebih secara bersamaan. 4. Perubahan data secara bersamaan pada server yang berbeda.
Memahami ACID
Sebuah transaksi harus memenuhi standar ACID yaitu automicity, consistency, isolation, dan durability.
Automicity: sebuah transaksi harus merupakan proses tunggal yang berjalan bersamaan dalam sebuah proses, bukan proses yang berjalan secara terpisah. Hal ini untuk menjamin bahwa semua proses yang dilakukan berhasil. Ketika terdapat proses yang gagal maka proses tersebut akan dikembalikan ke keadaan sebelumnya.
Consistency: proses transaksi harus memiliki kemampuan untuk menjaga konsistensi database setelah transaksi dilakukan. Dimana ketika proses gagal, transaksi dapat mengembalikan keadaan database.
Isolation: transaksi lain harus terpisah dari proses transaksi lain. Ketika sebuah transaksi berjalan, maka transaksi tersebut tidak boleh mempengaruhi transaksi lain. Pengolahan data yang dilakukan pada sebuah transaksi harus terisolasi dari modifikasi transaksi lain.
Durability: perubahan data yang berhasil dilakukan bersifat permanen. Pada log transaksi harus terjaga, sehingga ketika terjadi kegagalan transaksi database dapat dikembalikan pada keadaan awal. Setiap transaksi yang dilakukan berhasil, sebuah baris dimasikkan ke log transaksi.
Tipe Transaksi
Terdapat tiga tipe utama transaksi, tiga tipe itu adalah Retrieval transaction: mengambil data yang ditampilkan
Update transaction: memasukkan record baru, menghapus, dan mengubah record yang ada.
Mixed tansaction: menggabungkan antara transaksi retrieval dan update.
Transaksi lokal SQL
Autocommit transactions: model transaksi dasar pada SQL server. Transaksi ini memliki tipe standar yaitu berhasil jika proses yang dilakukan berhasil seluruhnya, jika tidak maka transaksi digagalkan.
Explicit transactions: model transaksi yang waktu berjalan dan berheti diatur seluruhnya oleh pengguna. Ketika transaksi berjalan, transaksi lain yang berjalan dihentikan digantikan transaksi ini, ketika berhenti maka transaksi sebelunya akan berjalan kembali.
Implicit transactions: model transaksi ini akan mengubah database ketika transaksi dilakukan. Setelah mengubah database transaksi akan menguci perubahan sampai perintah commit atau rollback dijalankan. Jika perintah commit atau rollback belum diterima hingga pengguna memutus koneksi. Data akan otomatis dikembalikan.
Batch-scoped transactions: sebuah koneksi dapat dikategorikan pada mode batch-scoped ketika transaksi yang berjalan dengan disertai fitur MARS yang aktif. Fitur ini memungkinkan pada sebuah koneksi database menjalankan beberapa perintah bersamaan.
Transaksi terdistribusi SQL
Transaksi tipe ini adalah transaksi dengan melibatkan beberapa resource yang bekerja bersamaan. Resource-resource ini dikendalikan dengan transaction manager. Transaksi yang dijalankan oleh resource manager memiliki 2 fase proses, yaitu :
Prepare phase: ketika transaction manager menerima permintaan, manager mengirimkan perintah persiapan kepada semua resource manager. Lalu resource manager melakukan berbagai persiapan. Setelah selesai, resource manager mengirim informasi berhasil atau gagal proses persiapan.
III.
Alat dan Bahan
1. PC Processor minimal Pentium IV, RAM minimal 512 MB 2. Ms Sql Server
3. Ms Visual Studio
IV.
Langkah Kerja/Percobaan
1. Langkah pertama adalah membuka / menjalankan MS Sql Server management studio
2. lalu koneksikanMS Sql Server management studio dengan database server 3. Setelah itu klik new query dan masukkan kode dibawah ini simpan dengan
nama SQLQuery1.sql dan ambil gambar create procedure sp_Trans_Test
@newcustid nchar(5),
@newcompname nvarchar(40),
@oldcustid nchar(5)
as
declare @inserr int
declare @delerr int
declare @maxerr int
set @maxerr = 0
begin transaction
-- Add a customer
insert into customers (customerid, companyname)
values(@newcustid, @newcompname)
-- Save error number returned from Insert statement
set @inserr = @@error
if @inserr > @maxerr
-- Delete a customer
delete from customers
where customerid = @oldcustid
-- Save error number returned from Delete statement
set @delerr = @@error
if @delerr > @maxerr
set @maxerr = @delerr
-- If an error occurred, roll back
if @maxerr <> 0 begin
rollback
print 'Transaction rolled back'
end
else
begin
commit
print 'Transaction committed'
end
print 'INSERT error number:' + cast(@inserr as nvarchar(8))
print 'DELETE error number:' + cast(@delerr as nvarchar(8))
return @maxerr
4. klik new query dan masukkan kode dibawah ini simpan dengan nama SQLQuery2.sql dan ambil gambar
exec sp_Trans_Test 'a ', 'a ', 'z '
select * from customers
6. klik new query dan masukkan kode dibawah ini simpan dengan nama SQLQuery4.sql dan ambil gambar
exec sp_Trans_Test 'aa ', 'aa ', 'z ' select * from customers
7. klik new query dan masukkan kode dibawah ini simpan dengan nama SQLQuery5.sql dan ambil gambar
exec sp_Trans_Test 'a', 'a ', 'aa ' select * from Customers
8. klik new query dan masukkan kode dibawah ini simpan dengan nama SQLQuery6.sql dan ambil gambar
exec sp_Trans_Test 'aaa', 'aaa ', 'ALFKI'
9. klik new query dan masukkan kode dibawah ini simpan dengan nama SQLQuery7.sql dan ambil gambar
exec sp_Trans_Test 'a ', 'a ', 'ALFKI'
10. Untuk proses percobaan pengaksesan transaksi melalui ado.net dari program yang dibuat melalui ms visual studio adalah sebagai berikut:
b. Lalu rename form1.vb menjadi transaction.vb dan tambahkan komponen seperti berikut ini
Item properties
Button1 Text : execute
Label1 Text : New Customer ID
Label2 Text : New Company ID
Label3 Text : Old Customer ID
Textbox1 Text :
Textbox2 Text :
Textbox3 Text :
c. Kemudian tambahkan kode pada action event button click Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New SqlConnection
initial catalog=Northwind; integrated security=True"
Catch ex As System.Data.SqlClient.SqlException
sqltrans.Rollback()
ControlChars.Lf + ex.Message, "rollback transaction")
Catch ex As Exception
MessageBox.Show("System Error" + ControlChars.Lf + ex.Message, "Error")
Finally akademik melalui program berbasis .net, dengan ketentuan sebagai berikut :
a. Terdapat 3 tabel utama pada database yaitu :
1. Tabel mahasiswa dengan 3 entitas yaitu nim, nama, email dengan 5 data.
Membuat tabel mahasiswa : create table makul(
kode_mk varchar(5) primary key,
nama varchar(30),
sks varchar(1) )
Memasukkan data ke tabel mahasiswa :
insert into mahasiswa (nim, nama, email)
values ('3.34.12.0.01','ajeng yonafalah','ajengyona@gmail.com'), ('3.34.12.0.03','ayin nabhan ulinnuha','ayinnabhan@gmail.com'), ('3.34.12.0.08','dhimas yudangga adinugraha','dhimas.pedas@gmail.com')
2. Tabel nilai dengan 3 entitas yaitu nim, kode_mk, nilai dengan 9 data. Antara tabel nilai dengan tabel mahasiswa dan matakuliah memiliki kostrait.
create table nilai(
nim varchar(12) references mahasiswa(nim),
kode_mk varchar(5) references makul(kode_mk),
nilai varchar(1) )
Memasukkan data ke tabel nilai :
insert into nilai (nim, kode_mk, nilai)
3. Tabel makul dengan 3 entitas yaitu kode_mk, nama, sks dengan 3 data.
Membuat tabel makul : create table mahasiswa(
nim varchar(12) primary key,
nama varchar(50),
email varchar(30) )
Memasukkan data ke tabel makul :
insert into makul (kode_mk, nama, sks)
values ('mk001','pdb','3'),
b. Buat prosedur tersimpan untuk menjalankan transaksi secara langsung melalui mysql server.
create procedure sp_trans_mhs
@newnim nchar(12),
@newnama nchar(50),
@newemail nchar(30),
commit
print 'berhasil'
end
print 'kesalahan insert:' + cast(@ins as nvarchar(8))
print 'kesalahan delete:' + cast(@del as nvarchar(8))
return @err
c. Lakukan testing transaksi: 1. SQLQuery8.sql
exec sp_trans_mhs '3.34.12.0.06','desyana sholikhah',
'desy@gmail.com','3.34.12.0.02'
2. SQLQuery9.sql
exec sp_trans_mhs '3.34.12.0.06','desyana sholikhah',
'desy@gmail.com','3.34.12.0.02'
3. SQLQuery10.sql
exec sp_trans_mhs '3.34.12.0.06','desyana sholikhah',
'desy@gmail.com','3.34.12.0.01'
d. Buat aplikasi berbasis vb.net dengan rancangan gui sebagai berikut : 1. Rancangan gui sebagai berikut :
2. Tambahkan komponen sebagai berikut :
Item properties
Button1 Text : execute
Groupbox 1 Text : insert Groupbox 2 Text : delete
Label1 Text : nama
Label3 Text : email
3. Kemudian masukkan kode sebagai berikut : Imports System.Data.SqlClient
Public Class Form1
Dim conn As New SqlConnection
Dim adp As SqlDataAdapter
Dim ds As New DataSet
Private Sub Form1_Load(sender As Object, e As
EventArgs) Handles MyBase.Load
DataGridView1.DataSource = ds.Tables("tabel1")
End Sub
Private Sub Button1_Click(sender As Object, e As
EventArgs) Handles Button1.Click
Dim sqlins As String = "insert into mahasiswa (nim, nama, email) values(@nim, @nama, @email)"
Dim sqldel As String = "delete from mahasiswa where nim = @oldnim"
Try Catch ex As System.Data.SqlClient.SqlException
sqltrans.Rollback()
MessageBox.Show("transaksi gagal" +
ControlChars.Lf + ex.Message, "hapus transaksi") Catch ex As Exception
ControlChars.Lf + ex.Message, "Error") Finally
tampildata()
End Try
End Sub
V.
Lembar Kerja
No Praktik Hasil Program 1 SQLQuery1.sql
Query untuk membuat prosedur tersimpan berisi transaksi tambah dan hapus data tabel customer
2 SQLQuery2.sql Query untuk memasukkan data dan menghapus data melalui sp_trans_test
3 SQLQuery3.sql Query untuk menampilkan data tabel customers
Query untuk menjalankan traksaksi pada prosedur sp_trans_test
5 SQLQuery5.sql Query untuk tes transaksi ketika proses
penambahan data gagal
6 SQLQuery6.sql Query untuk tes transaksi ketika proses hapus data gagal
7 SQLQuery7.sql
Query untuk tes transaksi ketika proses tambah dan hapus data gagal
Gbr2: Pada gbr1: proses
transaksi yang dilakukan berhasil