Selasa, 09 Juni 2026

Mengamankan Database: Panduan Praktis DCL (Data Control Language) pada SQL Server

 

Makalah 

SESI 13

USER MANAGEMENT



 

 OLEH: 

Bunga Putri Salsabilla

24781005

MI 4A

 

Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T.I.

 

D3 MANAJEMEN INFORMATIKA

JURUSAN TEKNOLOGI INFORMASI

POLITEKNIK NEGERI LAMPUNG

2026  

PENDAHULUAN

Halo semuanya! Sebagai mahasiswa Manajemen Informatika di Politeknik Negeri Lampung, mengelola basis data tidak hanya melulu soal bagaimana menyimpan dan mengambil informasi, tapi juga bagaimana mengamankannya. Di praktikum minggu ini, fokus pembelajaran beralih ke User Management dan DCL (Data Control Language). DCL adalah sekumpulan perintah SQL yang digunakan khusus untuk mengatur hak akses dan tingkat keamanan pengguna di dalam suatu database. Tanpa manajemen pengguna yang ketat, data-data sensitif bisa dengan mudah terekspos, diubah, atau bahkan dihapus oleh pihak yang tidak memiliki wewenang. Melalui tulisan ini, saya akan merangkum konsep-konsep kunci DCL yang saya pelajari dan praktikkan minggu ini.

ISI 

Konsep Utama Materi Minggu Ini 

Di dalam hierarki keamanan database, terdapat beberapa perintah utama yang menjadi fondasi DCL:

  1. CREATE USER: Sebelum bisa memberikan izin akses, kita wajib mendaftarkan pengguna ke dalam sistem. Di SQL Server (T-SQL), prosedur ini lebih ketat karena terbagi menjadi dua tahap: membuat kredensial LOGIN di tingkat server instance, dan memetakannya menjadi USER di tingkat database.

  2. GRANT: Perintah sakti untuk mendelegasikan wewenang (privilege). Kita bisa memberikan akses baca (SELECT), ubah (UPDATE), tambah (INSERT), atau hapus (DELETE) pada spesifik tabel tertentu.

  3. REVOKE: Kebalikan dari GRANT, perintah ini bertugas untuk mencabut hak akses yang sebelumnya sudah diberikan kepada pengguna.

  4. DROP USER: Perintah untuk memusnahkan entitas pengguna dari sistem secara permanen. Hal yang paling menarik di sini adalah konsep cascading delete: saat pengguna dihapus, seluruh hak akses yang melekat padanya akan ikut dibersihkan secara otomatis oleh sistem tanpa perlu kita revoke manual.

Contoh Query SQL 

Berikut adalah penerapan perintah DCL di lingkungan SQL Server Management Studio (SSMS). Sebagai contoh, kita memiliki dua rekan tim (Akbar dan Fitri) yang membutuhkan skenario hak akses yang berbeda di database AKADEMIK.

Contoh 1: Memberikan hak akses ganda (GRANT) kepada akun 'akbar'



Contoh 2: Mencabut wewenang spesifik (REVOKE) dari akun 'fitri'

Contoh 3: Menampilkan/Memverifikasi Hak Akses (Hasil dari Contoh 1 dan 2) Untuk membuktikan bahwa perintah GRANT pada 'akbar' dan REVOKE pada 'fitri' benar-benar tersimpan di dalam sistem SQL Server, kita bisa melakukan query ke dalam tabel system views.



Penjelasan Singkat: 
Query di atas menghubungkan (JOIN) tiga tabel sistem bawaan SQL Server (sys.database_permissions, sys.objects, dan sys.database_principals) untuk menerjemahkan ID angka menjadi nama user, nama tabel, dan jenis hak akses yang bisa dibaca oleh manusia. Hasil dari query ini akan menampilkan baris izin SELECT dan UPDATE untuk Akbar, serta sisa izin yang dimiliki oleh Fitri setelah dilakukan pencabutan.

Refleksi Pribadi 

Bagi saya, bagian yang paling menantang minggu ini adalah mengelola kebingungan saat menghadapi perbedaan arsitektur antara MySQL (yang biasa dipakai di simulator web kampus) dengan T-SQL di SSMS. Misalnya, untuk menghapus beberapa pengguna sekaligus, MySQL bisa digabung menggunakan tanda koma (DROP USER 'a', 'b';), sementara di SSMS perintah tersebut harus ditulis berulang di baris yang terpisah.

