Update database.sql
This commit is contained in:
+135
-51
@@ -1,16 +1,31 @@
|
|||||||
-- ============================================================
|
-- ============================================================
|
||||||
-- database.sql — WebGIS Poverty Mapping v2
|
-- database_fix.sql
|
||||||
-- Tiara Chontesa — D0141231070
|
-- 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.
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
|
|
||||||
CREATE DATABASE IF NOT EXISTS db_bantuan
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
||||||
USE db_bantuan;
|
|
||||||
|
|
||||||
-- ────────────────────────────────────────
|
DROP TABLE IF EXISTS bantuan_tersalur;
|
||||||
-- USERS (3 role: admin, relawan, pengurus, pemerintah)
|
DROP TABLE IF EXISTS bencana_terdampak;
|
||||||
-- ────────────────────────────────────────
|
DROP TABLE IF EXISTS bencana;
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
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,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nama_lengkap VARCHAR(150) NOT NULL,
|
nama_lengkap VARCHAR(150) NOT NULL,
|
||||||
username VARCHAR(80) NOT NULL UNIQUE,
|
username VARCHAR(80) NOT NULL UNIQUE,
|
||||||
@@ -21,16 +36,18 @@ CREATE TABLE IF NOT EXISTS users (
|
|||||||
aktif TINYINT(1) NOT NULL DEFAULT 1,
|
aktif TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
last_login TIMESTAMP NULL
|
last_login TIMESTAMP NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- Seed: admin default (password: admin123)
|
INSERT INTO users (nama_lengkap, username, email, password, role, aktif) VALUES
|
||||||
INSERT INTO users (nama_lengkap, username, email, password, role) VALUES
|
('Administrator', 'admin', 'admin@webgis.id', 'password', 'admin', 1),
|
||||||
('Administrator', 'admin', 'admin@webgis.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');
|
('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
|
-- RUMAH IBADAH
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
CREATE TABLE rumah_ibadah (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nama_ibadah VARCHAR(150) NOT NULL,
|
nama_ibadah VARCHAR(150) NOT NULL,
|
||||||
kategori ENUM('Masjid','Musholla','Gereja','Pura','Vihara','Klenteng','Lainnya') NOT NULL DEFAULT 'Masjid',
|
kategori ENUM('Masjid','Musholla','Gereja','Pura','Vihara','Klenteng','Lainnya') NOT NULL DEFAULT 'Masjid',
|
||||||
@@ -44,13 +61,15 @@ CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
|||||||
dibuat_oleh INT DEFAULT NULL,
|
dibuat_oleh INT DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
FOREIGN KEY (dibuat_oleh) REFERENCES users(id) ON DELETE SET NULL
|
CONSTRAINT fk_ibadah_user
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id)
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
-- RUMAH MISKIN / KPM
|
-- RUMAH MISKIN / KPM
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
CREATE TABLE IF NOT EXISTS rumah_miskin (
|
CREATE TABLE rumah_miskin (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nama_kepala_keluarga VARCHAR(150) NOT NULL,
|
nama_kepala_keluarga VARCHAR(150) NOT NULL,
|
||||||
nik VARCHAR(16) DEFAULT NULL,
|
nik VARCHAR(16) DEFAULT NULL,
|
||||||
@@ -66,19 +85,21 @@ CREATE TABLE IF NOT EXISTS rumah_miskin (
|
|||||||
kecamatan VARCHAR(100) DEFAULT NULL,
|
kecamatan VARCHAR(100) DEFAULT NULL,
|
||||||
keterangan TEXT DEFAULT NULL,
|
keterangan TEXT DEFAULT NULL,
|
||||||
status_bantuan ENUM('Belum Terbantu','Terjangkau','Sudah Menerima') NOT NULL DEFAULT 'Belum Terbantu',
|
status_bantuan ENUM('Belum Terbantu','Terjangkau','Sudah Menerima') NOT NULL DEFAULT 'Belum Terbantu',
|
||||||
prioritas TINYINT(1) DEFAULT 0 COMMENT '1 = prioritas tinggi (terdampak bencana)',
|
prioritas TINYINT(1) DEFAULT 0 COMMENT '1 = prioritas tinggi atau terdampak bencana',
|
||||||
lat DOUBLE NOT NULL,
|
lat DOUBLE NOT NULL,
|
||||||
lng DOUBLE NOT NULL,
|
lng DOUBLE NOT NULL,
|
||||||
didata_oleh INT DEFAULT NULL,
|
didata_oleh INT DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
FOREIGN KEY (didata_oleh) REFERENCES users(id) ON DELETE SET NULL
|
CONSTRAINT fk_miskin_user
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
FOREIGN KEY (didata_oleh) REFERENCES users(id)
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
-- BENCANA
|
-- BENCANA
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
CREATE TABLE IF NOT EXISTS bencana (
|
CREATE TABLE bencana (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nama_bencana VARCHAR(150) NOT NULL,
|
nama_bencana VARCHAR(150) NOT NULL,
|
||||||
jenis ENUM('Banjir','Kebakaran','Gempa Bumi','Longsor','Angin Puting Beliung','Lainnya') NOT NULL DEFAULT 'Banjir',
|
jenis ENUM('Banjir','Kebakaran','Gempa Bumi','Longsor','Angin Puting Beliung','Lainnya') NOT NULL DEFAULT 'Banjir',
|
||||||
@@ -91,13 +112,15 @@ CREATE TABLE IF NOT EXISTS bencana (
|
|||||||
radius_m INT DEFAULT 500,
|
radius_m INT DEFAULT 500,
|
||||||
dibuat_oleh INT DEFAULT NULL,
|
dibuat_oleh INT DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
FOREIGN KEY (dibuat_oleh) REFERENCES users(id) ON DELETE SET NULL
|
CONSTRAINT fk_bencana_user
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id)
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
-- WARGA TERDAMPAK BENCANA (relasi N:M)
|
-- WARGA TERDAMPAK BENCANA
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
CREATE TABLE IF NOT EXISTS bencana_terdampak (
|
CREATE TABLE bencana_terdampak (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
bencana_id INT NOT NULL,
|
bencana_id INT NOT NULL,
|
||||||
warga_id INT NOT NULL,
|
warga_id INT NOT NULL,
|
||||||
@@ -106,17 +129,23 @@ CREATE TABLE IF NOT EXISTS bencana_terdampak (
|
|||||||
ditandai_oleh INT DEFAULT NULL,
|
ditandai_oleh INT DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
UNIQUE KEY unik_bencana_warga (bencana_id, warga_id),
|
UNIQUE KEY unik_bencana_warga (bencana_id, warga_id),
|
||||||
FOREIGN KEY (bencana_id) REFERENCES bencana(id) ON DELETE CASCADE,
|
CONSTRAINT fk_terdampak_bencana
|
||||||
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id) ON DELETE CASCADE,
|
FOREIGN KEY (bencana_id) REFERENCES bencana(id)
|
||||||
FOREIGN KEY (ditandai_oleh) REFERENCES users(id) ON DELETE SET NULL
|
ON DELETE CASCADE,
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
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
|
-- BANTUAN TERSALUR
|
||||||
-- ────────────────────────────────────────
|
-- Perbaikan utama ada di tabel ini.
|
||||||
USE db_poverty_mapping;
|
-- Tidak ada USE db_poverty_mapping lagi.
|
||||||
|
-- ============================================================
|
||||||
CREATE TABLE IF NOT EXISTS bantuan_tersalur (
|
CREATE TABLE bantuan_tersalur (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
warga_id INT NOT NULL,
|
warga_id INT NOT NULL,
|
||||||
ibadah_id INT DEFAULT NULL,
|
ibadah_id INT DEFAULT NULL,
|
||||||
@@ -128,25 +157,80 @@ CREATE TABLE IF NOT EXISTS bantuan_tersalur (
|
|||||||
keterangan TEXT DEFAULT NULL,
|
keterangan TEXT DEFAULT NULL,
|
||||||
disalurkan_oleh INT DEFAULT NULL,
|
disalurkan_oleh INT DEFAULT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
status ENUM('Pending','Tersalurkan') NOT NULL DEFAULT 'Tersalurkan',
|
status ENUM('Pending','Tersalurkan') NOT NULL DEFAULT 'Tersalurkan',
|
||||||
status_konfirmasi ENUM('Menunggu','Dikonfirmasi','Ditolak') NOT NULL DEFAULT 'Menunggu',
|
status_konfirmasi ENUM('Menunggu','Dikonfirmasi','Ditolak') NOT NULL DEFAULT 'Menunggu',
|
||||||
nama_penerima_konfirmasi VARCHAR(150) DEFAULT NULL,
|
nama_penerima_konfirmasi VARCHAR(150) DEFAULT NULL,
|
||||||
catatan_konfirmasi TEXT DEFAULT NULL,
|
catatan_konfirmasi TEXT DEFAULT NULL,
|
||||||
dikonfirmasi_oleh INT DEFAULT NULL,
|
dikonfirmasi_oleh INT DEFAULT NULL,
|
||||||
tgl_konfirmasi TIMESTAMP NULL DEFAULT NULL, -- <-- Tanda koma di sini tadinya ketinggalan
|
tgl_konfirmasi TIMESTAMP NULL DEFAULT NULL,
|
||||||
|
waktu_konfirmasi TIMESTAMP NULL DEFAULT NULL,
|
||||||
|
|
||||||
-- DEKLARASI HUBUNGAN RELASI (FOREIGN KEY)
|
CONSTRAINT fk_bantuan_warga
|
||||||
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id) ON DELETE CASCADE,
|
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id)
|
||||||
FOREIGN KEY (ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL,
|
ON DELETE CASCADE,
|
||||||
FOREIGN KEY (bencana_id) REFERENCES bencana(id) ON DELETE SET NULL,
|
CONSTRAINT fk_bantuan_ibadah
|
||||||
FOREIGN KEY (disalurkan_oleh) REFERENCES users(id) ON DELETE SET NULL
|
FOREIGN KEY (ibadah_id) REFERENCES rumah_ibadah(id)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
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
|
-- INDEX
|
||||||
-- ────────────────────────────────────────
|
-- ============================================================
|
||||||
CREATE INDEX idx_miskin_coords ON rumah_miskin (lat, lng);
|
CREATE INDEX idx_miskin_coords ON rumah_miskin (lat, lng);
|
||||||
CREATE INDEX idx_ibadah_coords ON rumah_ibadah (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_status ON rumah_miskin (status_bantuan);
|
||||||
CREATE INDEX idx_miskin_prioritas ON rumah_miskin (prioritas);
|
CREATE INDEX idx_miskin_prioritas ON rumah_miskin (prioritas);
|
||||||
CREATE INDEX idx_bencana_status ON bencana (status);
|
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
|
||||||
|
-- ============================================================
|
||||||
Reference in New Issue
Block a user