#BAB I ##PENDAHULUAN 1.1 Latar Belakang Keamanan kota merupakan salah satu aspek penting dalam menciptakan lingkungan hidup yang aman dan tertib. Dengan meningkatnya aktivitas masyarakat, pemerintah kota banyak menggunakan sistem smart surveillance berbasis kamera CCTV, sensor pergerakan, dan laporan masyarakat untuk mendeteksi kejadian-kejadian penting seperti tindak kriminal, kecelakaan, dan gangguan keamanan lainnya. Pengelolaan data keamanan kota membutuhkan sistem basis data yang kuat dan terintegrasi. Sistem ini harus mampu menampung data kamera, petugas keamanan, laporan kejadian, serta tindak respons. Pada studi kasus ini dibuat sistem basis data sederhana untuk memodelkan proses pemantauan keamanan kota menggunakan bahasa SQL dalam R melalui package RSQLite, meliputi operasi dasar seperti CREATE, INSERT, SELECT, UPDATE, DELETE, dan JOIN. 1.2 Tujuan Tujuan dilakukannya studi kasus: Sistem Pemantauan Keamanan Kota yaitu sebagai berikut: 1. Mendesain struktur basis data sistem keamanan kota dengan beberapa entitas penting. 2. Mengimplementasikan perintah SQL di dalam R menggunakan RSQLite. 3. Menampilkan hasil query untuk kebutuhan analisis dan pelaporan keamanan. 1.3 Ruang Lingkup Studi kasus ini berfokus pada pengelolaan data kamera CCTV, lokasi pengawasan, petugas keamanan, laporan insiden, dan tindakan respons. Sistem tidak mencakup analisis video, AI pendeteksi objek, atau sistem keamanan berskala besar.

BAB II

PERANCANGAN SISTEM BASIS DATA