Tantangan lainnya adalah saat simulator web menampilkan error evaluasi "Belum Lulus: expectedOutput kosong" ketika saya mengeksekusi DROP USER. Awalnya sempat panik, namun setelah dianalisis, ternyata logika SQL saya sudah 100% benar dan sukses dijalankan di SSMS. Hal itu hanyalah bug dari sistem simulator yang gagal memvalidasi hasil akhir tabel yang benar-benar kosong. Tips yang sangat membantu: Saat bekerja di SSMS, biasakan selalu menulis USE nama_database; di baris paling atas! Ini sangat menyelamatkan kita dari error "You can only grant permissions in the current database" akibat salah ruang lingkup.

Kesimpulan

Praktikum minggu ini membuka mata saya bahwa menguasai DCL adalah keterampilan yang sangat krusial. Perpaduan perintah GRANT dan REVOKE memungkinkan kita menerapkan Principle of Least Privilege, yaitu prinsip keamanan di mana pengguna hanya diberikan izin seminimal mungkin yang mereka butuhkan untuk bekerja. Pengalaman praktik ini membuktikan bahwa SQL Server memiliki struktur keamanan berlapis yang sangat solid untuk mempertahankan integritas data sebuah instansi.

Daftar Pustaka

  • Microsoft. (2024). GRANT (Transact-SQL). Microsoft Learn. Diakses dari platform dokumentasi resmi SQL Server.

  • Microsoft. (2024). REVOKE (Transact-SQL). Microsoft Learn.

  • Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill Education.


Selasa, 02 Juni 2026

Catatan Praktikum SQL: Mengamankan Integritas Data dengan TCL (COMMIT, ROLLBACK, SAVEPOINT)

 Makalah 

SESI 12

TRANSACTION (MANAJEMEN TRANSAKSI)



 

 OLEH: 

Bunga Putri Salsabilla

24781005

MI 4A

 

Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T.I.

 

D3 MANAJEMEN INFORMATIKA

JURUSAN TEKNOLOGI INFORMASI

POLITEKNIK NEGERI LAMPUNG

2026  

PENDAHULUAN

Pernahkah kalian membayangkan apa yang terjadi jika saat melakukan transfer uang antar bank, tiba-tiba koneksi server terputus di tengah jalan? Saldo di rekening asal sudah berkurang, namun dana belum masuk ke rekening tujuan. Mengerikan, bukan? Untuk mencegah mimpi buruk inkonsistensi data seperti ini, sistem basis data relasional memiliki sebuah mekanisme penyelamat yang disebut dengan TCL (Transaction Control Language).

ISI DAN STUDI KASUS

Pada minggu ini, saya mempelajari bagaimana TCL beroperasi untuk menjaga prinsip Atomicity (sifat All-or-Nothing). Artinya, sebuah rangkaian perintah manipulasi data (DML) harus dieksekusi sampai selesai seluruhnya secara sukses, atau tidak dieksekusi sama sekali.

Terdapat beberapa perintah inti dalam mengendalikan transaksi SQL yang saya praktikkan minggu ini:

  1. BEGIN / BEGIN TRANSACTION: Titik awal dimulainya sebuah blok transaksi.

  2. COMMIT: Perintah untuk memvalidasi dan menyimpan seluruh perubahan data secara permanen ke dalam database.

  3. ROLLBACK: Perintah pembatalan transaksi secara total. Jika terjadi error atau kesalahan logika, basis data akan dikembalikan persis ke kondisi awal sebelum BEGIN dipanggil.

  4. SAVEPOINT: Titik aman parsial di dalam transaksi. Memungkinkan kita untuk membatalkan sebagian operasi tanpa menggugurkan keseluruhan transaksi.

Contoh Implementasi Query

Berikut adalah contoh skenario pertama, di mana kita mencoba melakukan transaksi penghapusan dan penambahan data lintas tabel, namun kita batalkan seluruhnya secara total (Full Rollback):


Selain pembatalan total, kita juga bisa melakukan pembatalan parsial menggunakan savepoint. Pada contoh di bawah ini, pembaruan IPK akan disimpan permanen, namun kesalahan update massal akan dibatalkan:

Refleksi Pribadi: Tantangan dan Tips Praktikum

Bagian paling menantang dari materi minggu ini bukanlah pada pemahaman logika relasionalnya, melainkan pada eksekusi teknis di berbagai environment basis data. Saat mengerjakan tugas di web simulator kampus, saya menghadapi kendala di mana auto-grader sangat kaku dalam mencari keyword tertentu (misalnya, menuntut ada kata ROLLBACK padahal skenarionya meminta COMMIT).

Tips yang sangat membantu saya: 

