152 lines
8.8 KiB
SQL
152 lines
8.8 KiB
SQL
-- ============================================================
|
|
-- database.sql — WebGIS Poverty Mapping v2
|
|
-- Tiara Chontesa — D0141231070
|
|
-- ============================================================
|
|
|
|
CREATE DATABASE IF NOT EXISTS db_bantuan
|
|
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE db_bantuan;
|
|
|
|
-- ────────────────────────────────────────
|
|
-- USERS (3 role: admin, relawan, pengurus, pemerintah)
|
|
-- ────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS 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;
|
|
|
|
-- Seed: admin default (password: admin123)
|
|
INSERT INTO users (nama_lengkap, username, email, password, role) VALUES
|
|
('Administrator', 'admin', 'admin@webgis.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');
|
|
|
|
-- ────────────────────────────────────────
|
|
-- RUMAH IBADAH
|
|
-- ────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS 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,
|
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ────────────────────────────────────────
|
|
-- RUMAH MISKIN / KPM
|
|
-- ────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS 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 (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,
|
|
FOREIGN KEY (didata_oleh) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ────────────────────────────────────────
|
|
-- BENCANA
|
|
-- ────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS 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,
|
|
FOREIGN KEY (dibuat_oleh) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ────────────────────────────────────────
|
|
-- WARGA TERDAMPAK BENCANA (relasi N:M)
|
|
-- ────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS 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),
|
|
FOREIGN KEY (bencana_id) REFERENCES bencana(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (ditandai_oleh) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ────────────────────────────────────────
|
|
-- BANTUAN TERSALUR
|
|
-- ────────────────────────────────────────
|
|
USE db_poverty_mapping;
|
|
|
|
CREATE TABLE IF NOT EXISTS 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, -- <-- Tanda koma di sini tadinya ketinggalan
|
|
|
|
-- DEKLARASI HUBUNGAN RELASI (FOREIGN KEY)
|
|
FOREIGN KEY (warga_id) REFERENCES rumah_miskin(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL,
|
|
FOREIGN KEY (bencana_id) REFERENCES bencana(id) ON DELETE SET NULL,
|
|
FOREIGN KEY (disalurkan_oleh) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_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); |