Modul Praktikum Sistem Basis Data 2010

dokumen-dokumen yang mirip
Manajemen Transaksi. Praktikum Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom

Kusnawi, S.Kom, M.Eng

Administrasi Basis Data. Transaksi dan Lock. Yoannita

Pertemuan IX MANAJEMEN TRANSAKSI

MODUL 10 TRANSACTION

Transaction & Conccurency

Nama : Parisaktiana Fathonah NIM : Kelas : Prak Sistem Basis Data TI-2 B malam

Manajemen Transaksi A. Konsep Transaksi 1. Membuat Tabel account dengan type Innodb

Manajemen Transaksi. Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom

Perintah MySQL Lanjutan

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

MANAJEMEN TRANSAKSI. Alif Finandhita, S.Kom

Concurrency Control Semester Ganjil 2014 Fak. Teknik Jurusan Teknik Informatika. Caca E. Supriana, S.Si.,MT. Si

PERINTAH DASAR MySQL

SISTEM BASIS DATA 2. WAHYU PRATAMA, S.Kom., MMSI.

Manajemen Transaksi (Penjadwalan & Kontrol konkurensi)

BAB V IMPLEMENTASI DAN PENGUJIAN

Transaksi. by: Ahmad Syauqi Ahsan

TUGAS PRAKTIKUM SISTEM BASIS DATA

Distributed System. 8 Management Transaksi. Genap 2011/2012. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.

MySQL Databases. Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP. Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

PERTEMUAN 10 PEMBUATAN TABEL

Apa itu DDL & DML? Semua perintah SQL dibagi dalam 2 kategori besar sesuai fungsinya, yaitu :

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

TUGAS I PRAKTIKUM SISTEM BASIS DATA. Nama: Krisna Pandu Wibowo( )

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

DATA DEFINITION LANGUAGE

LAPORAN PRAKTIKUM SISTEM BASIS DATA

Manajemen Transaksi. Sistem Basis Data. Gentisya Tri Mardiani, S.Kom

TUGAS PRAKTIKUM SISTEM BASIS DATA

Praktikum Basis Data (Database Server MySQL) Bekerja Dengan Tabel

VIEW : Tabel Virtual VIEW 5/29/2017

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

MySQL AL AZHAR COMPUTER CLUB

Database Management System. Program yang memungkinkan item-item dalam suatu database disusun, diolah dan diperbaharui

TUGAS PRAKTIKUM SISTEM BASIS DATA

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

BAB IV ANALISIS DAN PERANCANGAN

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL.

BAB 5 MANIPULASI DATA

PRAKTIKUM SISTEM BASISDATA. Disusun Oleh : Anggi Nurcahyo ( )

MODUL PRAKTIKUM BASIS DATA TEKNIK INFORMATIKA UIN SUNAN KALIJAGA YOGYAKARTA 2011 PENGENALAN DATABASE MYSQL

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

Transaksi dan Data Integrity

Pengenalan Structured Query Language

IMPLEMENTASI CONCURENCY CONTROL UNTUK APLIKASI MULTIUSER MENGGUNAKAN DATABASE SQL SERVER. Wiwi Widayani STMIK AMIKOM Yogyakarta

MODUL VIII BASIS DATA TRANSACTION

BAB XIV ADMINISTRASI MYSQL

PRAKTIKUM SISTEM BASISDATA

Praktikum MONITORING AND RESOLVING LOCK CONFLICTS. Tujuan :

Pertemuan 12 Pengenalan Structured Query Language

BAB IV IMPLEMENTASI DAN PENGUJIAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal.

Pemrograman Web. Koneksi dan Manipulasi Basis Data. Adam Hendra Brata

BAB II PEMBUATAN DAN MANAJEMEN TABLE

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

IMPLEMENTASI CONCURENCY CONTROL UNTUK APLIKASI MULTIUSER MENGGUNAKAN DATABASE SQL SERVER Wiwi Widayani

Distributed System. 9 Concurrency Control. Genap 2011/2012. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.

STUPID LOGIC PROGRAMMING II

PENGENALAN SINTAKS DASAR DALAM MySQL

B a s i s D a t a - 1. SQL Operasi DDL. Data Definition Laguange. Copyright 2005 PENS-ITS

Database Systems: Lab. Actvity 3: Fungsi-Fungsi MySql Advance. Pendahuluan. Pendahuluan

Untuk mengakses MySQL dengan mode text dari Console (Command Prompt = Microsoft Windows), dapat dilakukan dengan cara : 1.

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

LAPORAN PRAKTIKUM SISTEM BASIS DATA

