-- ============================================ -- DATABASE: gis_penduduk_miskin -- GIS Web App - Rumah Ibadah & Penduduk Miskin -- ============================================ CREATE DATABASE IF NOT EXISTS gis_penduduk_miskin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE gis_penduduk_miskin; -- Tabel Rumah Ibadah CREATE TABLE IF NOT EXISTS rumah_ibadah ( id INT AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(200) NOT NULL, jenis ENUM('Masjid','Gereja','Pura','Vihara','Kelenteng','Lainnya') DEFAULT 'Masjid', alamat TEXT, pic VARCHAR(150) COMMENT 'Person In Charge', no_wa VARCHAR(20), lat DOUBLE NOT NULL, lng DOUBLE NOT NULL, radius INT DEFAULT 500 COMMENT 'Radius dalam meter', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- Tabel Penduduk Miskin CREATE TABLE IF NOT EXISTS penduduk_miskin ( id INT AUTO_INCREMENT PRIMARY KEY, nama_kk VARCHAR(200) NOT NULL COMMENT 'Nama Kepala Keluarga', jumlah_anggota INT NOT NULL DEFAULT 1 COMMENT 'Jumlah Anggota KK', alamat TEXT, lat DOUBLE NOT NULL, lng DOUBLE NOT NULL, rumah_ibadah_id INT NULL COMMENT 'Rumah ibadah terdekat (FK)', jarak_ke_ibadah DOUBLE NULL COMMENT 'Jarak dalam meter ke rumah ibadah terdekat', 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 ); -- Index untuk performa query geospasial CREATE INDEX idx_rumah_ibadah_coords ON rumah_ibadah(lat, lng); CREATE INDEX idx_penduduk_coords ON penduduk_miskin(lat, lng); CREATE INDEX idx_penduduk_ibadah ON penduduk_miskin(rumah_ibadah_id); -- ===================== -- DATA CONTOH (Pontianak) -- ===================== INSERT INTO rumah_ibadah (nama, jenis, alamat, pic, no_wa, lat, lng, radius) VALUES ('Masjid Raya Mujahidin', 'Masjid', 'Jl. Ahmad Yani, Pontianak Selatan', 'H. Abdurrahman', '081234567890', -0.0397, 109.3319, 500), ('Masjid Jami Pontianak', 'Masjid', 'Jl. Tanjungpura, Pontianak Kota', 'H. Mukhlis', '081234567891', -0.0263, 109.3413, 500), ('GBI Pontianak', 'Gereja', 'Jl. Gajahmada, Pontianak Kota', 'Pdt. Stevanus', '081234567892', -0.0280, 109.3350, 500), ('Vihara Bodhisattva Karaniya Metta', 'Vihara', 'Jl. Khatulistiwa, Pontianak Utara', 'Bhikkhu Santoso', '081234567893', -0.0120, 109.3250, 500); INSERT INTO penduduk_miskin (nama_kk, jumlah_anggota, alamat, lat, lng) VALUES ('Budi Santoso', 4, 'Jl. Ahmad Yani Gg. 3, Pontianak', -0.0410, 109.3330), ('Siti Rahayu', 3, 'Jl. Ahmad Yani Gg. 5, Pontianak', -0.0380, 109.3310), ('Muhammad Amin', 5, 'Jl. Tanjungpura No. 12, Pontianak', -0.0255, 109.3420), ('Dewi Lestari', 2, 'Jl. Gajahmada No. 7, Pontianak', -0.0290, 109.3360), ('Hendra Kusuma', 6, 'Jl. Khatulistiwa Gg. 2, Pontianak', -0.0130, 109.3260), ('Yanti Wulandari', 3, 'Jl. Reformasi, Pontianak Utara', -0.0100, 109.3240), ('Agus Prasetyo', 4, 'Jl. Sultan Hamid, Pontianak Barat', -0.0450, 109.3200); -- Update rumah_ibadah_id dan jarak untuk data contoh (akan dihitung via PHP)