236 lines
11 KiB
SQL
236 lines
11 KiB
SQL
-- ============================================================
|
|
-- database_fix.sql
|
|
-- WebGIS Poverty Mapping - UAS SIG Tiara
|
|
-- Versi sudah diperbaiki untuk Coolify
|
|
-- PENTING:
|
|
-- 1. Tidak memakai CREATE DATABASE.
|
|
-- 2. Tidak memakai USE db_poverty_mapping / USE db_bantuan.
|
|
-- 3. Akan memakai database aktif dari Coolify.
|
|
-- 4. File ini akan reset tabel utama.
|
|
-- ============================================================
|
|
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
DROP TABLE IF EXISTS bantuan_tersalur;
|
|
DROP TABLE IF EXISTS bencana_terdampak;
|
|
DROP TABLE IF EXISTS bencana;
|
|
DROP TABLE IF EXISTS rumah_miskin;
|
|
DROP TABLE IF EXISTS rumah_ibadah;
|
|
DROP TABLE IF EXISTS users;
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|
|
|
|
-- ============================================================
|
|
-- USERS
|
|
-- Role: admin, relawan, pengurus, pemerintah
|
|
-- Password demo semua akun: password
|
|
-- ============================================================
|
|
CREATE TABLE users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_lengkap VARCHAR(150) NOT NULL,
|
|
username VARCHAR(80) NOT NULL UNIQUE,
|
|
email VARCHAR(150) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
role ENUM('admin','relawan','pengurus','pemerintah') NOT NULL DEFAULT 'relawan',
|
|
foto VARCHAR(255) DEFAULT NULL,
|
|
aktif TINYINT(1) NOT NULL DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
last_login TIMESTAMP NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
INSERT INTO users (nama_lengkap, username, email, password, role, aktif) VALUES
|
|
('Administrator', 'admin', 'admin@webgis.id', 'password', 'admin', 1),
|
|
('Pemerintah Demo', 'pemerintah', 'pemerintah@webgis.id', 'password', 'pemerintah', 1),
|
|
('Pengurus Rumah Ibadah Demo', 'pengurus', 'pengurus@webgis.id', 'password', 'pengurus', 1),
|
|
('Relawan Demo', 'relawan', 'relawan@webgis.id', 'password', 'relawan', 1);
|
|
|
|
-- ============================================================
|
|
-- RUMAH IBADAH
|
|
-- ============================================================
|
|
CREATE TABLE rumah_ibadah (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_ibadah VARCHAR(150) NOT NULL,
|
|
kategori ENUM('Masjid','Musholla','Gereja','Pura','Vihara','Klenteng','Lainnya') NOT NULL DEFAULT 'Masjid',
|
|
alamat VARCHAR(255) DEFAULT NULL,
|
|
nama_pengurus VARCHAR(100) DEFAULT NULL,
|
|
no_telp VARCHAR(20) DEFAULT NULL,
|
|
kuota_bantuan INT NOT NULL DEFAULT 20,
|
|
radius_m INT NOT NULL DEFAULT 300,
|
|
lat DOUBLE NOT NULL,
|
|
lng DOUBLE NOT NULL,
|
|
dibuat_oleh INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_ibadah_user
|
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- RUMAH MISKIN / KPM
|
|
-- ============================================================
|
|
CREATE TABLE rumah_miskin (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_kepala_keluarga VARCHAR(150) NOT NULL,
|
|
nik VARCHAR(16) DEFAULT NULL,
|
|
tanggal_lahir DATE DEFAULT NULL,
|
|
jenis_kelamin ENUM('Laki-laki','Perempuan') DEFAULT 'Laki-laki',
|
|
jumlah_tanggungan TINYINT DEFAULT 0,
|
|
pendapatan_bulanan BIGINT DEFAULT 0,
|
|
pekerjaan VARCHAR(100) DEFAULT NULL,
|
|
kondisi_rumah ENUM('Layak','Tidak Layak','Sangat Tidak Layak') NOT NULL DEFAULT 'Tidak Layak',
|
|
no_telp VARCHAR(20) DEFAULT NULL,
|
|
rt_rw VARCHAR(20) DEFAULT NULL,
|
|
kelurahan VARCHAR(100) DEFAULT NULL,
|
|
kecamatan VARCHAR(100) DEFAULT NULL,
|
|
keterangan TEXT DEFAULT NULL,
|
|
status_bantuan ENUM('Belum Terbantu','Terjangkau','Sudah Menerima') NOT NULL DEFAULT 'Belum Terbantu',
|
|
prioritas TINYINT(1) DEFAULT 0 COMMENT '1 = prioritas tinggi atau terdampak bencana',
|
|
lat DOUBLE NOT NULL,
|
|
lng DOUBLE NOT NULL,
|
|
didata_oleh INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_miskin_user
|
|
FOREIGN KEY (didata_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- BENCANA
|
|
-- ============================================================
|
|
CREATE TABLE bencana (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_bencana VARCHAR(150) NOT NULL,
|
|
jenis ENUM('Banjir','Kebakaran','Gempa Bumi','Longsor','Angin Puting Beliung','Lainnya') NOT NULL DEFAULT 'Banjir',
|
|
tanggal DATE NOT NULL,
|
|
lokasi VARCHAR(255) DEFAULT NULL,
|
|
deskripsi TEXT DEFAULT NULL,
|
|
status ENUM('Aktif','Selesai') NOT NULL DEFAULT 'Aktif',
|
|
lat DOUBLE DEFAULT NULL,
|
|
lng DOUBLE DEFAULT NULL,
|
|
radius_m INT DEFAULT 500,
|
|
dibuat_oleh INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_bencana_user
|
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- WARGA TERDAMPAK BENCANA
|
|
-- ============================================================
|
|
CREATE TABLE bencana_terdampak (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
bencana_id INT NOT NULL,
|
|
warga_id INT NOT NULL,
|
|
tingkat ENUM('Ringan','Sedang','Berat') DEFAULT 'Sedang',
|
|
keterangan TEXT DEFAULT NULL,
|
|
ditandai_oleh INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE KEY unik_bencana_warga (bencana_id, warga_id),
|
|
CONSTRAINT fk_terdampak_bencana
|
|
FOREIGN KEY (bencana_id) REFERENCES bencana(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT fk_terdampak_warga
|
|
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT fk_terdampak_user
|
|
FOREIGN KEY (ditandai_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- BANTUAN TERSALUR
|
|
-- Perbaikan utama ada di tabel ini.
|
|
-- Tidak ada USE db_poverty_mapping lagi.
|
|
-- ============================================================
|
|
CREATE TABLE bantuan_tersalur (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
warga_id INT NOT NULL,
|
|
ibadah_id INT DEFAULT NULL,
|
|
bencana_id INT DEFAULT NULL,
|
|
jenis_bantuan VARCHAR(150) NOT NULL,
|
|
jumlah VARCHAR(100) DEFAULT NULL COMMENT 'mis: 50kg beras, Rp500.000',
|
|
tanggal DATE NOT NULL,
|
|
petugas VARCHAR(150) DEFAULT NULL,
|
|
keterangan TEXT DEFAULT NULL,
|
|
disalurkan_oleh INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
status ENUM('Pending','Tersalurkan') NOT NULL DEFAULT 'Tersalurkan',
|
|
status_konfirmasi ENUM('Menunggu','Dikonfirmasi','Ditolak') NOT NULL DEFAULT 'Menunggu',
|
|
nama_penerima_konfirmasi VARCHAR(150) DEFAULT NULL,
|
|
catatan_konfirmasi TEXT DEFAULT NULL,
|
|
dikonfirmasi_oleh INT DEFAULT NULL,
|
|
tgl_konfirmasi TIMESTAMP NULL DEFAULT NULL,
|
|
waktu_konfirmasi TIMESTAMP NULL DEFAULT NULL,
|
|
|
|
CONSTRAINT fk_bantuan_warga
|
|
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT fk_bantuan_ibadah
|
|
FOREIGN KEY (ibadah_id) REFERENCES rumah_ibadah(id)
|
|
ON DELETE SET NULL,
|
|
CONSTRAINT fk_bantuan_bencana
|
|
FOREIGN KEY (bencana_id) REFERENCES bencana(id)
|
|
ON DELETE SET NULL,
|
|
CONSTRAINT fk_bantuan_user
|
|
FOREIGN KEY (disalurkan_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL,
|
|
CONSTRAINT fk_bantuan_konfirmasi_user
|
|
FOREIGN KEY (dikonfirmasi_oleh) REFERENCES users(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- INDEX
|
|
-- ============================================================
|
|
CREATE INDEX idx_miskin_coords ON rumah_miskin (lat, lng);
|
|
CREATE INDEX idx_ibadah_coords ON rumah_ibadah (lat, lng);
|
|
CREATE INDEX idx_miskin_status ON rumah_miskin (status_bantuan);
|
|
CREATE INDEX idx_miskin_prioritas ON rumah_miskin (prioritas);
|
|
CREATE INDEX idx_bencana_status ON bencana (status);
|
|
CREATE INDEX idx_bantuan_status_konfirmasi ON bantuan_tersalur (status_konfirmasi);
|
|
CREATE INDEX idx_bantuan_warga ON bantuan_tersalur (warga_id);
|
|
|
|
-- ============================================================
|
|
-- DATA DUMMY RINGAN SUPAYA DASHBOARD TIDAK KOSONG
|
|
-- ============================================================
|
|
INSERT INTO rumah_ibadah
|
|
(nama_ibadah, kategori, alamat, nama_pengurus, no_telp, kuota_bantuan, radius_m, lat, lng, dibuat_oleh)
|
|
VALUES
|
|
('Masjid Raya Mujahidin', 'Masjid', 'Jl. Jenderal Ahmad Yani, Pontianak', 'Pengurus Demo', '081234567890', 50, 500, -0.0554, 109.3465, 3),
|
|
('Masjid Jami Sultan Syarif Abdurrahman', 'Masjid', 'Pontianak Timur', 'Pengurus Demo', '081234567891', 40, 500, -0.0239, 109.3446, 3);
|
|
|
|
INSERT INTO rumah_miskin
|
|
(nama_kepala_keluarga, nik, tanggal_lahir, jenis_kelamin, jumlah_tanggungan, pendapatan_bulanan, pekerjaan, kondisi_rumah, no_telp, rt_rw, kelurahan, kecamatan, keterangan, status_bantuan, prioritas, lat, lng, didata_oleh)
|
|
VALUES
|
|
('Budi Santoso', '6171010101010001', '1978-01-10', 'Laki-laki', 4, 800000, 'Buruh Harian', 'Tidak Layak', '081200000001', 'RT 01/RW 02', 'Sungai Jawi', 'Pontianak Kota', 'Data dummy untuk testing', 'Belum Terbantu', 0, -0.0412, 109.3210, 4),
|
|
('Siti Aminah', '6171010101010002', '1982-05-12', 'Perempuan', 3, 650000, 'Pedagang Kecil', 'Sangat Tidak Layak', '081200000002', 'RT 03/RW 01', 'Benua Melayu Darat', 'Pontianak Selatan', 'Data dummy untuk testing', 'Belum Terbantu', 1, -0.0550, 109.3450, 4),
|
|
('Rahmat Hidayat', '6171010101010003', '1975-09-22', 'Laki-laki', 5, 900000, 'Tidak Tetap', 'Tidak Layak', '081200000003', 'RT 02/RW 04', 'Siantan Hulu', 'Pontianak Utara', 'Data dummy untuk testing', 'Terjangkau', 0, -0.0060, 109.3300, 4);
|
|
|
|
INSERT INTO bencana
|
|
(nama_bencana, jenis, tanggal, lokasi, deskripsi, status, lat, lng, radius_m, dibuat_oleh)
|
|
VALUES
|
|
('Banjir Rob Pontianak', 'Banjir', CURDATE(), 'Pontianak Utara', 'Data dummy bencana untuk pengujian sistem', 'Aktif', -0.0060, 109.3300, 700, 2);
|
|
|
|
INSERT INTO bencana_terdampak
|
|
(bencana_id, warga_id, tingkat, keterangan, ditandai_oleh)
|
|
VALUES
|
|
(1, 2, 'Sedang', 'Terdampak banjir rob', 4);
|
|
|
|
INSERT INTO bantuan_tersalur
|
|
(warga_id, ibadah_id, bencana_id, jenis_bantuan, jumlah, tanggal, petugas, keterangan, disalurkan_oleh, status, status_konfirmasi)
|
|
VALUES
|
|
(1, 1, NULL, 'Paket Sembako', '1 paket', CURDATE(), 'Relawan Demo', 'Data dummy bantuan', 4, 'Tersalurkan', 'Menunggu'),
|
|
(3, 2, NULL, 'Beras', '10 kg', CURDATE(), 'Relawan Demo', 'Data dummy bantuan', 4, 'Tersalurkan', 'Dikonfirmasi');
|
|
|
|
-- ============================================================
|
|
-- SELESAI
|
|
-- Akun demo:
|
|
-- admin / password
|
|
-- pemerintah / password
|
|
-- pengurus / password
|
|
-- relawan / password
|
|
-- ============================================================ |