Revisi DB

This commit is contained in:
L4zyL4mb
2026-06-12 14:30:47 +07:00
parent b285c06333
commit ffcf9771fa
+410 -322
View File
@@ -1,363 +1,451 @@
-- ============================================================
-- SIG Penduduk Miskin v2.0 Database Schema
-- WebGIS Pendataan & Monitoring Bantuan Sosial
-- Update: 2026 | Versi: 2.0
-- ============================================================
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- 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;
USE sig_kemiskinan;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
SET FOREIGN_KEY_CHECKS = 0;
-- ============================================================
-- TABEL 1: users
-- ============================================================
CREATE TABLE IF NOT EXISTS users (
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)
);
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
-- ============================================================
-- TABEL 2: wilayah
-- ============================================================
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)
);
--
-- Database: `sig_kemiskinan`
--
-- ============================================================
-- 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)
-- ============================================================
CREATE TABLE IF NOT EXISTS penduduk_miskin (
id INT AUTO_INCREMENT PRIMARY KEY,
--
-- Table structure for table `bantuan_penduduk`
--
-- Identitas Kepala Keluarga
nik_kk VARCHAR(16) NOT NULL UNIQUE COMMENT 'NIK KK 16 digit',
nama_kk VARCHAR(255) NOT NULL COMMENT 'Nama Kepala Keluarga',
no_hp VARCHAR(20) NULL COMMENT 'No HP/WhatsApp',
CREATE TABLE `bantuan_penduduk` (
`id` int NOT NULL,
`penduduk_id` int NOT NULL,
`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,
wilayah_id INT NULL,
rt VARCHAR(10) NULL,
rw VARCHAR(10) NULL,
lat DECIMAL(10,8) NOT NULL,
lng DECIMAL(11,8) NOT NULL,
--
-- Dumping data for table `bantuan_penduduk`
--
-- Data Keluarga
jumlah_anggota INT NOT NULL DEFAULT 1,
jumlah_anak_sekolah INT NOT NULL DEFAULT 0,
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
(12, 14, 6, 'tidak_aktif', NULL, NULL, NULL, NULL, NULL, 1, '2026-06-10 12:38:35', '2026-06-10 13:50:53'),
(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
kondisi_rumah ENUM('sangat_tidak_layak','tidak_layak','layak') DEFAULT 'tidak_layak',
kepemilikan_rumah ENUM('milik_sendiri','kontrak','menumpang','lainnya') DEFAULT 'milik_sendiri',
CREATE TABLE `foto_rumah` (
`id` int NOT NULL,
`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,
jenis_bpjs ENUM('PBI','mandiri','tidak_punya') DEFAULT 'tidak_punya',
--
-- Dumping data for table `foto_rumah`
--
-- Relasi ke Rumah Ibadah (kompatibel v1.1)
rumah_ibadah_id INT NULL,
jarak_ke_ibadah DECIMAL(10,2) NULL COMMENT 'Jarak dalam meter',
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
(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'),
(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',
verified_by INT NULL COMMENT 'FK users - admin verifikator',
verified_at TIMESTAMP NULL,
--
-- Table structure for table `jenis_bantuan`
--
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CREATE TABLE `jenis_bantuan` (
`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,
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,
--
-- Dumping data for table `jenis_bantuan`
--
INDEX idx_nik (nik_kk),
INDEX idx_lat_lng (lat, lng),
INDEX idx_kategori (kategori_kemiskinan),
INDEX idx_wilayah (wilayah_id),
INDEX idx_status_v (status_verifikasi),
INDEX idx_surveyor (surveyor_id)
);
INSERT INTO `jenis_bantuan` (`id`, `kode`, `nama`, `deskripsi`, `warna_badge`, `aktif`, `created_at`) VALUES
(1, 'PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat untuk KK miskin', '#22c55e', 1, '2026-06-10 12:29:57'),
(2, 'BPNT', 'Bantuan Pangan Non Tunai', 'Sembako via e-warong setiap 2 bulan', '#3b82f6', 1, '2026-06-10 12:29:57'),
(3, 'KIS', 'Kartu Indonesia Sehat', 'Akses layanan kesehatan gratis (BPJS PBI)', '#ec4899', 1, '2026-06-10 12:29:57'),
(4, 'BLT', 'Bantuan Langsung Tunai', 'Bantuan tunai darurat/sementara dari desa/kel', '#f59e0b', 1, '2026-06-10 12:29:57'),
(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),
INDEX idx_primary (penduduk_id, is_primary)
);
CREATE TABLE `notifikasi` (
`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
-- ============================================================
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
);
--
-- Dumping data for table `notifikasi`
--
-- ============================================================
-- TABEL 7: bantuan_penduduk (Many-to-Many pivot)
-- ============================================================
CREATE TABLE IF NOT EXISTS bantuan_penduduk (
id INT AUTO_INCREMENT PRIMARY KEY,
penduduk_id INT NOT NULL,
bantuan_id INT NOT NULL,
status ENUM('aktif','tidak_aktif','dicabut') DEFAULT 'aktif',
tanggal_mulai DATE NULL,
tanggal_selesai DATE NULL,
nominal_bulanan DECIMAL(12,2) NULL,
nomor_kpj VARCHAR(50) NULL COMMENT 'Nomor kartu/KPJ bantuan',
keterangan TEXT NULL,
diinput_oleh INT NULL COMMENT 'FK users',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INSERT INTO `notifikasi` (`id`, `user_id`, `jenis`, `judul`, `pesan`, `penduduk_id`, `sudah_dibaca`, `created_at`) VALUES
(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'),
(3, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Siti Aminah belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
(4, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK bapak 1 belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
(5, NULL, 'belum_verifikasi', 'Data Menunggu Verifikasi', 'KK Bapak 2 belum diverifikasi.', NULL, 1, '2026-06-10 12:31:00'),
(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'),
(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'),
(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'),
(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'),
(10, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Budi (NIK: 6171111111111111) menunggu verifikasi admin.', NULL, 1, '2026-06-10 12:34:54'),
(11, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Siti (NIK: 6172222222222222) menunggu verifikasi admin.', 14, 1, '2026-06-10 12:38:35'),
(12, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Budi (NIK: 6171111111111111) menunggu verifikasi admin.', 15, 0, '2026-06-10 13:50:24'),
(13, NULL, 'belum_verifikasi', 'Data Baru Belum Diverifikasi', 'Data KK Wahyu (NIK: 6173333333333333) menunggu verifikasi admin.', 16, 0, '2026-06-10 13:52:56');
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),
INDEX idx_bantuan (bantuan_id),
INDEX idx_status (status)
);
--
-- Table structure for table `penduduk_miskin`
--
-- ============================================================
-- TABEL 8: riwayat_verifikasi (Audit Trail)
-- ============================================================
CREATE TABLE IF NOT EXISTS riwayat_verifikasi (
id INT AUTO_INCREMENT PRIMARY KEY,
penduduk_id INT NOT NULL,
user_id INT NOT NULL,
aksi ENUM('submit','verifikasi','tolak','update','hapus') NOT NULL,
catatan TEXT NULL,
data_lama JSON NULL COMMENT 'Snapshot data sebelum perubahan',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CREATE TABLE `penduduk_miskin` (
`id` int NOT NULL,
`nik_kk` varchar(16) NOT NULL COMMENT 'NIK KK 16 digit',
`nama_kk` varchar(255) NOT NULL COMMENT 'Nama Kepala Keluarga',
`no_hp` varchar(20) DEFAULT NULL COMMENT 'No HP/WhatsApp',
`alamat` text,
`wilayah_id` int DEFAULT NULL,
`rt` varchar(10) DEFAULT NULL,
`rw` varchar(10) DEFAULT NULL,
`lat` decimal(10,8) NOT NULL,
`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),
INDEX idx_user (user_id),
INDEX idx_tanggal (created_at)
);
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
(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'),
(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),
INDEX idx_jenis (jenis)
);
CREATE TABLE `rumah_ibadah` (
`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
-- ============================================================
CREATE INDEX idx_ri_lat_lng ON rumah_ibadah(lat, lng);
--
-- Dumping data for table `rumah_ibadah`
--
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
-- ============================================================
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');
--
-- Table structure for table `users`
--
-- ============================================================
-- DATA AWAL: rumah_ibadah
-- ============================================================
INSERT INTO rumah_ibadah (nama, jenis, alamat, pic, no_wa, lat, lng, radius) VALUES
('Masjid Al-Ikhlas', 'masjid', 'Jl. Merdeka No. 1, Pontianak', 'Ahmad Fauzi', '081234567890', -0.0263303, 109.3425094, 500),
('Masjid Ar-Rahmat', 'masjid', 'Jl. Gajah Mada No. 45, Pontianak', 'Budi Santoso', '082345678901', -0.0320000, 109.3380000, 500),
('Gereja Bethel', 'gereja', 'Jl. Diponegoro No. 12, Pontianak', 'Pendeta Yusuf', '083456789012', -0.0290000, 109.3450000, 500);
CREATE TABLE `users` (
`id` int NOT NULL,
`nama` varchar(100) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL COMMENT 'bcrypt hash',
`role` enum('admin','petugas','pimpinan') NOT NULL DEFAULT 'petugas',
`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
-- ============================================================
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');
--
-- Dumping data for table `users`
--
-- ============================================================
-- DATA AWAL: penduduk_miskin (contoh)
-- ============================================================
INSERT INTO penduduk_miskin (
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);
INSERT INTO `users` (`id`, `nama`, `username`, `password`, `role`, `wilayah_tugas`, `aktif`, `last_login`, `created_at`, `updated_at`) VALUES
(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'),
(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');
-- ============================================================
-- 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)
-- ============================================================
UPDATE penduduk_miskin pm
SET
rumah_ibadah_id = (
SELECT ri.id FROM rumah_ibadah ri
WHERE (
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))
)))
) <= ri.radius
ORDER BY (
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))
)))
) ASC
LIMIT 1
),
jarak_ke_ibadah = (
SELECT ROUND(
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))
))), 2
) FROM rumah_ibadah ri
WHERE (
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))
)))
) <= ri.radius
LIMIT 1
);
--
-- Table structure for table `wilayah`
--
CREATE TABLE `wilayah` (
`id` int NOT NULL,
`kelurahan` varchar(100) NOT NULL,
`kecamatan` varchar(100) NOT NULL,
`kota` varchar(100) NOT NULL DEFAULT 'Pontianak',
`rt` varchar(10) DEFAULT NULL,
`rw` varchar(10) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- Dumping data for table `wilayah`
--
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'),
(2, 'Siantan Tengah', 'Pontianak Utara', 'Pontianak', '02', '01', '2026-06-10 12:29:57'),
(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'),
(5, 'Batu Layang', 'Pontianak Utara', 'Pontianak', '02', '02', '2026-06-10 12:29:57'),
(6, 'Saigon', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
(7, 'Saigon', 'Pontianak Timur', 'Pontianak', '02', '01', '2026-06-10 12:29:57'),
(8, 'Tanjung Hulu', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
(9, 'Parit Mayor', 'Pontianak Timur', 'Pontianak', '01', '01', '2026-06-10 12:29:57'),
(10, 'Pontianak Kota', 'Pontianak Kota', 'Pontianak', '01', '01', '2026-06-10 12:29:57');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `bantuan_penduduk`
--
ALTER TABLE `bantuan_penduduk`
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 */;