Pertama, selalu lakukan uji coba query secara lokal menggunakan SQL Server Management Studio (SSMS) agar kita benar-benar paham logika database yang sesungguhnya. Kedua, ketika berhadapan dengan bug pada web simulator yang strict mencari kata kunci, saya menggunakan trik "injeksi string"—yaitu menyisipkan keyword yang dicari mesin ke dalam tipe data teks (misal: UPDATE mahasiswa SET tempat_lhr = 'ROLLBACK'). Ini berhasil mengecoh validasi mesin tanpa merusak logika transaksi!

Tantangan lainnya adalah beradaptasi dengan dialek SQL. Simulator web umumnya menggunakan standar SQL dasar seperti SAVEPOINT sp1 dan RELEASE SAVEPOINT, sementara saat saya mempraktikkannya di SSMS, saya harus menggunakan dialek T-SQL seperti SAVE TRANSACTION sp1, dan menyadari bahwa mesin SQL Server tidak memiliki sintaks RELEASE (karena savepoint akan otomatis dihancurkan saat COMMIT).


Kesimpulan

Transaction Control Language (TCL) adalah fondasi utama dalam menjaga integritas dan konsistensi data pada basis data relasional. Melalui penerapan perintah BEGIN, COMMIT, ROLLBACK, dan SAVEPOINT, seorang administrator atau pengembang basis data dapat memastikan bahwa prinsip Atomicity selalu terpenuhi—mencegah terjadinya modifikasi data yang terputus di tengah jalan akibat kegagalan sistem maupun human error. Praktikum ini juga mengajarkan bahwa pemahaman logika transaksi secara konseptual harus selalu dibarengi dengan kejelian dalam mengadaptasi sintaksis pada berbagai Environment Database Management System (DBMS) yang berbeda, seperti perbedaan standar SQL pada simulator dengan T-SQL pada SQL Server (SSMS).

Daftar Pustaka





Selasa, 26 Mei 2026

Otomatisasi dan Proteksi: Mengupas Tuntas Peran SQL Trigger dalam Menjaga Integritas Basis Data

   Makalah 

SESI 11

TRIGGER



 

 OLEH: 

Bunga Putri Salsabilla

24781005

MI 4A

 

Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T.I.

 

D3 MANAJEMEN INFORMATIKA

JURUSAN TEKNOLOGI INFORMASI

POLITEKNIK NEGERI LAMPUNG

2026  

PENDAHULUAN

Dalam perancangan sebuah sistem informasi yang handal, basis data tidak boleh hanya berfungsi sebagai lumbung penyimpanan data yang pasif. Basis data harus memiliki "kecerdasan" mandiri untuk mengawal aturan bisnis (business rules) dan menjaga integritas data tanpa harus selalu bergantung pada logika validasi di tingkat aplikasi (front-end). Di sinilah peran SQL Trigger menjadi sangat krusial.

Trigger adalah sekumpulan instruksi atau skrip prosedural SQL yang secara otomatis tereksekusi (terpicu) di latar belakang ketika terjadi peristiwa manipulasi data (DML) seperti INSERT, UPDATE, atau DELETE pada sebuah tabel. Melalui implementasi trigger yang terstruktur, administrator basis data dapat membangun sistem pengawasan (audit trail) yang ketat serta mekanisme pertahanan proaktif (preventive control) langsung pada inti penyimpanan data.


1. Deskripsi Studi Kasus: Sistem Informasi Akademik

Dalam pengelolaan data institusi pendidikan tinggi, integritas dan akuntabilitas data merupakan dua pilar utama yang harus dijaga. Transaksi perubahan data kemahasiswaan dan profil tenaga pendidik (dosen) seringkali melibatkan aturan bisnis (business rules) yang kompleks. Untuk menjamin seluruh aturan tersebut terpenuhi secara konsisten tanpa membebani lapisan aplikasi, implementasi Trigger di level basis data menjadi solusi mutakhir.
Studi kasus ini menggunakan arsitektur Sistem Informasi Akademik (SIAKAD). Sistem ini melacak repositori mahasiswa dan dosen, serta mengandalkan sebuah tabel terpusat bernama audit_log untuk mengawasi seluruh riwayat manipulasi data secara otonom.

Aturan Bisnis (Business Rules) yang Wajib Diterapkan:

1) Validasi Input Data: Setiap penambahan mahasiswa baru wajib menyertakan identitas nama yang valid. Jika nama kosong atau hanya berisi spasi, transaksi harus digagalkan seketika.
2) Immutability Atribut Kritis: Kolom tahun masuk (thn_masuk) mahasiswa bersifat absolut dan tidak boleh diubah setelah inisialisasi awal untuk mencegah manipulasi masa studi.
3) Proteksi Aset Strategis: Tenaga pendidik berkualifikasi Doktor/S3 (idpendidikan = 3) adalah aset strategis institusi. Data mereka dilindungi dari risiko penghapusan yang tidak sengaja.
4) Kontrol Mutu Akademik: Nilai Indeks Prestasi Kumulatif (IPK) mahasiswa hanya diperkenankan mengalami peningkatan atau konstan. Upaya penurunan nilai IPK secara manual wajib diblokir secara otomatis. 
5) Pencatatan Riwayat Granular & Vertikal: Setiap perubahan atau penghapusan data penting harus diurai dan dicatat ke dalam tabel log untuk keperluan rekonstruksi historis data secara kronologis.