Struktur Tabel dan Relasi Antar Entitas Dalam sistem pemantauan keamanan kota, dirancang lima tabel utama yang mewakili komponen penting pada proses observasi dan penanganan insiden. Setiap tabel memiliki fungsi dan peran yang berbeda namun saling terhubung melalui penggunaan primary key dan foreign key. 1. Tabel lokasi berfungsi untuk menyimpan data terkait titik-titik lokasi pemasangan kamera CCTV yang tersebar di seluruh kota. Informasi yang dicatat meliputi id_lokasi sebagai primary key, nama lokasi yang digunakan untuk identifikasi, serta alamat lengkap lokasi tersebut. Tabel ini penting karena menjadi acuan utama untuk menentukan di mana kamera ditempatkan dan area mana saja yang termasuk dalam pengawasan sistem keamanan kota. 2. Tabel cctv digunakan untuk menyimpan informasi mengenai kamera CCTV yang terpasang pada suatu lokasi tertentu. Setiap kamera memiliki id_cctv sebagai primary key dan dihubungkan dengan id_lokasi sebagai foreign key sehingga kamera tersebut dapat diidentifikasi berada pada lokasi mana. Selain itu, tabel ini juga menyimpan informasi tipe kamera seperti Dome, PTZ, atau Fixed, serta status kamera apakah dalam keadaan aktif atau nonaktif. Dengan adanya tabel ini, sistem dapat mengetahui kondisi perangkat dan memastikan setiap area pengawasan memiliki kamera yang berfungsi dengan baik. 3. Tabel petugas berisi informasi mengenai petugas keamanan yang bertanggung jawab dalam memantau sistem CCTV maupun menangani insiden yang terjadi. Data dalam tabel ini meliputi id_petugas sebagai primary key, nama petugas, dan shift kerja seperti shift pagi, siang, atau malam. Informasi ini digunakan untuk melacak siapa yang bertugas pada saat insiden terjadi sehingga dapat diketahui petugas mana yang memberikan respons terhadap suatu kejadian. 4. Tabel insiden merupakan inti dari sistem karena menyimpan seluruh data kejadian yang terekam oleh CCTV maupun laporan dari masyarakat. Setiap insiden memiliki id_insiden sebagai primary key dan terhubung dengan id_cctv sebagai foreign key sehingga dapat diketahui kamera mana yang mendeteksi kejadian tersebut. Tabel ini mencatat jenis insiden seperti pencurian, kecelakaan, atau keributan, waktu kejadian, serta tingkat keparahan insiden seperti rendah, sedang, atau tinggi. Data ini sangat penting untuk proses analisis kejadian, pemetaan insiden, dan evaluasi tingkat keamanan kota. 5. Tabel respons digunakan untuk mencatat tindakan lanjutan yang dilakukan oleh petugas terhadap suatu insiden. Setiap respons memiliki id_respons sebagai primary key dan dihubungkan dengan id_insiden dan id_petugas sebagai foreign key. Informasi tambahan seperti tindakan yang dilakukan serta waktu respons juga disimpan untuk mengetahui seberapa cepat dan bagaimana petugas menangani kejadian tersebut. Tabel ini menggambarkan hubungan langsung antara insiden dan aktivitas penanganan lapangan sehingga seluruh proses dapat dilacak secara jelas dan terstruktur. 2.2 Skema Relasional (ERD Sederhana) Relasi antar tabel dalam sistem ini digambarkan sebagai berikut: Lokasi ───< CCTV───< Insiden───< Respons───> Petugas Skema relasional tersebut menunjukkan alur data yang terjadi dalam sistem pemantauan keamanan. Lokasi memiliki hubungan one-to-many dengan CCTV, karena satu lokasi dapat memiliki beberapa kamera sekaligus. Setiap kamera dapat mencatat banyak insiden sehingga hubungan CCTV dan insiden juga bersifat one-to-many. Selanjutnya, satu insiden dapat memperoleh lebih dari satu tindakan respons, sehingga relasi antara insiden dan respons juga bersifat one-to-many. Pada sisi lain, tabel respons berhubungan dengan tabel petugas dalam relasi many-to-one, karena satu petugas dapat menangani beberapa respons. Dengan adanya skema relasional ini, proses penyimpanan data dapat dilakukan secara efisien dan integritas data antar entitas tetap terjaga.

BAB III

IMPLEMENTASI DAN ANALISIS SQL

3.1 Membuat Koneksi Database Program: library(DBI) library(RSQLite) library(dplyr) con <- dbConnect(SQLite(), “:memory:”) Output: [1] 0 Langkah pertama dalam membangun sistem basis data ini adalah membuat koneksi antara R dan SQLite. Paket DBI dan RSQLite digunakan untuk memungkinkan R mengeksekusi perintah SQL. Database dibuat secara in-memory sehingga tidak perlu disimpan dalam file fisik. Perintah di atas berfungsi membuka sebuah database kosong yang akan menjadi tempat penyimpanan seluruh tabel seperti lokasi, CCTV, petugas, insiden, dan respons. Output [1] 0 menandakan bahwa koneksi berhasil dibuat tanpa error. 3.2 Membuat tabel Program: dbExecute(con, ” CREATE TABLE lokasi ( id_lokasi INTEGER PRIMARY KEY, nama_lokasi TEXT, alamat TEXT ); “)

dbExecute(con, ” CREATE TABLE cctv ( id_cctv INTEGER PRIMARY KEY, id_lokasi INTEGER, tipe TEXT, status TEXT, FOREIGN KEY (id_lokasi) REFERENCES lokasi(id_lokasi) ); “)

dbExecute(con, ” CREATE TABLE petugas ( id_petugas INTEGER PRIMARY KEY, nama_petugas TEXT, shift TEXT ); “)

dbExecute(con, ” CREATE TABLE insiden ( id_insiden INTEGER PRIMARY KEY, id_cctv INTEGER, jenis TEXT, waktu TEXT, tingkat TEXT, FOREIGN KEY (id_cctv) REFERENCES cctv(id_cctv) ); “)