Modul 2. Database Menggunakan Primary Key, Unique, Auto Increment, Alter-Add dan Alter-Drop. Disusun oleh. Sri Siska Wirdaniyati JURUSAN STATISTIKA

PRAKTIKUM SISTEM BASIS DATA

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

RANGKUMAN PHP dan MYSQL

BAB 4 IMPLEMENTASI DAN EVALUASI

KapitaSelekta. (KBKI82127, 2 sks) Materi : Pengenalan MySQL

BAB 1 PENDAHULUAN Latar Belakang Masalah

Untung Subagyo

LAMPIRAN E FORMAT TABEL MYSQL

User Access MI2154 SQL LANJUT.

Tahap Instalasi PostgreSQL di Windows

Pertemuan VI F U N C T I O N

Konsep Dasar Basis Data. Oleh: Harnan Malik Abdullah, ST., MSc. Program Pendidikan Vokasi Universitas Brawijaya 2017

Transaction dan Trigger. M. Saefudin SKom, MMSI

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle.

Pemrograman Web 1. Akademi Manajemen Informatika dan Komputer AMIK Royal Kisaran. Modul 2 Revisi 2. Tahun Akademik 2012/2013

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Transaksi Semester Ganjil 2014 Fak. Teknik Jurusan Teknik Informatika. Caca E. Supriana, S.Si.,MT. Si

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML)

Gambar Layar pertama untuk pemecahan masalah Lost Update

Basis Data II. Pertemuan Ke-8 (Views & Users Authorisation) Noor Ifada S1 Teknik Informatika - Unijoyo 1

Transaction & Conccurency

P - 7 Pembahasan UTS PSIK V

BAB V CURSOR AND RESULT SETS

MySQL J A M K E T I G A

STRUCTURE QUERY LANGUAGE DDL & DML

Kontrak Kuliah. View dan Index. Edi Sugiarto, S.Kom, M.Kom


PHP & MYSQL. Universitas Komputer Indonesia 2004 Taryana. S Login ke dalam Linux Contoh :

Contoh SQL Constraint

Transkripsi:

BAB XI MENGELOLA TRANSAKSI Dalam penggunaan database, sering terjadi pengaksesan sebuah database oleh beberapa user atau beberapa program pada saat yang bersamaan, oleh karena itu dibutuhkan pengaturan untuk menjaga konsistensi pengaksesan data, sehingga tidak akan terjadi katidakkonsistensian data. Transaksi dapat digunakan untuk menjaga konsistensi dan keakuratan data. Transaksi digunakan untuk mengatur hak user pada saat mengakses database. Transaksi memastikan bahwa suatu proses yang dijalankan terhadap database dilaksanakan seluruhnya atau tidak sama sekali. Jika terjadi suatu kesalahan, maka proses harus di roll back dan kondisi database kembali seperti sebelum dimulainya proses tersebut, sebaliknya jika proses berhasil, maka seluruh data dimasukkan ke dalam database. Selain itu, transaksi juga memastikan hanya boleh ada satu user yang sedang mengakses penulisan terhadap database, jika satu user sedang melakukan proses penulisan, maka user lain dibatasi dalam pengaksesan database, dengan begitu, maka data akan konsisten. Hanya saja, tidak semua mesin mendukung proses pengelolaan transaksi. Dua mesin yang sering digunakan adalah MyISAM dan InnoDB. MyISAM lebih sering digunakan, tapi mesin ini tidak mendukung pengelolaan transaksi, sehingga untuk menggunakan pengelolaan transaksi, kita perlu menggunakan mesin InnoDB. Sebagai contoh: CREATE TABLE novel ( idnovel smallint unsigned auto_increment primary key, judulnovel varchar(50) not null, pengarangnovel varchar(50) ) ENGINE=INNODB; Keterangan mesin yang digunakan, di letakkan pada akhir pendeskripsian tabel yang dibuat dan menggunakan mesin tersebut. Berikut ini merupakan gambar skema pelaksanaan pengelolaan transaksi: START TRANSACTION Database pada saat awal proses (NULL, Twilight, Stephanie Mayer ), (NULL, New Moont, Stephanie Proses berhasil dilaksanakan COMMIT; 1 Alif Finandhita, S.Kom Proses Gagal ROLLBACK; Database akhir proses setelah

XI.1 Statement memulai Transaksi Untuk memulai sebuah transaksi, syntax yang digunakan adalah START TRANSACTION, syntax ini diletakkan pada awal proses yang akan dilaksanakan menggunakan Transaksi. XI.2 Statement COMMIT Transaksi Statement COMMIT digunakan untuk mengakhiri suatu proses dan menyimpan semua perubahan data yang terjadi dalam proses. Berikut ini merupakan contoh penggunaan COMMIT: START TRANSACTION; (NULL,'Twilight','Stephanie Mayer'), (NULL,'New Moon','Stephanie Mayer'); COMMIT; Hasilnya adalah: +---------+------------+-----------------+ +---------+------------+-----------------+ +---------+------------+-----------------+ XI.3 Statement ROLLBACK Transaksi Seperti statement COMMIT, statement ROLLBACK juga digunakan untuk mengakhiri suatu proses, hanya saja, jika kita menggunakan ROLLBACK, maka semua proses yang dilakukan tidak akan disimpan, dan kondisi di kembalikan seperti pada awal proses. Berikut ini adalah contoh penggunaan ROLLBACK: Statement memulai Transaksi Proses Pengisian data ke dalam tabel novel. Statement mengcommit semua proses yang terjadi di dalam Trasaksi. 2 Alif Finandhita, S.Kom

START TRANSACTION; (NULL,'Eclipse','Stephanie Mayer'), (NULL,'Breaking Mayer'); ROLLBACK; Down','Stephanie Jika sebelum pernyataan ROLLBACK kita menamplkna isi dari tabel novel adalah sbb: +---------+---------------+-----------------+ idnovel judulnovel pengarangnovel +---------+---------------+-----------------+ 2 New Moon Stephanie Mayer Statement memulai Transaksi Proses Pengisian data ke dalam tabel novel. Statement mengembalikan semua proses yang terjadi di dalam Trasaksi ke kondisi awal. Isi tabel novel setelah pernyataan ROLLBACK: +---------+------------+-----------------+ idnovel judulnovel pengarangnovel +---------+------------+-----------------+ Isi tabel novel kembali pada kondisi sebelum proses transaksi. XI.4 Statement yang dapat mengakhiri Transaksi Terdapat beberapa statement yang jika kita letakkan di dalam proses yang menggunakan Transaksi dapat secara otomatis menghentikan Transaksi, kemudian pernyataan tersebut dijalankan. Jika hal ini terjadi, maka semua proses dalam Transaksi akan di COMMIT dan tidak akan bisa di ROLLBACK. Pernyataan-pernyataan tersebut antara lain: Pernyataan Keterangan ALTER TABLE Mengubah definisi tabel CREATE INDEX Membuat indeks di dalam tabel DROP DATABASE Menghapus database dari mysql server DROP INDEX Menghapus indeks didalam tabel DROP TABLE Menghapus tabel dari database LOCK TABLES Menghalangi akses bersamaan pada tabel RENAME TABLES Mengubah nama tabel SET AUTOCOMMIT=1 Menyetel autocommit ke dalam mode on START TRANSACTION Memulai Transaksi baru TRUNCATE TABLE Menghapus data dari tabel UNLOCK TABLES Menghilangkan LOCK TABLES 3 Alif Finandhita, S.Kom

XI.5 SAVEPOINT Jika dalam sebuah proses yang panjang, kita memerlukan beberapa titik untuk melakukan penyimpanan data. Titik itu dapat kita sebut SAVEPOINT. Beriku ini merupakan skema peletakkan SAVEPOINT didalam Transaksi: START TRANSACTION; Database pada awal transaksi. (NULL, Laskar Pelangi, Andrea Hirata ); Eksekusi berhasil Eksekusi Gagal ROLLBACK; SAVEPOINT sp1; Database SAVEPOINT sp1 (NULL, Sang Pemimpi, Andrea Hirata ); Eksekusi berhasil Eksekusi Gagal ROLLBACK TO SAVEPOINT sp1; COMMIT; COMMIT; Database pada akhir transaksi. XI.5.1 Pernyataan SAVEPOINT Untuk menyatakan savepoint, pernyataannya adalah: SAVEPOINT <nama savepoint>; Dengan menggunakan pernyataan savepoint, maka semua proses yang terjadi sebelum pernyataan ini akan di commit, kemudian melanjutkan ke proses selanjutnya, tentunya pernyataan ini harus didalam Transaksi. XI.5.2 Mengembalikan proses ke titik savepoint Untuk mengembalikan kondisi database ke savepoint, maka digunakan pernyataan: ROLLBACK TO SAVEPOINT <nama savepoint>; Dengan ini, maka semua proses setelah savepoint sampai pernyataan ini di remove dan kondisi database kembali seperti pada saat stelah savepoint. Berikut ini contoh penggunaan SAVEPOINT dan ROLLBACK TO SAVEPOINT: 4 Alif Finandhita, S.Kom

START TRANSACTION; (NULL,'Eclipse','Stephanie Mayer'), (NULL,'Breaking Down','Stephanie Mayer'); SAVEPOINT save1; +---------+---------------+-----------------+ +---------+---------------+-----------------+ 4 Breaking Down Stephanie Mayer +---------+---------------+-----------------+ Memulai Transaksi Mengisi data kedalam Database sebanyak 2 data SAVEPOINT dengan nama save1 Isi database setelah SAVEPOINT, terdapat 4 data. (NULL,'Edensor','Andrea Hirata'), (NULL,'Mariamah Karpov','Andrea Hirata'); +---------+-----------------+-----------------+ +---------+-----------------+-----------------+ 4 Breaking Down Stephanie Mayer 5 Edensor Andrea Hirata 6 Mariamah Karpov Andrea Hirata +---------+-----------------+-----------------+ ROLLBACK TO SAVEPOINT save1; (NULL,'Laskar Pelangi','Andrea Hirata'), (NULL,'Sang Pemimpi','Andrea Hirata'); COMMIT; 4 Breaking Down Stephanie Mayer 7 Laskar Pelangi Andrea Hirata 8 Sang Pemimpi Andrea Hirata Mengisi data kedalam Database sebanyak 2 data Isi database setelah pengisian, jumlah data menjadi 6 data Mengembalikan database ke kondisi pada saat SAVEPOINT, hasil database akan sama seperti pada saat setelah pernyataan SAVEPOINT, yaitu Mengisi data kedalam Database sebanyak 2 data Seluruh proses Transaksi di-commit. Terjadi proses penambahan 2 data. Database pada akhir Transaksi. Terdapat 6 data. 5 Alif Finandhita, S.Kom

XI.6 Mengatur mode AUTOCOMMIT Pada dasarnya, tanpa adanya pernyataan COMMIT, setiap proses yang terjadi langsung di tulis ke dalam tabel. Untuk itu, kita perlu mengatur autocommit untuk tidak melakukan penulisan secara otomatis, sehingga proses yang terjadi tidak akan langsung ditulis ke tabel hingga ada pernyataan COMMIT. Untuk mengatur autocommit, pernyataan yang digunakan adalah: Pernyataan Keterangan SET AUTOCOMMIT=0 Untuk mematikan autocommit(off) SET AUTOCOMMIT=1 Untuk menyalakan autocommit(on) @@AUTOCOMMIT; Untuk melihat mode autocommit yang sedang digunakan Berikut ini contoh pengaturan autocommit: 6 Alif Finandhita, S.Kom

SET AUTOCOMMIT=0; SELECT @@AUTOCOMMIT; @@AUTOCOMMIT 0 (NULL,'Edensor','Andrea Hirata'); 4 Breaking Down Stephanie Mayer 7 Laskar Pelangi Andrea Hirata 8 Sang Pemimpi Andrea Hirata 9 Edensor Andrea Hirata exit; AUTOCOMMIT diatur dalam mode 0 atau OFF Select untuk melihat mode autocommit yang sedang digunakan. Memasukkan data baru ke dalam tabel novel. Data dalam database setelah di tambah. Jumlah ada menjadi 7 data Keluar dari mysql console use contoh2; Database changed 4 Breaking Down Stephanie Mayer 7 Laskar Pelangi Andrea Hirata 8 Sang Pemimpi Andrea Hirata select @@autocommit; @@autocommit 1 Stelah keluar dari mysql console, kemudian buka kembali mysql console, gunakan database, dan lihat isi data pada tabel novel. Data pada tabel novel kembali menjadi 6 data, hasil eksekusi dari proses sebelumnya tidak disimpan kedalam database. Mode utama dari autocommit adalah 1 atau ON, jadi ketika mysql console baru dijalankan, maka mode kembali menjadi 1/ON 7 Alif Finandhita, S.Kom

XI.7 Mengatur Pemisahan Level Transaksi Selain dapat mengatur autocommit, mysql juga mengizinkan pengaturan pemisahan level Transaksi dengan menggunakan perintah sebagai berikut: SET [GLOBAL SESSION] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE} Minimal yang harus diatur adalah keyword SET TRANSACTION ISOLATION LEVEL dan salah satu dari 4 level pemisahan (yang terdapat dalam kurung kurawal) Jika keywords yang dipilih adalah GLOBAL, maka pernyataan transaksi akan diaplikasikan pada semua koneksi baru terhadap database, tetapi tidak berlaku pada koneksi yang sedang digunakan. Jika keywords SESSION yang dipilih, maka pernyataan transaksi dilaksanakan pada semua transaksi baru yang terjadi pada koneksi database yang sedang digunakan, tetapi tidak berlaku untuk koneksi database lain. Jika keyword tidak diatur, maka pernyataan transaksi hanya berlaku pada transaksi berikutnya. 4 Level Pemisahan Transaksi: Level Pemisahan Transaksi Keterangan READ UNCOMMITED Mengizinkan dirty reads, nonrepeatable reads dan phantom read. Level ini lebih baik hanya digunakan pada database dengan data yang umum. READ COMMITED Hanya mengizinkan nonrepeatable read dan phantom read, tetapi tidak untuk dirty read. REPEATABLE READ Hanya mengizinkan phantom read,, merupakan level pemisahan transaksi utama pada mesin InnoDB. SERIALIZABLE Tidak mengizinkan adanya dirty read, nonrepeatable read dan phantom read. Jika level ini digunakan, maka database di kunci dari transaksi lain dan berjalan secara berurutan. Hanya level ini yang tersedia untuk tabel BDB. Penjelasan: Dirty Reads Merupakan masalah yang terjadi ketika terdapat beberapa transaksi yang mencoba untuk mengakses satu tabel pada waktu yang sama ataupun hampir bersamaan. Nonrepeatable Reads Merupakan masalah yang terjadi ketika ada sebuah transaksi yang sedang mengakses pembacaan terhadap suatu database, kemudian ketika proses tersebut masih berlangsung, ada proses lain yang mengupdate isi database. Hal ini menyebabkan ada data yang tidak terbaca oleh transaksi yang sedang membaca. 8 Alif Finandhita, S.Kom