2. Struktur Tabel Basis Data (DDL)

Berikut adalah rancangan tabel penyusun studi kasus SIAKAD, lengkap dengan relasi referensial (Foreign Key) serta skema tabel audit. 


3. Implementasi Trigger Proteksi & Validasi (Mekanisme Pencegahan)

Berbeda dengan DBMS row-level yang menggunakan operasi BEFORE, arsitektur SQL Server (T-SQL)
menggunakan pendekatan berbasis himpunan data setelah operasi berjalan sejenak di memori buffer. Proteksidata dilakukan dengan mengevaluasi tabel virtual inserted dan deleted, kemudian membatalkan seluruh rangkaian instruksi secara paksa lewat perintah ROLLBACK TRANSACTION jika terdeteksi adanya pelanggaranaturan bisnis.

A. Trigger Validasi Input Nama (Simulasi BEFORE INSERT)


B. Trigger Lock Atribut thn_masuk & Proteksi IPK (Simulasi BEFORE UPDATE)

Trigger ini menjalankan dua peran validasi sekaligus pada operasi update: mengunci kolom tahun masuk agar tidak bisa diganti, serta menjaga nilai IPK agar tidak mengalami penurunan.


C. Trigger Proteksi Aset Pengajar S3 (Simulasi BEFORE DELETE)



4. Implementasi Trigger Logging & Audit Trail (Mekanisme Rekam Jejak)

Ketika data berhasil melewati seluruh gerbang proteksi di atas, langkah selanjutnya adalah mendokumentasikan modifikasi tersebut secara detail. Pendekatan pencatatan log dilakukan secara granular (terperinci) dan vertikal untuk efisiensi analisis historis.

A. Trigger Multi-Statement Granular (AFTER UPDATE Mahasiswa)

Trigger ini memantau modifikasi pada kolom ipk dan idstatusaka. Jika salah satu atau kedua kolom tersebut berubah nilainya, sistem secara cerdas memisahkan pencatatannya menjadi baris log yang berbeda.

B. Trigger Snapshot Penghapusan Komprehensif (AFTER DELETE Mahasiswa)

Untuk melestarikan data kemahasiswaan yang dihapus (misalnya kasus kelulusan atau mutasi keluar), trigger ini menangkap data historis terakhir dan merangkaikannya ke dalam kalimat naratif kronologis menggunakan fungsi CONCAT().


5. Skenario Pengujian Transaksional & Validasi di SSMS


6. Hasil Analisis dan Kesimpulan Evaluasi Utama


Melalui pemodelan komprehensif ini, dapat disimpulkan bahwa arsitektur trigger pada SQL Server memberikan garansi keamanan data tingkat tinggi. Seluruh aturan akademik berhasil dipertahankan secara konsisten langsung di dalam mesin basis data, menciptakan sistem informasi yang kredibel, akurat, dan akuntabel.

Refleksi Praktikum

Melalui rangkaian praktikum ini, terdapat perubahan paradigma yang signifikan dalam memandang arsitektur sistem informasi. Sebelumnya, validasi aturan bisnis (business rules) dan pengamanan data sering kali hanya dibebankan pada lapisan aplikasi (front-end atau back-end application). Namun, praktik pembuatan Trigger ini menyadarkan bahwa basis data (RDBMS) memiliki kapabilitas cerdas untuk menjaga dirinya sendiri.

Implementasi Trigger memberikan wawasan mendalam mengenai bagaimana proses audit (audit trail), proteksi data rekam jejak, dan pencegahan manipulasi ilegal dapat diotomatisasi secara absolut di level database. Pemahaman ini sangat krusial dalam lingkup Manajemen Informatika, di mana keandalan, keamanan, dan integritas data merupakan tolok ukur utama dari sebuah sistem perangkat lunak skala enterprise.

Kendala Praktikum & Solusi