dbExecute(con, ” CREATE TABLE respons ( id_respons INTEGER PRIMARY KEY, id_insiden INTEGER, id_petugas INTEGER, tindakan TEXT, waktu_respons TEXT, FOREIGN KEY (id_insiden) REFERENCES insiden(id_insiden), FOREIGN KEY (id_petugas) REFERENCES petugas(id_petugas) ); “) Output: [1] 0 [1] 0 [1] 0 [1] 0 [1] 0 Pada tahap ini dilakukan pembuatan lima tabel utama yang digunakan dalam sistem pemantauan keamanan, yaitu: lokasi, cctv, petugas, insiden, dan respons. Relasi antar tabel dibangun menggunakan primary key dan foreign key. lokasi menyimpan titik pemasangan CCTV. cctv mencatat informasi kamera beserta status fungsinya. petugas berisi identitas petugas keamanan dan shift kerja. insiden mencatat kejadian yang terekam kamera atau dilaporkan. respons menyimpan tindakan lanjutan yang dilakukan petugas. Output [1] 0 pada tiap perintah menandakan bahwa seluruh tabel berhasil dibuat. 3.3 Mengisi Data Program: dbExecute(con,” INSERT INTO lokasi VALUES (1, ‘Bundaran Kota’, ‘Jl. Merdeka’), (2, ‘Terminal Utama’, ‘Jl. Sersan’), (3, ‘Pasar Raya’, ‘Jl. Diponegoro’); “)

dbExecute(con, ” INSERT INTO cctv VALUES (101, 1, ‘Dome’, ‘Aktif’), (102, 2, ‘PTZ’, ‘Aktif’), (103, 3, ‘Fixed’, ‘Nonaktif’); “)

dbExecute(con, ” INSERT INTO petugas VALUES (1, ‘Ahmad Rijal’, ‘Shift Malam’), (2, ‘Nanda Putri’, ‘Shift Pagi’); “)

dbExecute(con, ” INSERT INTO insiden VALUES (1, 101, ‘Pencurian’, ‘2025-06-01 22:15’, ‘Tinggi’), (2, 102, ‘Kecelakaan’, ‘2025-06-02 07:30’, ‘Sedang’), (3, 102, ‘Keributan’, ‘2025-06-03 20:45’, ‘Tinggi’); “)

