6215b4367a
Sistem WebGIS analisis sebaran penduduk miskin dan jangkauan rumah ibadah. Fitur: peta interaktif Leaflet.js, CRUD rumah ibadah & penduduk miskin, auto-kategorisasi haversine, heatmap, export PDF/CSV, dashboard analitik, manajemen pengguna (superadmin/admin), login sistem. Teknologi: PHP, MySQL, Leaflet.js, OpenStreetMap, Nominatim Geocoding, mPDF. Catatan: jalankan `composer install` di folder uas/ untuk install dependencies. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
184 lines
8.8 KiB
SQL
184 lines
8.8 KiB
SQL
-- ================================================================
|
|
-- DATABASE GABUNGAN: db_webgis
|
|
-- WebGIS SIG B - Tugas + UAS
|
|
-- Athallah Ghathfan Aqila | D1041231060 | Untan
|
|
-- ================================================================
|
|
|
|
CREATE DATABASE IF NOT EXISTS db_webgis CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE db_webgis;
|
|
|
|
-- ================================================================
|
|
-- BAGIAN TUGAS
|
|
-- ================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS spbu (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama VARCHAR(255) NOT NULL,
|
|
nomor VARCHAR(50),
|
|
status_24jam ENUM('Ya','Tidak') DEFAULT 'Tidak',
|
|
lat DECIMAL(10,7) NOT NULL,
|
|
lng DECIMAL(10,7) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS jalan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_jalan VARCHAR(255) NOT NULL,
|
|
status_jalan ENUM('Nasional','Provinsi','Kabupaten') DEFAULT 'Kabupaten',
|
|
panjang_m DECIMAL(10,2),
|
|
geojson TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS persil (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_persil VARCHAR(100) NOT NULL,
|
|
status_milik ENUM('SHM','HGB','HGU','HP') DEFAULT 'SHM',
|
|
luas_m2 DECIMAL(12,2),
|
|
geojson TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS masjid (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_masjid VARCHAR(255) NOT NULL,
|
|
pic VARCHAR(100),
|
|
alamat TEXT,
|
|
radius_m INT DEFAULT 300,
|
|
lat DECIMAL(10,7) NOT NULL,
|
|
lng DECIMAL(10,7) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS kemiskinan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_kk VARCHAR(255) NOT NULL,
|
|
jumlah_kk INT DEFAULT 1,
|
|
alamat TEXT,
|
|
lat DECIMAL(10,7) NOT NULL,
|
|
lng DECIMAL(10,7) NOT NULL,
|
|
pkh TINYINT(1) NOT NULL DEFAULT 0,
|
|
bpnt TINYINT(1) NOT NULL DEFAULT 0,
|
|
blt TINYINT(1) NOT NULL DEFAULT 0,
|
|
foto VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS wilayah (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama VARCHAR(255) NOT NULL,
|
|
tipe ENUM('RT','RW','Kelurahan','Kecamatan') DEFAULT 'RT',
|
|
geojson TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ================================================================
|
|
-- BAGIAN UAS
|
|
-- ================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
nama VARCHAR(100),
|
|
role ENUM('superadmin','admin') DEFAULT 'admin',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama VARCHAR(255) NOT NULL,
|
|
jenis ENUM('Masjid','Musholla','Gereja Protestan','Gereja Katolik','Pura','Vihara','Klenteng','Lainnya') DEFAULT 'Masjid',
|
|
kontak VARCHAR(100),
|
|
alamat TEXT,
|
|
lat DECIMAL(10,7) NOT NULL,
|
|
lng DECIMAL(10,7) NOT NULL,
|
|
radius INT DEFAULT 300,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
kk_nama VARCHAR(255) NOT NULL,
|
|
nik VARCHAR(20),
|
|
alamat TEXT,
|
|
lat DECIMAL(10,7) NOT NULL,
|
|
lng DECIMAL(10,7) NOT NULL,
|
|
jumlah_anggota INT DEFAULT 1,
|
|
rumah_ibadah_id INT,
|
|
jarak_meter DECIMAL(10,2),
|
|
status_bantuan ENUM('belum_dibantu','sudah_dibantu','menunggu_verifikasi') DEFAULT 'belum_dibantu',
|
|
jenis_bantuan VARCHAR(255),
|
|
tanggal_bantuan DATE,
|
|
bukti_file VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS anggota_keluarga (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
penduduk_id INT NOT NULL,
|
|
nama VARCHAR(255) NOT NULL,
|
|
hubungan VARCHAR(50),
|
|
umur INT,
|
|
pekerjaan VARCHAR(100),
|
|
keterangan TEXT,
|
|
FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- ================================================================
|
|
-- DATA SAMPLE
|
|
-- ================================================================
|
|
|
|
INSERT IGNORE INTO spbu (nama, nomor, status_24jam, lat, lng) VALUES
|
|
('SPBU Gajahmada', '64.771.01', 'Ya', -0.0208, 109.3284),
|
|
('SPBU Ahmad Yani', '64.771.02', 'Ya', -0.0342, 109.3401),
|
|
('SPBU Tanjungpura', '64.771.03', 'Tidak', -0.0156, 109.3512),
|
|
('SPBU Sultan Hamid II', '64.771.04', 'Ya', -0.0470, 109.3350);
|
|
|
|
INSERT IGNORE INTO masjid (nama_masjid, pic, alamat, radius_m, lat, lng) VALUES
|
|
('Masjid Raya Mujahidin', 'H. Ahmad Fauzi', 'Jl. Gajahmada, Pontianak Selatan', 450, -0.0261, 109.3256),
|
|
('Masjid Al-Muhajirin', 'Ustadz Mahmud', 'Jl. Sutoyo, Pontianak Kota', 300, -0.0189, 109.3478),
|
|
('Masjid Nurul Huda', 'Ustadz Fahmi', 'Jl. Ahmad Yani, Pontianak Timur', 350, -0.0387, 109.3398),
|
|
('Masjid Jami Sultan', 'H. Ridwan', 'Jl. Tanjungpura, Pontianak Barat', 400, -0.0142, 109.3332);
|
|
|
|
INSERT IGNORE INTO kemiskinan (nama_kk, jumlah_kk, alamat, lat, lng, pkh, bpnt, blt) VALUES
|
|
('Ahmad Suryana', 4, 'Jl. Gajahmada Gg. 3', -0.0278, 109.3267, 1, 1, 0),
|
|
('Siti Rohana', 3, 'Jl. Sutoyo No. 8', -0.0201, 109.3461, 0, 1, 1),
|
|
('Budi Santoso', 5, 'Jl. Ahmad Yani No. 32',-0.0355, 109.3412, 1, 0, 0),
|
|
('Dewi Rahayu', 2, 'Jl. Tanjungpura No. 7',-0.0412, 109.3389, 0, 0, 1),
|
|
('Hendra Kusuma', 6, 'Jl. Imam Bonjol No. 21',-0.0167, 109.3502, 1, 1, 1),
|
|
('Ratna Wulandari', 3, 'Jl. Gusti Situt No. 5',-0.0301, 109.3220, 1, 0, 1),
|
|
('Suparman', 7, 'Jl. Pak Kasih No. 12', -0.0243, 109.3310, 0, 1, 0);
|
|
|
|
INSERT IGNORE INTO users (username, password, nama, role) VALUES
|
|
('admin', '$2y$10$TKh8H1.PfGLmAdaQXDLZQO3L4LYKE/VNRN3hJ3oZpYb7U0u0EWxLe', 'Administrator', 'superadmin'),
|
|
('petugas', '$2y$10$TKh8H1.PfGLmAdaQXDLZQO3L4LYKE/VNRN3hJ3oZpYb7U0u0EWxLe', 'Petugas Lapangan', 'admin');
|
|
|
|
INSERT IGNORE INTO rumah_ibadah (id, nama, jenis, kontak, alamat, lat, lng, radius) VALUES
|
|
(1, 'Masjid Raya Mujahidin', 'Masjid', '0561-123456', 'Jl. Ahmad Yani, Pontianak', -0.0262, 109.3429, 500),
|
|
(2, 'Gereja Katedral Santo Yosef', 'Gereja Katolik', '0561-234567', 'Jl. Pattimura, Pontianak', -0.0312, 109.3301, 400),
|
|
(3, 'Vihara Bodhisattva Karaniya Metta', 'Vihara', '0561-345678', 'Jl. Tanjungpura, Pontianak', -0.0355, 109.3344, 350),
|
|
(4, 'Pura Agung Nusantara', 'Pura', '0561-456789', 'Jl. Gajah Mada, Pontianak', -0.0409, 109.3221, 400),
|
|
(5, 'Musholla Al-Ikhlas', 'Musholla', NULL, 'Jl. Kom Yos Sudarso, Pontianak',-0.0195, 109.3553, 250);
|
|
|
|
INSERT IGNORE INTO penduduk_miskin (id, kk_nama, nik, alamat, lat, lng, rumah_ibadah_id, jarak_meter, status_bantuan, jenis_bantuan, tanggal_bantuan) VALUES
|
|
(1, 'Ahmad Subandi', '6171011234560001', 'Gg. Melati No.3, Pontianak Selatan', -0.0290, 109.3410, 1, 312.5, 'sudah_dibantu', 'PKH', '2024-03-01'),
|
|
(2, 'Siti Rahayu', '6171021234560002', 'Jl. Budi Utomo Gg.5, Pontianak', -0.0278, 109.3450, 1, 245.0, 'belum_dibantu', NULL, NULL),
|
|
(3, 'Budi Santoso', '6171031234560003', 'Jl. Gusti Hamzah, Pontianak Utara', -0.0320, 109.3290, 2, 198.3, 'menunggu_verifikasi', NULL, NULL),
|
|
(4, 'Maria Yuliana', '6171041234560004', 'Jl. Purnama Gg.2, Pontianak', -0.0350, 109.3320, 3, 267.1, 'sudah_dibantu', 'BPNT + PKH', '2024-01-15'),
|
|
(5, 'Wati Sari', '6171051234560005', 'Jl. Kom Yos Sudarso, Pontianak Timur',-0.0188,109.3561, 5, 89.4, 'belum_dibantu', NULL, NULL);
|
|
|
|
INSERT IGNORE INTO anggota_keluarga (penduduk_id, nama, hubungan, umur, pekerjaan) VALUES
|
|
(1, 'Ahmad Subandi', 'Kepala Keluarga', 45, 'Buruh Harian'),
|
|
(1, 'Dewi Subandi', 'Istri', 40, 'Ibu Rumah Tangga'),
|
|
(1, 'Rizki Subandi', 'Anak', 18, 'Pelajar'),
|
|
(2, 'Siti Rahayu', 'Kepala Keluarga', 38, 'Pedagang Kecil'),
|
|
(2, 'Putri Rahayu', 'Anak', 12, 'Pelajar'),
|
|
(3, 'Budi Santoso', 'Kepala Keluarga', 52, 'Tidak Bekerja'),
|
|
(3, 'Sari Santoso', 'Istri', 48, 'Buruh Cuci'),
|
|
(4, 'Maria Yuliana', 'Kepala Keluarga', 41, 'Pedagang'),
|
|
(5, 'Wati Sari', 'Kepala Keluarga', 33, 'Buruh');
|