Revisi DB
This commit is contained in:
+410
-322
@@ -1,363 +1,451 @@
|
|||||||
-- ============================================================
|
-- phpMyAdmin SQL Dump
|
||||||
-- SIG Penduduk Miskin v2.0 – Database Schema
|
-- version 5.2.3
|
||||||
-- WebGIS Pendataan & Monitoring Bantuan Sosial
|
-- https://www.phpmyadmin.net/
|
||||||
-- Update: 2026 | Versi: 2.0
|
--
|
||||||
-- ============================================================
|
-- Host: localhost:3306
|
||||||
|
-- Generation Time: Jun 11, 2026 at 02:26 PM
|
||||||
|
-- Server version: 8.0.30
|
||||||
|
-- PHP Version: 8.3.30
|
||||||
|
|
||||||
CREATE DATABASE IF NOT EXISTS sig_kemiskinan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
USE sig_kemiskinan;
|
START TRANSACTION;
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ============================================================
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
-- TABEL 1: users
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
-- ============================================================
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(100) NOT NULL,
|
|
||||||
username VARCHAR(50) NOT NULL UNIQUE,
|
|
||||||
password VARCHAR(255) NOT NULL COMMENT 'bcrypt hash',
|
|
||||||
role ENUM('admin','petugas','pimpinan') NOT NULL DEFAULT 'petugas',
|
|
||||||
wilayah_tugas VARCHAR(100) NULL COMMENT 'Kelurahan/RT wilayah tugas petugas',
|
|
||||||
aktif TINYINT(1) DEFAULT 1,
|
|
||||||
last_login TIMESTAMP NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
INDEX idx_username (username),
|
|
||||||
INDEX idx_role (role)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- TABEL 2: wilayah
|
-- Database: `sig_kemiskinan`
|
||||||
-- ============================================================
|
--
|
||||||
CREATE TABLE IF NOT EXISTS wilayah (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
kelurahan VARCHAR(100) NOT NULL,
|
|
||||||
kecamatan VARCHAR(100) NOT NULL,
|
|
||||||
kota VARCHAR(100) NOT NULL DEFAULT 'Pontianak',
|
|
||||||
rt VARCHAR(10) NULL,
|
|
||||||
rw VARCHAR(10) NULL,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
INDEX idx_kelurahan (kelurahan),
|
|
||||||
INDEX idx_kecamatan (kecamatan)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ============================================================
|
-- --------------------------------------------------------
|
||||||
-- TABEL 3: rumah_ibadah (Tidak berubah)
|
|
||||||
-- ============================================================
|
|
||||||
CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
nama VARCHAR(255) NOT NULL,
|
|
||||||
jenis ENUM('masjid','musholla','gereja','pura','vihara','klenteng','lainnya') DEFAULT 'masjid',
|
|
||||||
alamat TEXT,
|
|
||||||
pic VARCHAR(255) COMMENT 'Person In Charge / Penanggung Jawab',
|
|
||||||
no_wa VARCHAR(20),
|
|
||||||
lat DECIMAL(10, 8) NOT NULL,
|
|
||||||
lng DECIMAL(11, 8) 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 4: penduduk_miskin (DIPERLUAS dari v1.1)
|
-- Table structure for table `bantuan_penduduk`
|
||||||
-- ============================================================
|
--
|
||||||
CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
|
|
||||||
-- Identitas Kepala Keluarga
|
CREATE TABLE `bantuan_penduduk` (
|
||||||
nik_kk VARCHAR(16) NOT NULL UNIQUE COMMENT 'NIK KK 16 digit',
|
`id` int NOT NULL,
|
||||||
nama_kk VARCHAR(255) NOT NULL COMMENT 'Nama Kepala Keluarga',
|
`penduduk_id` int NOT NULL,
|
||||||
no_hp VARCHAR(20) NULL COMMENT 'No HP/WhatsApp',
|
`bantuan_id` int NOT NULL,
|
||||||
|
`status` enum('aktif','tidak_aktif','dicabut') DEFAULT 'aktif',
|
||||||
|
`tanggal_mulai` date DEFAULT NULL,
|
||||||
|
`tanggal_selesai` date DEFAULT NULL,
|
||||||
|
`nominal_bulanan` decimal(12,2) DEFAULT NULL,
|
||||||
|
`nomor_kpj` varchar(50) DEFAULT NULL COMMENT 'Nomor kartu/KPJ bantuan',
|
||||||
|
`keterangan` text,
|
||||||
|
`diinput_oleh` int DEFAULT NULL COMMENT 'FK users',
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- Lokasi
|
--
|
||||||
alamat TEXT NULL,
|
-- Dumping data for table `bantuan_penduduk`
|
||||||
wilayah_id INT NULL,
|
--
|
||||||
rt VARCHAR(10) NULL,
|
|
||||||
rw VARCHAR(10) NULL,
|
|
||||||
lat DECIMAL(10,8) NOT NULL,
|
|
||||||
lng DECIMAL(11,8) NOT NULL,
|
|
||||||
|
|
||||||
-- Data Keluarga
|
INSERT INTO `bantuan_penduduk` (`id`, `penduduk_id`, `bantuan_id`, `status`, `tanggal_mulai`, `tanggal_selesai`, `nominal_bulanan`, `nomor_kpj`, `keterangan`, `diinput_oleh`, `created_at`, `updated_at`) VALUES
|
||||||
jumlah_anggota INT NOT NULL DEFAULT 1,
|
(12, 14, 6, 'tidak_aktif', NULL, NULL, NULL, NULL, NULL, 1, '2026-06-10 12:38:35', '2026-06-10 13:50:53'),
|
||||||
jumlah_anak_sekolah INT NOT NULL DEFAULT 0,
|
(13, 16, 3, 'aktif', NULL, NULL, NULL, NULL, NULL, 2, '2026-06-10 13:52:56', '2026-06-10 13:52:56'),
|
||||||
|
(14, 16, 6, 'aktif', NULL, NULL, NULL, NULL, NULL, 2, '2026-06-10 13:52:56', '2026-06-10 13:52:56');
|
||||||
|
|
||||||
-- Data Ekonomi
|
-- --------------------------------------------------------
|
||||||
penghasilan_bulanan DECIMAL(12,2) NULL COMMENT 'Penghasilan per bulan (Rp)',
|
|
||||||
sumber_penghasilan VARCHAR(255) NULL,
|
|
||||||
status_pekerjaan ENUM(
|
|
||||||
'tidak_bekerja','buruh_harian','petani','nelayan',
|
|
||||||
'pedagang','pegawai_swasta','wiraswasta','lainnya'
|
|
||||||
) DEFAULT 'tidak_bekerja',
|
|
||||||
|
|
||||||
-- Kategori Kemiskinan (dihitung otomatis)
|
--
|
||||||
kategori_kemiskinan ENUM('sangat_miskin','miskin','hampir_miskin','mampu') DEFAULT 'sangat_miskin',
|
-- Table structure for table `foto_rumah`
|
||||||
|
--
|
||||||
|
|
||||||
-- Kondisi Rumah
|
CREATE TABLE `foto_rumah` (
|
||||||
kondisi_rumah ENUM('sangat_tidak_layak','tidak_layak','layak') DEFAULT 'tidak_layak',
|
`id` int NOT NULL,
|
||||||
kepemilikan_rumah ENUM('milik_sendiri','kontrak','menumpang','lainnya') DEFAULT 'milik_sendiri',
|
`penduduk_id` int NOT NULL,
|
||||||
|
`file_path` varchar(500) NOT NULL COMMENT 'Path relatif dari root web',
|
||||||
|
`lat_foto` decimal(10,8) DEFAULT NULL COMMENT 'Koordinat GPS saat foto diambil',
|
||||||
|
`lng_foto` decimal(11,8) DEFAULT NULL,
|
||||||
|
`accuracy_meter` decimal(8,2) DEFAULT NULL COMMENT 'Akurasi GPS dalam meter',
|
||||||
|
`is_primary` tinyint(1) DEFAULT '0' COMMENT '1 = foto utama (thumbnail peta)',
|
||||||
|
`ukuran_kb` int DEFAULT NULL,
|
||||||
|
`keterangan` varchar(255) DEFAULT NULL,
|
||||||
|
`diambil_oleh` int DEFAULT NULL COMMENT 'FK users',
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- Status BPJS
|
--
|
||||||
punya_bpjs TINYINT(1) DEFAULT 0,
|
-- Dumping data for table `foto_rumah`
|
||||||
jenis_bpjs ENUM('PBI','mandiri','tidak_punya') DEFAULT 'tidak_punya',
|
--
|
||||||
|
|
||||||
-- Relasi ke Rumah Ibadah (kompatibel v1.1)
|
INSERT INTO `foto_rumah` (`id`, `penduduk_id`, `file_path`, `lat_foto`, `lng_foto`, `accuracy_meter`, `is_primary`, `ukuran_kb`, `keterangan`, `diambil_oleh`, `created_at`) VALUES
|
||||||
rumah_ibadah_id INT NULL,
|
(2, 14, 'assets/img/uploads/foto_14_1781095115_a7fa167f.jpeg', NULL, NULL, NULL, 1, 82, 'Foto Utama dari Form Penduduk', 2, '2026-06-10 12:38:35'),
|
||||||
jarak_ke_ibadah DECIMAL(10,2) NULL COMMENT 'Jarak dalam meter',
|
(3, 15, 'assets/img/uploads/foto_15_1781099424_25542d1c.jpg', NULL, NULL, NULL, 1, 37, 'Foto Utama dari Form Penduduk', 1, '2026-06-10 13:50:24'),
|
||||||
|
(4, 16, 'assets/img/uploads/foto_16_1781099576_96e58d0d.jpeg', NULL, NULL, NULL, 1, 33, 'Foto Utama dari Form Penduduk', 2, '2026-06-10 13:52:56');
|
||||||
|
|
||||||
-- Status Verifikasi
|
-- --------------------------------------------------------
|
||||||
status_verifikasi ENUM('belum_diverifikasi','terverifikasi','ditolak') DEFAULT 'belum_diverifikasi',
|
|
||||||
catatan_verifikasi TEXT NULL,
|
|
||||||
|
|
||||||
-- Audit Trail
|
--
|
||||||
surveyor_id INT NULL COMMENT 'FK users - petugas input',
|
-- Table structure for table `jenis_bantuan`
|
||||||
verified_by INT NULL COMMENT 'FK users - admin verifikator',
|
--
|
||||||
verified_at TIMESTAMP NULL,
|
|
||||||
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
CREATE TABLE `jenis_bantuan` (
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`id` int NOT NULL,
|
||||||
|
`kode` varchar(20) NOT NULL,
|
||||||
|
`nama` varchar(100) NOT NULL,
|
||||||
|
`deskripsi` text,
|
||||||
|
`warna_badge` varchar(7) DEFAULT '#4f8ef7' COMMENT 'Hex color badge',
|
||||||
|
`aktif` tinyint(1) DEFAULT '1',
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- Foreign Keys
|
--
|
||||||
CONSTRAINT fk_pm_wilayah FOREIGN KEY (wilayah_id) REFERENCES wilayah(id) ON DELETE SET NULL,
|
-- Dumping data for table `jenis_bantuan`
|
||||||
CONSTRAINT fk_pm_ibadah FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL,
|
--
|
||||||
CONSTRAINT fk_pm_surveyor FOREIGN KEY (surveyor_id) REFERENCES users(id) ON DELETE SET NULL,
|
|
||||||
CONSTRAINT fk_pm_verif FOREIGN KEY (verified_by) REFERENCES users(id) ON DELETE SET NULL,
|
|
||||||
|
|
||||||
INDEX idx_nik (nik_kk),
|
INSERT INTO `jenis_bantuan` (`id`, `kode`, `nama`, `deskripsi`, `warna_badge`, `aktif`, `created_at`) VALUES
|
||||||
INDEX idx_lat_lng (lat, lng),
|
(1, 'PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat untuk KK miskin', '#22c55e', 1, '2026-06-10 12:29:57'),
|
||||||
INDEX idx_kategori (kategori_kemiskinan),
|
(2, 'BPNT', 'Bantuan Pangan Non Tunai', 'Sembako via e-warong setiap 2 bulan', '#3b82f6', 1, '2026-06-10 12:29:57'),
|
||||||
INDEX idx_wilayah (wilayah_id),
|
(3, 'KIS', 'Kartu Indonesia Sehat', 'Akses layanan kesehatan gratis (BPJS PBI)', '#ec4899', 1, '2026-06-10 12:29:57'),
|
||||||
INDEX idx_status_v (status_verifikasi),
|
(4, 'BLT', 'Bantuan Langsung Tunai', 'Bantuan tunai darurat/sementara dari desa/kel', '#f59e0b', 1, '2026-06-10 12:29:57'),
|
||||||
INDEX idx_surveyor (surveyor_id)
|
(5, 'BST', 'Bantuan Sosial Tunai', 'Bantuan sosial tunai dari Kemensos', '#8b5cf6', 1, '2026-06-10 12:29:57'),
|
||||||
);
|
(6, 'PIP', 'Program Indonesia Pintar', 'Bantuan pendidikan untuk anak sekolah', '#06b6d4', 1, '2026-06-10 12:29:57');
|
||||||
|
|
||||||
-- ============================================================
|
-- --------------------------------------------------------
|
||||||
-- TABEL 5: foto_rumah
|
|
||||||
-- ============================================================
|
|
||||||
CREATE TABLE IF NOT EXISTS foto_rumah (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
penduduk_id INT NOT NULL,
|
|
||||||
file_path VARCHAR(500) NOT NULL COMMENT 'Path relatif dari root web',
|
|
||||||
lat_foto DECIMAL(10,8) NULL COMMENT 'Koordinat GPS saat foto diambil',
|
|
||||||
lng_foto DECIMAL(11,8) NULL,
|
|
||||||
accuracy_meter DECIMAL(8,2) NULL COMMENT 'Akurasi GPS dalam meter',
|
|
||||||
is_primary TINYINT(1) DEFAULT 0 COMMENT '1 = foto utama (thumbnail peta)',
|
|
||||||
ukuran_kb INT NULL,
|
|
||||||
keterangan VARCHAR(255) NULL,
|
|
||||||
diambil_oleh INT NULL COMMENT 'FK users',
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
|
|
||||||
CONSTRAINT fk_fr_penduduk FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id) ON DELETE CASCADE,
|
--
|
||||||
CONSTRAINT fk_fr_user FOREIGN KEY (diambil_oleh) REFERENCES users(id) ON DELETE SET NULL,
|
-- Table structure for table `notifikasi`
|
||||||
|
--
|
||||||
|
|
||||||
INDEX idx_penduduk (penduduk_id),
|
CREATE TABLE `notifikasi` (
|
||||||
INDEX idx_primary (penduduk_id, is_primary)
|
`id` int NOT NULL,
|
||||||
);
|
`user_id` int DEFAULT NULL COMMENT 'NULL = broadcast semua admin',
|
||||||
|
`jenis` enum('belum_bantuan','belum_verifikasi','data_usang','info') DEFAULT 'info',
|
||||||
|
`judul` varchar(255) NOT NULL,
|
||||||
|
`pesan` text NOT NULL,
|
||||||
|
`penduduk_id` int DEFAULT NULL COMMENT 'Referensi penduduk terkait',
|
||||||
|
`sudah_dibaca` tinyint(1) DEFAULT '0',
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- TABEL 6: jenis_bantuan
|
-- Dumping data for table `notifikasi`
|
||||||
-- ============================================================
|
--
|
||||||
CREATE TABLE IF NOT EXISTS jenis_bantuan (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
kode VARCHAR(20) NOT NULL UNIQUE,
|
|
||||||
nama VARCHAR(100) NOT NULL,
|
|
||||||
deskripsi TEXT NULL,
|
|
||||||
warna_badge VARCHAR(7) DEFAULT '#4f8ef7' COMMENT 'Hex color badge',
|
|
||||||
aktif TINYINT(1) DEFAULT 1,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ============================================================
|
INSERT INTO `notifikasi` (`id`, `user_id`, `jenis`, `judul`, `pesan`, `penduduk_id`, `sudah_dibaca`, `created_at`) VALUES
|
||||||
-- TABEL 7: bantuan_penduduk (Many-to-Many pivot)
|
(1, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Hamid Husin belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
-- ============================================================
|
(2, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Marlina belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
CREATE TABLE IF NOT EXISTS bantuan_penduduk (
|
(3, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Siti Aminah belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
(4, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK bapak 1 belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
penduduk_id INT NOT NULL,
|
(5, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Bapak 2 belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
bantuan_id INT NOT NULL,
|
(6, NULL, 'belum_bantuan', 'KK Sangat Miskin Tanpa Bantuan', 'KK Marlina berkategori sangat miskin namun belum menerima bantuan apapun.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
status ENUM('aktif','tidak_aktif','dicabut') DEFAULT 'aktif',
|
(7, NULL, 'belum_bantuan', 'KK Sangat Miskin Tanpa Bantuan', 'KK Siti Aminah berkategori sangat miskin namun belum menerima bantuan apapun.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
tanggal_mulai DATE NULL,
|
(8, NULL, 'belum_bantuan', 'KK Sangat Miskin Tanpa Bantuan', 'KK bapak 1 berkategori sangat miskin namun belum menerima bantuan apapun.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
tanggal_selesai DATE NULL,
|
(9, NULL, 'belum_bantuan', 'KK Sangat Miskin Tanpa Bantuan', 'KK Bapak 2 berkategori sangat miskin namun belum menerima bantuan apapun.', NULL, 1, '2026-06-10 12:31:00'),
|
||||||
nominal_bulanan DECIMAL(12,2) NULL,
|
(10, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Budi (NIK: 6171111111111111) menunggu verifikasi admin.', NULL, 1, '2026-06-10 12:34:54'),
|
||||||
nomor_kpj VARCHAR(50) NULL COMMENT 'Nomor kartu/KPJ bantuan',
|
(11, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Siti (NIK: 6172222222222222) menunggu verifikasi admin.', 14, 1, '2026-06-10 12:38:35'),
|
||||||
keterangan TEXT NULL,
|
(12, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Budi (NIK: 6171111111111111) menunggu verifikasi admin.', 15, 0, '2026-06-10 13:50:24'),
|
||||||
diinput_oleh INT NULL COMMENT 'FK users',
|
(13, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Wahyu (NIK: 6173333333333333) menunggu verifikasi admin.', 16, 0, '2026-06-10 13:52:56');
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
|
|
||||||
CONSTRAINT fk_bp_penduduk FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id) ON DELETE CASCADE,
|
-- --------------------------------------------------------
|
||||||
CONSTRAINT fk_bp_bantuan FOREIGN KEY (bantuan_id) REFERENCES jenis_bantuan(id) ON DELETE RESTRICT,
|
|
||||||
CONSTRAINT fk_bp_user FOREIGN KEY (diinput_oleh) REFERENCES users(id) ON DELETE SET NULL,
|
|
||||||
|
|
||||||
UNIQUE KEY uq_penduduk_bantuan (penduduk_id, bantuan_id),
|
--
|
||||||
INDEX idx_penduduk (penduduk_id),
|
-- Table structure for table `penduduk_miskin`
|
||||||
INDEX idx_bantuan (bantuan_id),
|
--
|
||||||
INDEX idx_status (status)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ============================================================
|
CREATE TABLE `penduduk_miskin` (
|
||||||
-- TABEL 8: riwayat_verifikasi (Audit Trail)
|
`id` int NOT NULL,
|
||||||
-- ============================================================
|
`nik_kk` varchar(16) NOT NULL COMMENT 'NIK KK 16 digit',
|
||||||
CREATE TABLE IF NOT EXISTS riwayat_verifikasi (
|
`nama_kk` varchar(255) NOT NULL COMMENT 'Nama Kepala Keluarga',
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
`no_hp` varchar(20) DEFAULT NULL COMMENT 'No HP/WhatsApp',
|
||||||
penduduk_id INT NOT NULL,
|
`alamat` text,
|
||||||
user_id INT NOT NULL,
|
`wilayah_id` int DEFAULT NULL,
|
||||||
aksi ENUM('submit','verifikasi','tolak','update','hapus') NOT NULL,
|
`rt` varchar(10) DEFAULT NULL,
|
||||||
catatan TEXT NULL,
|
`rw` varchar(10) DEFAULT NULL,
|
||||||
data_lama JSON NULL COMMENT 'Snapshot data sebelum perubahan',
|
`lat` decimal(10,8) NOT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
`lng` decimal(11,8) NOT NULL,
|
||||||
|
`jumlah_anggota` int NOT NULL DEFAULT '1',
|
||||||
|
`jumlah_anak_sekolah` int NOT NULL DEFAULT '0',
|
||||||
|
`penghasilan_bulanan` decimal(12,2) DEFAULT NULL COMMENT 'Penghasilan per bulan (Rp)',
|
||||||
|
`sumber_penghasilan` varchar(255) DEFAULT NULL,
|
||||||
|
`status_pekerjaan` enum('tidak_bekerja','buruh_harian','petani','nelayan','pedagang','pegawai_swasta','wiraswasta','lainnya') DEFAULT 'tidak_bekerja',
|
||||||
|
`kategori_kemiskinan` enum('sangat_miskin','miskin','hampir_miskin','mampu') DEFAULT 'sangat_miskin',
|
||||||
|
`kondisi_rumah` enum('sangat_tidak_layak','tidak_layak','layak') DEFAULT 'tidak_layak',
|
||||||
|
`kepemilikan_rumah` enum('milik_sendiri','kontrak','menumpang','lainnya') DEFAULT 'milik_sendiri',
|
||||||
|
`punya_bpjs` tinyint(1) DEFAULT '0',
|
||||||
|
`jenis_bpjs` enum('PBI','mandiri','tidak_punya') DEFAULT 'tidak_punya',
|
||||||
|
`rumah_ibadah_id` int DEFAULT NULL,
|
||||||
|
`jarak_ke_ibadah` decimal(10,2) DEFAULT NULL COMMENT 'Jarak dalam meter',
|
||||||
|
`status_verifikasi` enum('belum_diverifikasi','terverifikasi','ditolak') DEFAULT 'belum_diverifikasi',
|
||||||
|
`catatan_verifikasi` text,
|
||||||
|
`surveyor_id` int DEFAULT NULL COMMENT 'FK users - petugas input',
|
||||||
|
`verified_by` int DEFAULT NULL COMMENT 'FK users - admin verifikator',
|
||||||
|
`verified_at` timestamp NULL DEFAULT NULL,
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
CONSTRAINT fk_rv_penduduk FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id) ON DELETE CASCADE,
|
--
|
||||||
CONSTRAINT fk_rv_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT,
|
-- Dumping data for table `penduduk_miskin`
|
||||||
|
--
|
||||||
|
|
||||||
INDEX idx_penduduk (penduduk_id),
|
INSERT INTO `penduduk_miskin` (`id`, `nik_kk`, `nama_kk`, `no_hp`, `alamat`, `wilayah_id`, `rt`, `rw`, `lat`, `lng`, `jumlah_anggota`, `jumlah_anak_sekolah`, `penghasilan_bulanan`, `sumber_penghasilan`, `status_pekerjaan`, `kategori_kemiskinan`, `kondisi_rumah`, `kepemilikan_rumah`, `punya_bpjs`, `jenis_bpjs`, `rumah_ibadah_id`, `jarak_ke_ibadah`, `status_verifikasi`, `catatan_verifikasi`, `surveyor_id`, `verified_by`, `verified_at`, `created_at`, `updated_at`) VALUES
|
||||||
INDEX idx_user (user_id),
|
(14, '6172222222222222', 'Siti', '083333333333', 'Jalan M. Syafe\'i, Kel. Bansir Laut, Pontianak, Kalimantan Barat', NULL, '01', '01', -0.06016363, 109.34164524, 3, 1, 4000000.00, 'Buruh Harian', 'buruh_harian', 'hampir_miskin', 'layak', 'kontrak', 1, 'PBI', NULL, NULL, 'terverifikasi', '', 2, 1, '2026-06-10 13:50:53', '2026-06-10 12:38:35', '2026-06-10 13:50:53'),
|
||||||
INDEX idx_tanggal (created_at)
|
(15, '6171111111111111', 'Budi', '082222222222', 'Kel. Akcaya, Pontianak, Kalimantan Barat', NULL, '01', '01', -0.04316969, 109.32604551, 5, 3, 10000000.00, 'Berdagang', 'pedagang', 'mampu', 'layak', 'milik_sendiri', 1, 'mandiri', 4, 175.04, 'belum_diverifikasi', NULL, 1, NULL, NULL, '2026-06-10 13:50:24', '2026-06-10 13:50:24'),
|
||||||
);
|
(16, '6173333333333333', 'Wahyu', '083333333333', 'Jalan Ahmad Marzuki, Kel. Akcaya, Pontianak, Kalimantan Barat', NULL, '01', '01', -0.03801720, 109.33443546, 4, 2, 5000000.00, 'PNS', 'lainnya', 'mampu', 'layak', 'milik_sendiri', 1, 'PBI', 5, 440.07, 'belum_diverifikasi', NULL, 2, NULL, NULL, '2026-06-10 13:52:56', '2026-06-10 13:52:56');
|
||||||
|
|
||||||
-- ============================================================
|
-- --------------------------------------------------------
|
||||||
-- TABEL 9: notifikasi
|
|
||||||
-- ============================================================
|
|
||||||
CREATE TABLE IF NOT EXISTS notifikasi (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
user_id INT NULL COMMENT 'NULL = broadcast semua admin',
|
|
||||||
jenis ENUM('belum_bantuan','belum_verifikasi','data_usang','info') DEFAULT 'info',
|
|
||||||
judul VARCHAR(255) NOT NULL,
|
|
||||||
pesan TEXT NOT NULL,
|
|
||||||
penduduk_id INT NULL COMMENT 'Referensi penduduk terkait',
|
|
||||||
sudah_dibaca TINYINT(1) DEFAULT 0,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
|
|
||||||
CONSTRAINT fk_notif_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
--
|
||||||
CONSTRAINT fk_notif_penduduk FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id) ON DELETE SET NULL,
|
-- Table structure for table `rumah_ibadah`
|
||||||
|
--
|
||||||
|
|
||||||
INDEX idx_user_baca (user_id, sudah_dibaca),
|
CREATE TABLE `rumah_ibadah` (
|
||||||
INDEX idx_jenis (jenis)
|
`id` int NOT NULL,
|
||||||
);
|
`nama` varchar(255) NOT NULL,
|
||||||
|
`jenis` enum('masjid','musholla','gereja','pura','vihara','klenteng','lainnya') DEFAULT 'masjid',
|
||||||
|
`alamat` text,
|
||||||
|
`pic` varchar(255) DEFAULT NULL COMMENT 'Person In Charge / Penanggung Jawab',
|
||||||
|
`no_wa` varchar(20) DEFAULT NULL,
|
||||||
|
`lat` decimal(10,8) NOT NULL,
|
||||||
|
`lng` decimal(11,8) NOT NULL,
|
||||||
|
`radius` int DEFAULT '500' COMMENT 'Radius dalam meter',
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- INDEX SPASIAL
|
-- Dumping data for table `rumah_ibadah`
|
||||||
-- ============================================================
|
--
|
||||||
CREATE INDEX idx_ri_lat_lng ON rumah_ibadah(lat, lng);
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
INSERT INTO `rumah_ibadah` (`id`, `nama`, `jenis`, `alamat`, `pic`, `no_wa`, `lat`, `lng`, `radius`, `created_at`, `updated_at`) VALUES
|
||||||
|
(4, 'Gereja Katolik Keluarga Kudus', 'gereja', 'Jalan Sutan Syahrir, Kel. Sungai Bangkong, Pontianak, Kalimantan Barat', 'Romo Yohanes Maria Puji', '081111111111', -0.04325718, 109.32447374, 600, '2026-06-10 12:33:10', '2026-06-10 13:48:54'),
|
||||||
|
(5, 'Masjid Mujahidin', 'masjid', 'Jalan Mujahidin, Kel. Akcaya, Pontianak, Kalimantan Barat', 'Pak Somad', '083333333333', -0.04147764, 109.33635592, 500, '2026-06-10 13:48:44', '2026-06-10 13:48:44');
|
||||||
|
|
||||||
-- ============================================================
|
-- --------------------------------------------------------
|
||||||
-- DATA AWAL: users
|
|
||||||
-- ============================================================
|
|
||||||
INSERT INTO users (nama, username, password, role) VALUES
|
|
||||||
('Administrator', 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin'),
|
|
||||||
('Petugas Survei', 'petugas', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'petugas'),
|
|
||||||
('Kepala Dinas', 'pimpinan', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'pimpinan');
|
|
||||||
-- Password semua akun: "password" (bcrypt)
|
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- DATA AWAL: wilayah
|
-- Table structure for table `users`
|
||||||
-- ============================================================
|
--
|
||||||
INSERT INTO wilayah (kelurahan, kecamatan, kota, rt, rw) VALUES
|
|
||||||
('Siantan Tengah', 'Pontianak Utara', 'Pontianak', '01', '01'),
|
|
||||||
('Siantan Tengah', 'Pontianak Utara', 'Pontianak', '02', '01'),
|
|
||||||
('Siantan Hilir', 'Pontianak Utara', 'Pontianak', '01', '02'),
|
|
||||||
('Batu Layang', 'Pontianak Utara', 'Pontianak', '01', '01'),
|
|
||||||
('Batu Layang', 'Pontianak Utara', 'Pontianak', '02', '02'),
|
|
||||||
('Saigon', 'Pontianak Timur', 'Pontianak', '01', '01'),
|
|
||||||
('Saigon', 'Pontianak Timur', 'Pontianak', '02', '01'),
|
|
||||||
('Tanjung Hulu', 'Pontianak Timur', 'Pontianak', '01', '01'),
|
|
||||||
('Parit Mayor', 'Pontianak Timur', 'Pontianak', '01', '01'),
|
|
||||||
('Pontianak Kota', 'Pontianak Kota', 'Pontianak', '01', '01');
|
|
||||||
|
|
||||||
-- ============================================================
|
CREATE TABLE `users` (
|
||||||
-- DATA AWAL: rumah_ibadah
|
`id` int NOT NULL,
|
||||||
-- ============================================================
|
`nama` varchar(100) NOT NULL,
|
||||||
INSERT INTO rumah_ibadah (nama, jenis, alamat, pic, no_wa, lat, lng, radius) VALUES
|
`username` varchar(50) NOT NULL,
|
||||||
('Masjid Al-Ikhlas', 'masjid', 'Jl. Merdeka No. 1, Pontianak', 'Ahmad Fauzi', '081234567890', -0.0263303, 109.3425094, 500),
|
`password` varchar(255) NOT NULL COMMENT 'bcrypt hash',
|
||||||
('Masjid Ar-Rahmat', 'masjid', 'Jl. Gajah Mada No. 45, Pontianak', 'Budi Santoso', '082345678901', -0.0320000, 109.3380000, 500),
|
`role` enum('admin','petugas','pimpinan') NOT NULL DEFAULT 'petugas',
|
||||||
('Gereja Bethel', 'gereja', 'Jl. Diponegoro No. 12, Pontianak', 'Pendeta Yusuf', '083456789012', -0.0290000, 109.3450000, 500);
|
`wilayah_tugas` varchar(100) DEFAULT NULL COMMENT 'Kelurahan/RT wilayah tugas petugas',
|
||||||
|
`aktif` tinyint(1) DEFAULT '1',
|
||||||
|
`last_login` timestamp NULL DEFAULT NULL,
|
||||||
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- DATA AWAL: jenis_bantuan
|
-- Dumping data for table `users`
|
||||||
-- ============================================================
|
--
|
||||||
INSERT INTO jenis_bantuan (kode, nama, deskripsi, warna_badge) VALUES
|
|
||||||
('PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat untuk KK miskin', '#22c55e'),
|
|
||||||
('BPNT', 'Bantuan Pangan Non Tunai', 'Sembako via e-warong setiap 2 bulan', '#3b82f6'),
|
|
||||||
('KIS', 'Kartu Indonesia Sehat', 'Akses layanan kesehatan gratis (BPJS PBI)', '#ec4899'),
|
|
||||||
('BLT', 'Bantuan Langsung Tunai', 'Bantuan tunai darurat/sementara dari desa/kel', '#f59e0b'),
|
|
||||||
('BST', 'Bantuan Sosial Tunai', 'Bantuan sosial tunai dari Kemensos', '#8b5cf6'),
|
|
||||||
('PIP', 'Program Indonesia Pintar', 'Bantuan pendidikan untuk anak sekolah', '#06b6d4');
|
|
||||||
|
|
||||||
-- ============================================================
|
INSERT INTO `users` (`id`, `nama`, `username`, `password`, `role`, `wilayah_tugas`, `aktif`, `last_login`, `created_at`, `updated_at`) VALUES
|
||||||
-- DATA AWAL: penduduk_miskin (contoh)
|
(1, 'Administrator', 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin', NULL, 1, '2026-06-10 15:10:03', '2026-06-10 12:29:57', '2026-06-10 15:10:03'),
|
||||||
-- ============================================================
|
(2, 'Petugas Survei', 'petugas', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'petugas', NULL, 1, '2026-06-10 15:12:46', '2026-06-10 12:29:57', '2026-06-10 15:12:46'),
|
||||||
INSERT INTO penduduk_miskin (
|
(3, 'Kepala Dinas', 'pimpinan', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'pimpinan', NULL, 1, NULL, '2026-06-10 12:29:57', '2026-06-10 12:29:57');
|
||||||
nik_kk, nama_kk, no_hp, alamat, wilayah_id, rt, rw,
|
|
||||||
lat, lng, jumlah_anggota, jumlah_anak_sekolah,
|
|
||||||
penghasilan_bulanan, sumber_penghasilan, status_pekerjaan,
|
|
||||||
kategori_kemiskinan, kondisi_rumah, kepemilikan_rumah,
|
|
||||||
punya_bpjs, jenis_bpjs, status_verifikasi, surveyor_id
|
|
||||||
) VALUES
|
|
||||||
('6171010101010001', 'Suyatno', '081200000001', 'Jl. Merdeka Gg. III No. 5', 1, '01', '01', -0.0270000, 109.3430000, 4, 2, 850000, 'Buruh bangunan', 'buruh_harian', 'miskin', 'tidak_layak', 'menumpang', 1, 'PBI', 'terverifikasi', 1),
|
|
||||||
('6171010101010002', 'Rohani', '081200000002', 'Jl. Merdeka Gg. IV No. 2', 1, '02', '01', -0.0255000, 109.3420000, 3, 1, 450000, 'Jualan kecil', 'pedagang', 'sangat_miskin', 'sangat_tidak_layak','menumpang', 1, 'PBI', 'terverifikasi', 1),
|
|
||||||
('6171010101010003', 'Hamid Husin', '081200000003', 'Jl. Gajah Mada Gg. II No. 8', 2, '01', '02', -0.0315000, 109.3375000, 5, 3, 1200000, 'Ojek online', 'buruh_harian', 'mampu', 'tidak_layak', 'kontrak', 0, 'tidak_punya','belum_diverifikasi',2),
|
|
||||||
('6171010101010004', 'Yanti Susanti', '081200000004', 'Jl. Veteran No. 99', 3, '01', '01', -0.0500000, 109.3600000, 2, 0, 300000, 'Tidak ada', 'tidak_bekerja', 'sangat_miskin', 'sangat_tidak_layak','menumpang', 1, 'PBI', 'terverifikasi', 1),
|
|
||||||
('6171010101010005', 'Supriyadi', '081200000005', 'Jl. Budi Utomo No. 12', 4, '02', '01', -0.0340000, 109.3510000, 6, 4, 600000, 'Petani kecil', 'petani', 'miskin', 'tidak_layak', 'milik_sendiri', 1, 'PBI', 'terverifikasi', 1),
|
|
||||||
('6171010101010006', 'Marlina', '081200000006', 'Gg. Damai No. 3', 5, '01', '02', -0.0410000, 109.3480000, 3, 1, 200000, 'Buruh cuci', 'buruh_harian', 'sangat_miskin', 'sangat_tidak_layak','menumpang', 0, 'tidak_punya','belum_diverifikasi',2),
|
|
||||||
('6171010101010007', 'Junaidi', '081200000007', 'Jl. Khatulistiwa No. 45', 6, '01', '01', -0.0380000, 109.3550000, 4, 2, 950000, 'Nelayan', 'nelayan', 'miskin', 'tidak_layak', 'milik_sendiri', 1, 'mandiri', 'terverifikasi', 1),
|
|
||||||
('6171010101010008', 'Siti Aminah', '081200000008', 'Gg. Melati No. 7', 7, '02', '02', -0.0290000, 109.3395000, 5, 3, 400000, 'Pembantu RT', 'buruh_harian', 'sangat_miskin', 'sangat_tidak_layak','menumpang', 1, 'PBI', 'belum_diverifikasi',2),
|
|
||||||
('6171010101010009', 'Rahman', '081200000009', 'Jl. Tanjung Pura No. 88', 8, '01', '01', -0.0220000, 109.3460000, 3, 1, 750000, 'Pedagang kaki lima','pedagang', 'miskin', 'tidak_layak', 'kontrak', 0, 'tidak_punya','terverifikasi', 1),
|
|
||||||
('6171010101010010', 'Dewi Kartika', '081200000010', 'Gg. Bahagia No. 2', 9, '01', '01', -0.0450000, 109.3530000, 4, 2, 500000, 'Buruh pabrik', 'buruh_harian', 'sangat_miskin', 'tidak_layak', 'kontrak', 1, 'PBI', 'terverifikasi', 1);
|
|
||||||
|
|
||||||
-- ============================================================
|
-- --------------------------------------------------------
|
||||||
-- DATA AWAL: bantuan_penduduk
|
|
||||||
-- ============================================================
|
|
||||||
INSERT INTO bantuan_penduduk (penduduk_id, bantuan_id, status, tanggal_mulai, nominal_bulanan, diinput_oleh) VALUES
|
|
||||||
(1, 1, 'aktif', '2024-01-01', 500000, 1), -- Suyatno: PKH
|
|
||||||
(1, 2, 'aktif', '2024-01-01', 200000, 1), -- Suyatno: BPNT
|
|
||||||
(2, 1, 'aktif', '2023-07-01', 500000, 1), -- Rohani: PKH
|
|
||||||
(2, 3, 'aktif', '2023-07-01', 0, 1), -- Rohani: KIS
|
|
||||||
(4, 1, 'aktif', '2024-03-01', 500000, 1), -- Yanti: PKH
|
|
||||||
(4, 3, 'aktif', '2024-03-01', 0, 1), -- Yanti: KIS
|
|
||||||
(5, 2, 'aktif', '2024-02-01', 200000, 1), -- Supriyadi: BPNT
|
|
||||||
(7, 3, 'aktif', '2023-09-01', 0, 1), -- Junaidi: KIS
|
|
||||||
(9, 2, 'aktif', '2024-01-01', 200000, 1), -- Rahman: BPNT
|
|
||||||
(10, 1, 'aktif','2024-04-01', 500000, 1), -- Dewi: PKH
|
|
||||||
(10, 3, 'aktif','2024-04-01', 0, 1); -- Dewi: KIS
|
|
||||||
|
|
||||||
-- ============================================================
|
--
|
||||||
-- Update rumah_ibadah assignment (kompatibel v1.1)
|
-- Table structure for table `wilayah`
|
||||||
-- ============================================================
|
--
|
||||||
UPDATE penduduk_miskin pm
|
|
||||||
SET
|
CREATE TABLE `wilayah` (
|
||||||
rumah_ibadah_id = (
|
`id` int NOT NULL,
|
||||||
SELECT ri.id FROM rumah_ibadah ri
|
`kelurahan` varchar(100) NOT NULL,
|
||||||
WHERE (
|
`kecamatan` varchar(100) NOT NULL,
|
||||||
6371000 * ACOS(GREATEST(-1, LEAST(1,
|
`kota` varchar(100) NOT NULL DEFAULT 'Pontianak',
|
||||||
COS(RADIANS(pm.lat)) * COS(RADIANS(ri.lat)) *
|
`rt` varchar(10) DEFAULT NULL,
|
||||||
COS(RADIANS(ri.lng) - RADIANS(pm.lng)) +
|
`rw` varchar(10) DEFAULT NULL,
|
||||||
SIN(RADIANS(pm.lat)) * SIN(RADIANS(ri.lat))
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
)))
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
) <= ri.radius
|
|
||||||
ORDER BY (
|
--
|
||||||
6371000 * ACOS(GREATEST(-1, LEAST(1,
|
-- Dumping data for table `wilayah`
|
||||||
COS(RADIANS(pm.lat)) * COS(RADIANS(ri.lat)) *
|
--
|
||||||
COS(RADIANS(ri.lng) - RADIANS(pm.lng)) +
|
|
||||||
SIN(RADIANS(pm.lat)) * SIN(RADIANS(ri.lat))
|
INSERT INTO `wilayah` (`id`, `kelurahan`, `kecamatan`, `kota`, `rt`, `rw`, `created_at`) VALUES
|
||||||
)))
|
(1, 'Siantan Tengah', 'Pontianak Utara', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
|
||||||
) ASC
|
(2, 'Siantan Tengah', 'Pontianak Utara', 'Pontianak', '02', '01', '2026-06-10 12:29:57'),
|
||||||
LIMIT 1
|
(3, 'Siantan Hilir', 'Pontianak Utara', 'Pontianak', '01', '02', '2026-06-10 12:29:57'),
|
||||||
),
|
(4, 'Batu Layang', 'Pontianak Utara', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
|
||||||
jarak_ke_ibadah = (
|
(5, 'Batu Layang', 'Pontianak Utara', 'Pontianak', '02', '02', '2026-06-10 12:29:57'),
|
||||||
SELECT ROUND(
|
(6, 'Saigon', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
|
||||||
6371000 * ACOS(GREATEST(-1, LEAST(1,
|
(7, 'Saigon', 'Pontianak Timur', 'Pontianak', '02', '01', '2026-06-10 12:29:57'),
|
||||||
COS(RADIANS(pm.lat)) * COS(RADIANS(ri.lat)) *
|
(8, 'Tanjung Hulu', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
|
||||||
COS(RADIANS(ri.lng) - RADIANS(pm.lng)) +
|
(9, 'Parit Mayor', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
|
||||||
SIN(RADIANS(pm.lat)) * SIN(RADIANS(ri.lat))
|
(10, 'Pontianak Kota', 'Pontianak Kota', 'Pontianak', '01', '01', '2026-06-10 12:29:57');
|
||||||
))), 2
|
|
||||||
) FROM rumah_ibadah ri
|
--
|
||||||
WHERE (
|
-- Indexes for dumped tables
|
||||||
6371000 * ACOS(GREATEST(-1, LEAST(1,
|
--
|
||||||
COS(RADIANS(pm.lat)) * COS(RADIANS(ri.lat)) *
|
|
||||||
COS(RADIANS(ri.lng) - RADIANS(pm.lng)) +
|
--
|
||||||
SIN(RADIANS(pm.lat)) * SIN(RADIANS(ri.lat))
|
-- Indexes for table `bantuan_penduduk`
|
||||||
)))
|
--
|
||||||
) <= ri.radius
|
ALTER TABLE `bantuan_penduduk`
|
||||||
LIMIT 1
|
ADD PRIMARY KEY (`id`),
|
||||||
);
|
ADD UNIQUE KEY `uq_penduduk_bantuan` (`penduduk_id`,`bantuan_id`),
|
||||||
|
ADD KEY `fk_bp_user` (`diinput_oleh`),
|
||||||
|
ADD KEY `idx_penduduk` (`penduduk_id`),
|
||||||
|
ADD KEY `idx_bantuan` (`bantuan_id`),
|
||||||
|
ADD KEY `idx_status` (`status`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `foto_rumah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `foto_rumah`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `fk_fr_user` (`diambil_oleh`),
|
||||||
|
ADD KEY `idx_penduduk` (`penduduk_id`),
|
||||||
|
ADD KEY `idx_primary` (`penduduk_id`,`is_primary`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `jenis_bantuan`
|
||||||
|
--
|
||||||
|
ALTER TABLE `jenis_bantuan`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD UNIQUE KEY `kode` (`kode`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `notifikasi`
|
||||||
|
--
|
||||||
|
ALTER TABLE `notifikasi`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `fk_notif_penduduk` (`penduduk_id`),
|
||||||
|
ADD KEY `idx_user_baca` (`user_id`,`sudah_dibaca`),
|
||||||
|
ADD KEY `idx_jenis` (`jenis`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `penduduk_miskin`
|
||||||
|
--
|
||||||
|
ALTER TABLE `penduduk_miskin`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD UNIQUE KEY `nik_kk` (`nik_kk`),
|
||||||
|
ADD KEY `fk_pm_ibadah` (`rumah_ibadah_id`),
|
||||||
|
ADD KEY `fk_pm_verif` (`verified_by`),
|
||||||
|
ADD KEY `idx_nik` (`nik_kk`),
|
||||||
|
ADD KEY `idx_lat_lng` (`lat`,`lng`),
|
||||||
|
ADD KEY `idx_kategori` (`kategori_kemiskinan`),
|
||||||
|
ADD KEY `idx_wilayah` (`wilayah_id`),
|
||||||
|
ADD KEY `idx_status_v` (`status_verifikasi`),
|
||||||
|
ADD KEY `idx_surveyor` (`surveyor_id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `rumah_ibadah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `rumah_ibadah`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `idx_ri_lat_lng` (`lat`,`lng`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `users`
|
||||||
|
--
|
||||||
|
ALTER TABLE `users`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD UNIQUE KEY `username` (`username`),
|
||||||
|
ADD KEY `idx_username` (`username`),
|
||||||
|
ADD KEY `idx_role` (`role`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `wilayah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `wilayah`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `idx_kelurahan` (`kelurahan`),
|
||||||
|
ADD KEY `idx_kecamatan` (`kecamatan`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for dumped tables
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `bantuan_penduduk`
|
||||||
|
--
|
||||||
|
ALTER TABLE `bantuan_penduduk`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `foto_rumah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `foto_rumah`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `jenis_bantuan`
|
||||||
|
--
|
||||||
|
ALTER TABLE `jenis_bantuan`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `notifikasi`
|
||||||
|
--
|
||||||
|
ALTER TABLE `notifikasi`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `penduduk_miskin`
|
||||||
|
--
|
||||||
|
ALTER TABLE `penduduk_miskin`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `rumah_ibadah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `rumah_ibadah`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `users`
|
||||||
|
--
|
||||||
|
ALTER TABLE `users`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `wilayah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `wilayah`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for dumped tables
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `bantuan_penduduk`
|
||||||
|
--
|
||||||
|
ALTER TABLE `bantuan_penduduk`
|
||||||
|
ADD CONSTRAINT `fk_bp_bantuan` FOREIGN KEY (`bantuan_id`) REFERENCES `jenis_bantuan` (`id`) ON DELETE RESTRICT,
|
||||||
|
ADD CONSTRAINT `fk_bp_penduduk` FOREIGN KEY (`penduduk_id`) REFERENCES `penduduk_miskin` (`id`) ON DELETE CASCADE,
|
||||||
|
ADD CONSTRAINT `fk_bp_user` FOREIGN KEY (`diinput_oleh`) REFERENCES `users` (`id`) ON DELETE SET NULL;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `foto_rumah`
|
||||||
|
--
|
||||||
|
ALTER TABLE `foto_rumah`
|
||||||
|
ADD CONSTRAINT `fk_fr_penduduk` FOREIGN KEY (`penduduk_id`) REFERENCES `penduduk_miskin` (`id`) ON DELETE CASCADE,
|
||||||
|
ADD CONSTRAINT `fk_fr_user` FOREIGN KEY (`diambil_oleh`) REFERENCES `users` (`id`) ON DELETE SET NULL;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `notifikasi`
|
||||||
|
--
|
||||||
|
ALTER TABLE `notifikasi`
|
||||||
|
ADD CONSTRAINT `fk_notif_penduduk` FOREIGN KEY (`penduduk_id`) REFERENCES `penduduk_miskin` (`id`) ON DELETE SET NULL,
|
||||||
|
ADD CONSTRAINT `fk_notif_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `penduduk_miskin`
|
||||||
|
--
|
||||||
|
ALTER TABLE `penduduk_miskin`
|
||||||
|
ADD CONSTRAINT `fk_pm_ibadah` FOREIGN KEY (`rumah_ibadah_id`) REFERENCES `rumah_ibadah` (`id`) ON DELETE SET NULL,
|
||||||
|
ADD CONSTRAINT `fk_pm_surveyor` FOREIGN KEY (`surveyor_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
|
||||||
|
ADD CONSTRAINT `fk_pm_verif` FOREIGN KEY (`verified_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
|
||||||
|
ADD CONSTRAINT `fk_pm_wilayah` FOREIGN KEY (`wilayah_id`) REFERENCES `wilayah` (`id`) ON DELETE SET NULL;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
|||||||
Reference in New Issue
Block a user