dbExecute(con, ” INSERT INTO respons VALUES (1, 1, 1, ‘Mengirim patroli’, ‘2025-06-01 22:20’), (2, 2, 2, ‘Koordinasi ambulans’, ‘2025-06-02 07:35’); “) Output: [1] 3 [1] 3 [1] 2 [1] 3 [1] 2 Tahap selanjutnya yaitu pemasukan data awal ke dalam masing-masing tabel. Data yang dimasukkan menggambarkan kondisi nyata sistem keamanan kota, misalnya lokasi seperti Bundaran Kota dan Pasar Raya, kamera dengan tipe Dome, PTZ, dan Fixed, petugas dengan shift berbeda, beserta tiga insiden seperti pencurian, kecelakaan, dan keributan. Selain itu, respons berupa pengiriman patroli dan koordinasi ambulans juga dimasukkan untuk menunjukkan bagaimana petugas menangani kejadian. Output berupa angka yang muncul setelah setiap perintah INSERT menunjukkan jumlah baris yang berhasil masuk, sehingga dapat dipastikan bahwa seluruh tabel telah terisi sesuai kebutuhan. 3.4 Menampilkan tabel Program: dbListTables(con) dbGetQuery(con,”SELECT * FROM insiden”) Output: > dbListTables(con) [1] “cctv” “insiden” “lokasi” “petugas” “respons” > dbGetQuery(con, “SELECT * FROM insiden”) id_insiden id_cctv jenis waktu tingkat 1 1 101 Pencurian 2025-06-01 22:15 Tinggi 2 2 102 Kecelakaan 2025-06-02 07:30 Sedang 3 3 102 Keributan 2025-06-03 20:45 Tinggi Setelah data terisi, tabel diuji dengan menampilkannya. Perintah untuk menampilkan daftar tabel memastikan bahwa seluruh tabel telah tercipta dengan lengkap. Sementara itu, query SELECT pada tabel insiden menunjukkan isi tabel yang berisi jenis insiden, waktu kejadian, tingkat keparahan, serta kamera yang mencatatnya. Hasil ini menunjukkan bahwa data telah berhasil dimasukkan dan dapat diakses tanpa kendala. 3.5 Mengurutkan Insiden Pengurutan data dilakukan untuk melihat urutan kejadian berdasarkan waktu kronologis. Program: dbGetQuery(con, ” SELECT * FROM insiden ORDER BY waktu ASC; “) Output: id_insiden id_cctv jenis waktu tingkat 1 1 101 Pencurian 2025-06-01 22:15 Tinggi 2 2 102 Kecelakaan 2025-06-02 07:30 Sedang 3 3 102 Keributan 2025-06-03 20:45 Tinggi 3.6 Menampilkan Insiden Tingkat Tinggi Untuk melihat insiden yang membutuhkan perhatian lebih, dilakukan filter berdasarkan tingkat keparahan. Hasil output menunjukkan dua insiden dengan tingkat keparahan “Tinggi”, yaitu pencurian dan keributan. Query ini penting untuk penentuan prioritas penanganan. Program: dbGetQuery(con, ” SELECT * FROM insiden WHERE tingkat = ‘Tinggi’; “) Output: id_insiden id_cctv jenis waktu tingkat 1 1 101 Pencurian 2025-06-01 22:15 Tinggi 2 3 102 Keributan 2025-06-03 20:45 Tinggi 3.7 Memperbarui Data UPDATE (Memperbaiki Status CCTV) Jika ada perubahan kondisi kamera, status CCTV dapat diperbarui. Awalnya CCTV bernomor 103 dalam keadaan “Nonaktif”. Setelah UPDATE, kamera tersebut berubah menjadi “Aktif”. Proses ini mensimulasikan perbaikan kamera di lapangan. Program: dbExecute(con, ” UPDATE cctv SET status = ‘Aktif’ WHERE id_cctv = 103; “)

dbGetQuery(con, “SELECT * FROM cctv WHERE id_cctv = 103”) Output: [1] 1 id_cctv id_lokasi tipe status 1 103 3 Fixed Aktif 3.8 Menghapus Data Insiden (DELETE) Penghapusan data dilakukan jika insiden salah input atau tidak valid. Insiden dengan ID 3 (keributan) dihapus dari database. Output [1] 0 menunjukkan bahwa perintah dieksekusi tanpa error. Program: dbExecute(con, ” DELETE FROM insiden WHERE id_insiden = 3; “) Output: [1] 0 3.9 Menampilkan Data Gabungan (INNER JOIN) Query ini menampilkan insiden lengkap dengan lokasi kejadian dan tipe kamera yang merekamnya. Informasi ini sangat penting untuk analisis pola kejadian pada titik tertentu. Program: dbGetQuery(con,” SELECT i.id_insiden, l.nama_lokasi, c.tipe, i.jenis, i.waktu, i.tingkat FROM insiden i INNER JOIN cctv c ON i.id_cctv = c.id_cctv INNER JOIN lokasi l ON c.id_lokasi = l.id_lokasi; “) Output:

3.10 Menggabungkan Data (JOIN) Program: dbGetQuery(con, ” SELECT i.jenis AS insiden, r.tindakan, p.nama_petugas, r.waktu_respons FROM respons r JOIN insiden i ON r.id_insiden = i.id_insiden JOIN petugas p ON r.id_petugas = p.id_petugas; “) Output:

Untuk memperoleh informasi yang lebih komprehensif, dilakukan penggabungan tabel menggunakan JOIN. Penggabungan tabel insiden, CCTV, dan lokasi memberikan informasi lengkap mengenai lokasi kejadian, kamera yang merekam, serta jenis insiden yang terjadi. Hal ini memudahkan proses pemetaan kejadian pada titik-titik tertentu di kota. Selain itu, penggabungan data respons dengan petugas menunjukkan siapa yang menangani suatu insiden dan tindakan apa yang mereka ambil. Informasi ini sangat penting dalam evaluasi kinerja petugas, termasuk kecepatan dan kualitas respons. 3.11 Menggunakan Fungsi Agregat (SUM) Fungsi agregat digunakan untuk menghitung total insiden dan jumlah insiden dengan tingkat tertentu. Program: dbGetQuery(con, ” SELECT COUNT(*) AS total_insiden, SUM(CASE WHEN tingkat=‘Tinggi’ THEN 1 ELSE 0 END) AS insiden_tinggi FROM insiden; “) Output: total_insiden insiden_tinggi 1 2 1 Hasil menunjukkan jumlah keseluruhan insiden dan jumlah yang berkategori “Tinggi”. Analisis ini berguna untuk laporan bulanan maupun penilaian tingkat keamanan suatu area. 3.12 Laporan Akhir Program: query_laporan <- ” SELECT i.id_insiden, l.nama_lokasi AS lokasi, c.tipe AS tipe_cctv, i.jenis AS jenis_insiden, i.waktu AS waktu_insiden, i.tingkat AS tingkat_insiden, r.tindakan AS tindakan_respons, p.nama_petugas AS petugas, r.waktu_respons FROM insiden i JOIN cctv c ON i.id_cctv = c.id_cctv JOIN lokasi l ON c.id_lokasi = l.id_lokasi LEFT JOIN respons r ON i.id_insiden = r.id_insiden LEFT JOIN petugas p ON r.id_petugas = p.id_petugas; ” laporan <- dbGetQuery(con, query_laporan) print(laporan) Output:

Bagian terakhir adalah penyusunan laporan akhir dengan menggabungkan seluruh komponen penting dari sistem, meliputi lokasi kejadian, tipe kamera, jenis insiden, tingkat keparahan, tindakan respons, petugas yang menangani, serta waktu respons. Laporan ini memberikan gambaran lengkap mengenai satu siklus pengamatan kejadian dan tindakan penanganannya. Informasi yang terstruktur dan terpadu ini sangat bermanfaat sebagai bahan evaluasi maupun pelaporan harian dalam sistem pemantauan keamanan kota.

BAB IV

KESIMPULAN

Berdasarkan implementasi sistem basis data pada studi kasus pemantauan keamanan kota, dapat disimpulkan bahwa database relasional sangat membantu dalam mengelola informasi lokasi CCTV, kamera, insiden, serta respons petugas. Dengan menggunakan SQL di R, berbagai operasi seperti pencarian insiden, pengurutan data, penggabungan tabel, hingga pembuatan laporan dapat dilakukan secara efektif. Sistem ini menjadi landasan penting dalam pengembangan sistem keamanan kota berbasis data. Penerapan berbagai perintah SQL seperti INSERT, SELECT, UPDATE, DELETE, serta penggunaan JOIN dan fungsi agregat mampu memperlihatkan bagaimana data dapat dikelola, difilter, dan dianalisis sesuai kebutuhan sistem. Selain itu, basis data ini memudahkan penyusunan laporan insiden yang lengkap dan mudah dipahami. Dengan demikian, studi kasus ini memberikan ilustrasi yang jelas mengenai bagaimana konsep basis data relasional dapat digunakan dalam sistem pemantauan keamanan kota.

#link Rpubs https://rpubs.com/AZIZA SALSABILAH/20042007