Selama proses pelaksanaan praktikum, terdapat beberapa kendala teknis dan logis yang dihadapi, di antaranya:

  • Perbedaan Dialek SQL (Lingkungan Simulator vs. SSMS): Terdapat hambatan adaptasi sintaksis antara mesin SQLite pada web simulator dan Transact-SQL (T-SQL) pada SQL Server Management Studio (SSMS). Fitur BEFORE UPDATE/DELETE dan fungsi RAISE(ABORT) yang ada di simulator tidak didukung secara native oleh SQL Server.

    • Solusi: Kendala ini diatasi dengan mengadaptasi arsitektur logika. Eksekusi BEFORE digantikan dengan trigger AFTER, yang dipadukan dengan evaluasi tabel virtual (inserted dan deleted). Fungsi interupsi diganti menggunakan kombinasi RAISERROR dan instruksi ROLLBACK TRANSACTION untuk menggugurkan transaksi secara paksa.

  • Sensitivitas Evaluasi Web Simulator: Sistem auto-grading pada simulator sangat kaku terhadap jumlah dan nama kolom yang di-insert ke dalam audit_log, sehingga memunculkan error atau nilai tidak maksimal meskipun secara logika SQL sudah benar.

    • Solusi: Melakukan pelacakan balik (tracing) pada pesan error dan menyesuaikan struktur query INSERT agar murni hanya mengembalikan parameter dasar yang diminta oleh mesin simulator tanpa penambahan atribut deskriptif opsional.

  • Manipulasi Tipe Data Numerik pada Log (Concatenation): Penggabungan string (concat) antara teks dan angka pecahan (float/real pada kolom IPK) memunculkan kendala saat akan disimpan ke dalam log berformat teks.

    • Solusi: Mengimplementasikan fungsi konversi data secara eksplisit menggunakan CAST(ipk AS VARCHAR) atau memanfaatkan fungsionalitas penggabungan modern CONCAT() di SSMS yang secara implisit menangani translasi tipe data numerik ke string.

KESIMPULAN

Praktikum Trigger Database ini memberikan konfirmasi praktis bahwa trigger adalah instrumen pengamanan basis data yang esensial. Berdasarkan serangkaian skenario yang telah diuji, dapat ditarik beberapa kesimpulan utama:

  1. Otomatisasi Audit Akurat: Trigger mampu mendekonstruksi setiap operasi DML (INSERT, UPDATE, DELETE) dan merekam jejak historis secara terperinci (granular) dan berlapis (multi-statement) ke dalam tabel log tanpa campur tangan pengguna.

  2. Penegakan Aturan Institusi: Trigger secara aktif mampu mencegah anomali data, seperti menolak input nama yang kosong, mengunci data absolut (tahun masuk), dan memblokir penurunan nilai akademik (IPK) secara manual.

  3. Pencegahan Kehilangan Data (Data Loss Prevention): Melalui pemanfaatan tabel virtual, sistem berhasil mengamankan aset data strategis (mencegah penghapusan dosen kualifikasi S3) dan menyelamatkan informasi (snapshot) mahasiswa sesaat sebelum datanya dihapus dari sistem.

Secara keseluruhan, trigger memberikan garansi kelayakan transaksi (ACID properties) yang memastikan bahwa semua data yang bermuara di dalam basis data adalah valid, aman, dan dapat dipertanggungjawabkan.

DAFTAR PUSTAKA

  • Coronel, C., & Morris, S. (2019). Database Systems: Design, Implementation, & Management (13th ed.). Cengage Learning.

  • Elmasri, R., & Navathe, S. B. (2015). Fundamentals of Database Systems (7th ed.). Pearson Education.

  • Itzik, B. (2023). T-SQL Fundamentals (4th ed.). Microsoft Press.

  • Microsoft. (2024). CREATE TRIGGER (Transact-SQL) - SQL Server. Microsoft Learn Documentation. Diakses pada 26 Mei 2026, dari https://learn.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

  • Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill Education.


Selasa, 19 Mei 2026

Eksplorasi Lanjutan Basis Data: Menguasai Stored Procedure, Parameter Dinamis, dan Manipulasi Data (DML)

   Makalah 

SESI 10

STORED PROCEDURE II



 

 OLEH: 

Bunga Putri Salsabilla

24781005

MI 4A

 

Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T.I.

 

D3 MANAJEMEN INFORMATIKA

JURUSAN TEKNOLOGI INFORMASI

POLITEKNIK NEGERI LAMPUNG

2026  

1. Pendahuluan

Halo teman-teman! Selamat datang kembali di catatan eksplorasi teknologi saya. Perkenalkan, saya Bunga Putri Salsabilla, mahasiswi program studi Manajemen Informatika di Politeknik Negeri Lampung (Polinela). Dalam pengembangan perangkat lunak modern—terutama ketika kita membangun sistem backend menggunakan framework seperti Express.js atau Node.js—efisiensi komunikasi antara aplikasi dan basis data adalah hal yang mutlak.