Phantom Reads Merupakan masalah yang terjadi ketika transaksi pertama membaca database, kemudian transaksi kedua memprbaharui database, kemudian transaksi pertama membaca kembali database, maka transaksi pertama akan mendapatkan hasil yang berbeda. Contoh Penggunaan SET TRANSACTION: SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION diatur hanya untuk session yang sedang berlangsung. Level yang digunakan adalah READ COMMITTED, yaitu mengizinkan adanya nonrepeatable reads dan phantom reads. select @@global.tx_isolation; +-----------------------+ @@global.tx_isolation +-----------------------+ REPEATABLE-READ +-----------------------+ Merupakan syntax yang digunakan untuk mengetahui pengaturan level isolasi yang umum digunakan, yaitu REPEATABLE-READ select @@tx_isolation; +----------------+ @@tx_isolation +----------------+ READ-COMMITTED +----------------+ Merupakan syntax yang digunakan untuk mengetahui pengaturan level isolasi yang sedang digunakan, yaitu READ -COMMITTED XI.8 Penguncian Tabel yang tidak menggunakan Transaksi Transaksi hanya dapat digunakan pada tabel yang menggunakan mesin INNODB dan BDB tabel. Untuk melakukan penguncian atau pengaturan agar tidak terjadi dirty reads, nonrepeatable reads dan phantom reads ada syntax yang dapat digunakan, yaitu: LOCK {TABLE TABL ES} <table name> [AS <alias>] {READ [LOCAL] [LOW_PRIORITY] WRITE} [{, <table name> [AS <alias>] {READ [LOCAL] [LOW_PRIORITY] WRITE}}...] 9 Alif Finandhita, S.Kom

Contohnya: LOCK TABLE novel READ; Mengunci sebuah tabel yaitu tabel novel, Penguncian di atur agar tabel novel hanya dapat di baca tanpa bisa di update oleh transaksi lain. LOCK TABLES novel READ, peminjaman WRITE; Mengunci beberapa tabel, yaitu tabel novel dan peminjaman. Tabel novel di kunci untuk tetap dapat dibaca oleh transaksi lain, Tabel peminjaman tidak dapat di akses sama sekali oleh Transaksi lain. XI.9 Pelepasan Kunci terhadap Tabel Jika tebel telah di kunci, maka setelah proses selesai kunci harus dilepaskan agar transaksi lain bisa mengakses tabel. Syntax yang digunakan adalah: UNLOCK [TABLE/TABLES] Jika penguncian yang dilakukan terhadap satu table, maka pelepasan kunci menggunakan UNLOCK TABLE Sedangkan jika yang dikunci adalah banyak tabel, maka pelepasan penguncian menggunakan syntax UNLOCK TABLES 10 Alif Finandhita, S.Kom