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 @@
-- ============================================================ -- 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 */;