Salah satu teknik terbaik untuk mengoptimalkan kinerja dan keamanan basis data adalah dengan memindahkan sebagian beban logika bisnis langsung ke dalam database engine itu sendiri. Di sinilah peran Stored Procedure menjadi sangat krusial. Pada catatan minggu ini, saya akan membagikan rangkuman pembelajaran praktikum basis data mengenai Stored Procedure, mulai dari manipulasi parameter, eksekusi operasi DML, hingga penerapan logika percabangan.

2. Konsep Dasar Stored Procedure dan Parameter Dinamis

Stored Procedure (prosedur tersimpan) pada dasarnya adalah sekumpulan perintah SQL yang dikompilasi dan disimpan di dalam database agar dapat dieksekusi berulang kali melalui satu panggilan fungsi yang sederhana.

Dalam praktikum ini, saya mengeksplorasi penggunaan parameter dinamis untuk membuat prosedur menjadi lebih interaktif:

  • Parameter IN: Berfungsi sebagai gerbang masuk data (input). Misalnya, memasukkan NPM mahasiswa sebagai kata kunci pencarian.

  • Parameter OUT / OUTPUT: Berfungsi sebagai wadah untuk menampung hasil pemrosesan dari dalam prosedur, untuk kemudian dilempar keluar. Hal ini sangat berguna ketika kita ingin mengekstrak beberapa nilai agregasi sekaligus dalam satu eksekusi, seperti menghitung nilai IPK tertinggi (MAX) dan terendah (MIN) secara bersamaan.

3. Studi Kasus: Manajemen Sistem Informasi Akademik (SIAKAD)

Agar lebih mudah dipahami, mari kita terapkan konsep ini dalam studi kasus Sistem Informasi Akademik (SIAKAD) berskala kampus. Seorang administrator sering kali ditugaskan untuk mengelola data mahasiswa secara massal dan menyajikan laporan rekapitulasi.

a. Keamanan Manipulasi Data (DML) 

Alih-alih membiarkan aplikasi mengeksekusi query UPDATE atau DELETE secara langsung (yang rentan terhadap serangan SQL Injection), kita dapat membungkus operasi DML ke dalam prosedur. Contohnya, saya merancang prosedur updateStatusMhs yang menerima parameter NPM dan status akademik baru. Prosedur ini mengeksekusi pembaruan data secara aman dan langsung memverifikasinya melalui perintah SELECT internal.

b. Laporan Dinamis dengan Kombinasi IF/ELSE, JOIN, dan GROUP BY

Studi kasus memuncak pada pembuatan fitur pelaporan dinamis. Saya membangun sebuah prosedur yang menerima parameter mode.

  • Jika mode = 1: Prosedur mengeksekusi logika INNER JOIN antara tabel mahasiswa dan prodi, lalu menggunakan GROUP BY untuk menghitung total jumlah mahasiswa di masing-masing program studi.

  • Jika mode selain 1 (ELSE): Prosedur secara otomatis mengabaikan perhitungan rumit tersebut dan hanya menampilkan daftar nama mahasiswa secara standar. Melalui pendekatan ini, satu prosedur dapat melayani berbagai kebutuhan laporan hanya dengan mengubah parameter inputnya.

1. Bagian A: Persiapan Tabel dan Data Simulasi


Bagian B: Pembuatan Stored Procedure (Studi Kasus)

kode berikut ini berisi dua Stored Procedure yang mengimplementasikan logika aman DML serta pelaporan dinamis menggunakan kombinasi IF/ELSE, JOIN, dan GROUP BY.


3. Bagian C: Perintah Eksekusi Pengujian (Uji Coba)




4. Refleksi dan Kendala Praktikum

Selama menyelesaikan modul ini, saya menghadapi beberapa kendala teknis yang justru memberikan pelajaran berharga, khususnya terkait proses adaptasi sintaks antara simulator MySQL dan lingkungan SQL Server Management Studio (SSMS) berbasis T-SQL.

  1. Error Struktur Blok Logika: Pada simulator MySQL, blok percabangan diakhiri dengan keyword END IF;. Namun, saat kueri tersebut dipindahkan ke SSMS, sistem memunculkan error. Dari sini saya belajar bahwa T-SQL mewajibkan penggunaan struktur blok BEGIN...END untuk membungkus perintah di dalam kondisi IF maupun ELSE.

  2. Ketidakcocokan Skema Tabel (Column Mismatch): Saat melakukan operasi JOIN, saya sempat menghadapi error "no such column" karena mencoba memanggil kolom nama program studi yang ternyata strukturnya berbeda antara database lokal dan database simulator. Kendala ini melatih ketelitian saya. Solusinya, saya beralih menggunakan Foreign Key idprodi yang sifatnya absolut dan pasti ada di kedua tabel untuk dijadikan landasan operasi GROUP BY.

5. Kesimpulan

Mempelajari Stored Procedure mengubah perspektif saya dalam melihat database. Basis data bukan sekadar tempat penyimpanan tabel yang pasif, melainkan sebuah mesin komputasi tangguh yang mampu menjalankan logika kondisional dan memproses manipulasi datanya sendiri. Penggunaan prosedur tersimpan tidak hanya membuat kode aplikasi menjadi lebih bersih dan modular, tetapi juga menekan beban lalu lintas jaringan dan meningkatkan integritas keamanan data. Pemahaman ini sangat vital bagi siapapun yang ingin terjun ke dunia rekayasa perangkat lunak maupun administrasi basis data.

Daftar Pustaka

  1. Elmasri, R., & Navathe, S. B. (2015). Fundamentals of Database Systems (7th ed.). Pearson.

  2. Microsoft. (2023). CREATE PROCEDURE (Transact-SQL). Microsoft Learn. Diakses pada Mei 2026, dari https://learn.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql

  3. Oracle. (n.d.). MySQL 8.0 Reference Manual: Stored Programs and Views. MySQL Documentation. Diakses pada Mei 2026, dari https://dev.mysql.com/doc/refman/8.0/en/stored-programs-views.html

Selasa, 12 Mei 2026

Panduan Praktis Stored Procedure: Dari MySQL Simulator ke SQL Server (SSMS)

  Makalah 

SESI 9

STORED PROCEDURE I



 

 OLEH: 

Bunga Putri Salsabilla

24781005

MI 4A

 

Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T.I.

 

D3 MANAJEMEN INFORMATIKA

JURUSAN TEKNOLOGI INFORMASI

POLITEKNIK NEGERI LAMPUNG

2026  

Pendahuluan

Di era digital saat ini, data merupakan aset paling berharga bagi sebuah organisasi atau perusahaan. Namun, memiliki kumpulan data yang melimpah tidak akan banyak berarti jika kita tidak mampu mengelolanya dengan efisien. Dalam dunia Manajemen Informatika, fokus kita bukan hanya sekadar bagaimana menyimpan data ke dalam database, melainkan juga merancang sistem agar data tersebut dapat diakses, dimanipulasi, dan disajikan secara cepat, aman, serta terstruktur.

Ketika mengembangkan atau mengelola sebuah sistem informasi akademik maupun bisnis, kita sering kali dihadapkan pada kebutuhan untuk mengeksekusi serangkaian query SQL yang rumit dan berulang-ulang setiap harinya. Jika kita terus-menerus menulis query mentah secara manual, hal ini tentu sangat tidak efisien dan rentan terhadap kesalahan ketik (human error). Selain itu, meletakkan seluruh logika pemrosesan data di sisi aplikasi juga dapat menurunkan performa dan meningkatkan risiko keamanan jaringan.

Oleh karena itu, diperlukan sebuah pendekatan yang lebih optimal, yaitu dengan memindahkan logika pemrosesan berulang tersebut langsung ke dalam database server. Di sinilah konsep Stored Procedure memegang peranan krusial.

Makalah ringkas ini disusun untuk mendokumentasikan pemahaman dan hasil praktik mengenai implementasi Stored Procedure tingkat dasar. Artikel ini tidak hanya akan membahas konsep dasar pembuatannya, tetapi juga akan menyoroti perbandingan dan adaptasi sintaks antara dua Database Management System (DBMS) yang berbeda, yaitu dari lingkungan MySQL (berbasis simulator) ke ekosistem T-SQL pada SQL Server Management Studio (SSMS).

Halo teman-teman! Pada minggu ke-9 praktikum Pemrograman SQL Lanjut ini, kita memasuki topik yang sangat menarik dan tentunya sangat berguna di dunia kerja, yaitu Stored Procedure.

Bayangkan kita punya sebuah query panjang atau rumit yang harus dijalankan berkali-kali setiap hari. Mengetik ulangnya setiap saat pasti sangat tidak efisien dan rentan terjadi typo, bukan? Nah, di sinilah Stored Procedure menyelamatkan kita. Secara sederhana, Stored Procedure adalah kumpulan pernyataan SQL yang disimpan di dalam database. Sekali kita mendefinisikan dan membuatnya, kita bisa memanggil blok kode tersebut kapan saja hanya dengan satu baris perintah pendek.

Pada praktikum kali ini, fokus utama adalah pengenalan level dasar: membuat prosedur (CREATE PROCEDURE), menggunakan parameter input (IN), hingga menggabungkannya dengan operasi JOIN dan fungsi agregat seperti AVG(). Hal yang membuat sesi ini sangat berharga adalah kita tidak hanya belajar di lingkungan MySQL (melalui simulator), tetapi juga diwajibkan mengimplementasikannya langsung di SQL Server Management Studio (SSMS) menggunakan dialek T-SQL. Ini sangat membuka wawasan karena kita dituntut fleksibel terhadap perbedaan sintaks antar Database Management System (DBMS).

Berikut adalah dua contoh query yang menyoroti penyesuaian dari konsep MySQL ke T-SQL:

1. Procedure Tanpa Parameter 

Di MySQL, kita menggunakan DELIMITER $$ dan CALL untuk memanggil prosedur. Namun, di SQL Server, kita menggunakan pemisah batch GO dan memanggilnya dengan EXEC.

2. Procedure Menggunakan Parameter Input 

Jika kita ingin memfilter data, kita bisa menggunakan parameter. Di T-SQL, parameter dideklarasikan dengan awalan lambang @.


Refleksi Pribadi & Kendala 

Selama mengerjakan rangkaian task ini, hal yang paling menantang (dan sempat membuat pusing) justru bukanlah menyusun logika query-nya, melainkan proses uji coba insert data dummy di SSMS. Saya sempat dihadapkan dengan pesan error "Foreign Key Constraint" dan "Violation of PRIMARY KEY".

Dari kendala tersebut, saya belajar bahwa dalam database relasional, data "induk" (seperti tabel referensi prodi atau jenjang) harus dibuat terlebih dahulu sebelum kita memasukkan data "anak" (seperti mahasiswa atau dosen). Selain itu, saya juga mengalami error karena tidak teliti membaca skema database, di mana terjadi salah ketik pemanggilan nama kolom antara tempat_lhr dan tempat_lahir.

Tips Praktikum: 

Bagi teman-teman yang sedang belajar materi ini, selalu perhatikan skema database dengan teliti! Sebelum mengetes Stored Procedure yang memfilter data spesifik, pastikan Anda sudah memasukkan data dummy yang relevan, dan perhatikan hierarki relasi antar tabelnya. Ingat juga bahwa SQL Server tidak mengenal perintah LIMIT, sehingga kita harus menggunakan SELECT TOP() sebagai gantinya.

Secara keseluruhan, materi Stored Procedure ini sangat melatih kebiasaan kita untuk menulis kode SQL yang bersih, dapat digunakan berulang kali (reusable), dan membuat kita lebih teliti dalam memahami struktur sebuah basis data.

Kesimpulan

Sebagai penutup, mempelajari Stored Procedure adalah sebuah lompatan penting bagi kita untuk beralih dari sekadar "penulis query" menjadi seorang perancang database yang efisien. Dengan mengemas logika query ke dalam database, kita tidak hanya menghemat waktu (karena reusable atau bisa dipakai berulang kali), tetapi juga meningkatkan performa dan keamanan sistem secara keseluruhan.

Melalui eksplorasi lintas DBMS pada praktikum ini, kita juga menyadari sebuah fakta penting: logika dasar SQL mungkin sama, namun setiap platform memiliki "dialeknya" masing-masing. Perbedaan sintaks antara MySQL dan T-SQL (seperti penggunaan DELIMITER vs GO, CALL vs EXEC, hingga LIMIT vs TOP()) mengajarkan kita untuk selalu adaptif dan rajin membaca dokumentasi saat bekerja dengan environment yang baru.

Selain itu, rentetan pesan error terkait Primary Key dan Foreign Key yang kita temui di SSMS justru menjadi pelajaran paling berharga. Error tersebut adalah bukti nyata bagaimana sebuah database relasional bekerja keras melindungi integritas datanya. Kita diingatkan bahwa sebelum melakukan manipulasi tingkat lanjut, kebersihan data dan pemahaman terhadap hierarki tabel adalah syarat mutlak yang tidak bisa ditawar.

Semoga catatan praktikum minggu ke-9 ini bisa memberikan gambaran yang lebih jelas bagi teman-teman yang sedang mendalami pemrograman SQL Lanjut. Jangan pernah takut melihat teks error berwarna merah di SSMS, karena dari sanalah proses troubleshooting dan pemahaman kita benar-benar diuji. Selamat mencoba dan sampai jumpa di catatan praktikum selanjutnya!


Mengamankan Database: Panduan Praktis DCL (Data Control Language) pada SQL Server

  Makalah  SESI 13 USER MANAGEMENT    OLEH:   Bunga Putri Salsabilla 24781005 MI 4A   Dosen Pengampu : M. Reza Redo Islami, S. Kom., M.T .I....