First commit / commit pertama
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
-- ============================================================
|
||||
-- WebGIS Pontianak - Struktur Database
|
||||
-- ============================================================
|
||||
-- Jalankan file ini terlebih dahulu sebelum menjalankan seed data.
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_db
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE webgis_db;
|
||||
|
||||
-- ============================================================
|
||||
-- 1. Users
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
role ENUM('admin', 'user') NOT NULL DEFAULT 'user',
|
||||
nama_lengkap VARCHAR(100) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 2. Data Spasial
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
deskripsi TEXT,
|
||||
buka_24_jam TINYINT(1) NOT NULL DEFAULT 0,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_spbu_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
agama VARCHAR(50) NOT NULL,
|
||||
radius_bantuan_meter INT NOT NULL DEFAULT 1000,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_rumah_ibadah_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS jalan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
jenis_jalan VARCHAR(50) DEFAULT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_jalan_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS kavling (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_pemilik VARCHAR(100) NOT NULL,
|
||||
status_kepemilikan VARCHAR(50) NOT NULL,
|
||||
luas DECIMAL(10,2) DEFAULT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_kavling_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS kawasan_kumuh (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kawasan VARCHAR(100) NOT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_kawasan_kumuh_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS warga_miskin (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(100) NOT NULL,
|
||||
penghasilan DECIMAL(15,2) NOT NULL,
|
||||
jumlah_tanggungan INT NOT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_warga_miskin_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 3. Data Interaksi Pengguna
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS laporan_warga (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
kategori VARCHAR(50) NOT NULL,
|
||||
deskripsi TEXT NOT NULL,
|
||||
geometry POINT NOT NULL,
|
||||
status ENUM('menunggu', 'diproses', 'selesai', 'ditolak') NOT NULL DEFAULT 'menunggu',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_laporan_user_id (user_id),
|
||||
SPATIAL INDEX idx_laporan_geometry (geometry),
|
||||
CONSTRAINT fk_laporan_user
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ulasan_fasilitas (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
fasilitas_tipe ENUM('spbu', 'rumah_ibadah') NOT NULL,
|
||||
fasilitas_id INT NOT NULL,
|
||||
rating TINYINT NOT NULL,
|
||||
komentar TEXT,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_ulasan_user_id (user_id),
|
||||
INDEX idx_ulasan_fasilitas (fasilitas_tipe, fasilitas_id),
|
||||
CONSTRAINT fk_ulasan_user
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT chk_ulasan_rating CHECK (rating BETWEEN 1 AND 5)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,51 @@
|
||||
-- ============================================================
|
||||
-- Migrasi Fase A — Sistem 4 Role SKPL + Log Aktivitas
|
||||
-- ============================================================
|
||||
-- Jalankan SEKALI pada database existing (webgis_db).
|
||||
-- Aman untuk data yang sudah ada: role lama dipetakan, bukan dihapus.
|
||||
-- admin -> operator
|
||||
-- user -> pimpinan
|
||||
-- ============================================================
|
||||
|
||||
-- 1. Migrasi nilai role lama -> SKPL (widen -> update -> narrow)
|
||||
ALTER TABLE users MODIFY COLUMN role VARCHAR(20) NOT NULL DEFAULT 'enumerator';
|
||||
|
||||
UPDATE users SET role = 'operator' WHERE role = 'admin';
|
||||
UPDATE users SET role = 'pimpinan' WHERE role = 'user';
|
||||
|
||||
ALTER TABLE users
|
||||
MODIFY COLUMN role ENUM('publik','enumerator','operator','pimpinan')
|
||||
NOT NULL DEFAULT 'enumerator';
|
||||
|
||||
-- 2. Kolom tambahan users (KF-02 / KF-03 / KF-26)
|
||||
ALTER TABLE users
|
||||
ADD COLUMN email VARCHAR(120) DEFAULT NULL AFTER username,
|
||||
ADD COLUMN is_active TINYINT(1) NOT NULL DEFAULT 1 AFTER role,
|
||||
ADD COLUMN wilayah_tugas VARCHAR(100) DEFAULT NULL AFTER is_active,
|
||||
ADD COLUMN last_login TIMESTAMP NULL DEFAULT NULL AFTER wilayah_tugas;
|
||||
|
||||
-- 3. Akun demo Enumerator (password: user123)
|
||||
-- operator & pimpinan berasal dari migrasi akun lama (admin / pengguna)
|
||||
INSERT IGNORE INTO users (username, email, password, role, nama_lengkap)
|
||||
VALUES (
|
||||
'enumerator',
|
||||
'enumerator@webgis.id',
|
||||
'$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW',
|
||||
'enumerator',
|
||||
'Petugas Lapangan'
|
||||
);
|
||||
|
||||
-- 4. Log aktivitas (KF-04) — audit trail
|
||||
CREATE TABLE IF NOT EXISTS activity_log (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NULL,
|
||||
username VARCHAR(50) DEFAULT NULL,
|
||||
aksi VARCHAR(50) NOT NULL,
|
||||
tabel_target VARCHAR(50) DEFAULT NULL,
|
||||
record_id INT DEFAULT NULL,
|
||||
keterangan TEXT DEFAULT NULL,
|
||||
ip_address VARCHAR(45) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_activity_user (user_id),
|
||||
INDEX idx_activity_created (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- ============================================================
|
||||
-- Migrasi Fase B — Tabel Wilayah (choropleth) + seed sampel
|
||||
-- ============================================================
|
||||
-- Polygon kelurahan SAMPEL (disederhanakan) di sekitar data warga.
|
||||
-- Geometri SRID 0 agar konsisten dengan data spasial lama.
|
||||
-- jumlah_penduduk = jumlah KK (dummy) untuk hitung persentase miskin.
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wilayah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
kode_wilayah VARCHAR(20) DEFAULT NULL,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
jenis ENUM('kelurahan','kecamatan') NOT NULL DEFAULT 'kelurahan',
|
||||
parent_id INT DEFAULT NULL,
|
||||
jumlah_penduduk INT NOT NULL DEFAULT 0,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_wilayah_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO wilayah (kode_wilayah, nama, jenis, jumlah_penduduk, geom) VALUES
|
||||
('6171010001', 'Kel. Tambelan Sampit', 'kelurahan', 45,
|
||||
ST_GeomFromText('POLYGON((109.357 -0.047, 109.368 -0.047, 109.368 -0.058, 109.357 -0.058, 109.357 -0.047))')),
|
||||
('6171010002', 'Kel. Sungai Bangkong', 'kelurahan', 60,
|
||||
ST_GeomFromText('POLYGON((109.328 -0.043, 109.340 -0.043, 109.340 -0.055, 109.328 -0.055, 109.328 -0.043))')),
|
||||
('6171010003', 'Kel. Akcaya', 'kelurahan', 80,
|
||||
ST_GeomFromText('POLYGON((109.339 -0.035, 109.350 -0.035, 109.350 -0.045, 109.339 -0.045, 109.339 -0.035))')),
|
||||
('6171010004', 'Kel. Benua Melayu Darat', 'kelurahan', 55,
|
||||
ST_GeomFromText('POLYGON((109.318 -0.044, 109.329 -0.044, 109.329 -0.056, 109.318 -0.056, 109.318 -0.044))'));
|
||||
@@ -0,0 +1,82 @@
|
||||
-- ============================================================
|
||||
-- Migrasi Fase C — Manajemen Data Kemiskinan (KF-12 s/d 18)
|
||||
-- ============================================================
|
||||
-- Memperkaya warga_miskin + bantuan sosial + foto + fasilitas publik.
|
||||
-- Aman dijalankan pada DB existing (kolom & tabel baru saja).
|
||||
-- ============================================================
|
||||
|
||||
-- 1. Perluas kolom warga_miskin (KF-12 / KF-18)
|
||||
ALTER TABLE warga_miskin
|
||||
ADD COLUMN nik_kk VARCHAR(16) DEFAULT NULL AFTER nama_kk,
|
||||
ADD COLUMN alamat VARCHAR(255) DEFAULT NULL AFTER nik_kk,
|
||||
ADD COLUMN wilayah_id INT DEFAULT NULL AFTER alamat,
|
||||
ADD COLUMN rt VARCHAR(5) DEFAULT NULL AFTER wilayah_id,
|
||||
ADD COLUMN rw VARCHAR(5) DEFAULT NULL AFTER rt,
|
||||
ADD COLUMN jumlah_jiwa INT DEFAULT NULL AFTER rw,
|
||||
ADD COLUMN pekerjaan_kk VARCHAR(100) DEFAULT NULL AFTER jumlah_jiwa,
|
||||
ADD COLUMN sumber_air ENUM('SUMUR_BOR','PDAM','SUNGAI','HUJAN','TIDAK_ADA') DEFAULT NULL,
|
||||
ADD COLUMN status_listrik ENUM('PLN','NON_PLN','TIDAK_ADA') DEFAULT NULL,
|
||||
ADD COLUMN material_dinding ENUM('PERMANEN','SEMI_PERMANEN','TIDAK_PERMANEN') DEFAULT NULL,
|
||||
ADD COLUMN status_kepemilikan ENUM('MILIK','SEWA','NUMPANG','LAINNYA') DEFAULT NULL,
|
||||
ADD COLUMN status_verifikasi ENUM('belum','terverifikasi','perlu_tinjauan') NOT NULL DEFAULT 'belum',
|
||||
ADD COLUMN created_by INT DEFAULT NULL;
|
||||
|
||||
-- 2. Master jenis bantuan (KF-17) + seed
|
||||
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 VARCHAR(255) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT IGNORE INTO jenis_bantuan (kode, nama, deskripsi) VALUES
|
||||
('PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat keluarga miskin'),
|
||||
('BPNT', 'Bantuan Pangan Non Tunai', 'Bantuan sembako via KKS'),
|
||||
('PBI-JK', 'Penerima Bantuan Iuran JK', 'Subsidi iuran BPJS Kesehatan'),
|
||||
('BLT-DD', 'Bantuan Langsung Tunai Dana Desa','Bantuan tunai dari Dana Desa'),
|
||||
('RUTILAHU','Rumah Tidak Layak Huni', 'Rehabilitasi rumah tidak layak huni'),
|
||||
('KIP', 'Kartu Indonesia Pintar', 'Bantuan biaya pendidikan');
|
||||
|
||||
-- 3. Riwayat penerimaan bantuan per rumah tangga (KF-17)
|
||||
CREATE TABLE IF NOT EXISTS bantuan_sosial (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
warga_id INT NOT NULL,
|
||||
jenis_bantuan_id INT NOT NULL,
|
||||
tgl_mulai DATE DEFAULT NULL,
|
||||
tgl_berakhir DATE DEFAULT NULL,
|
||||
is_aktif TINYINT(1) NOT NULL DEFAULT 1,
|
||||
keterangan VARCHAR(255) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_bansos_warga (warga_id),
|
||||
INDEX idx_bansos_jenis (jenis_bantuan_id),
|
||||
CONSTRAINT fk_bansos_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_bansos_jenis FOREIGN KEY (jenis_bantuan_id) REFERENCES jenis_bantuan(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 4. Foto kondisi rumah (KF-13)
|
||||
CREATE TABLE IF NOT EXISTS foto_rumah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
warga_id INT NOT NULL,
|
||||
file_path VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_foto_warga (warga_id),
|
||||
CONSTRAINT fk_foto_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 5. Fasilitas publik untuk proximity (KF-21) + seed sampel
|
||||
CREATE TABLE IF NOT EXISTS fasilitas_publik (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(120) NOT NULL,
|
||||
jenis ENUM('sekolah','puskesmas','pasar','kantor_kelurahan','rumah_ibadah','lainnya') NOT NULL DEFAULT 'lainnya',
|
||||
wilayah_id INT DEFAULT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_fasilitas_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO fasilitas_publik (nama, jenis, geom) VALUES
|
||||
('SDN 01 Pontianak Kota', 'sekolah', ST_GeomFromText('POINT(109.3380 -0.0420)')),
|
||||
('Puskesmas Alianyang', 'puskesmas', ST_GeomFromText('POINT(109.3330 -0.0480)')),
|
||||
('Pasar Flamboyan', 'pasar', ST_GeomFromText('POINT(109.3470 -0.0250)')),
|
||||
('Kantor Kel. Akcaya', 'kantor_kelurahan', ST_GeomFromText('POINT(109.3445 -0.0400)')),
|
||||
('Puskesmas Kampung Bali','puskesmas', ST_GeomFromText('POINT(109.3360 -0.0440)'));
|
||||
@@ -0,0 +1,172 @@
|
||||
-- ============================================================
|
||||
-- WebGIS Pontianak - Seed Data Spasial
|
||||
-- ============================================================
|
||||
-- Koordinat menggunakan urutan longitude, latitude.
|
||||
|
||||
USE webgis_db;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
TRUNCATE TABLE spbu;
|
||||
TRUNCATE TABLE rumah_ibadah;
|
||||
TRUNCATE TABLE jalan;
|
||||
TRUNCATE TABLE kavling;
|
||||
TRUNCATE TABLE kawasan_kumuh;
|
||||
TRUNCATE TABLE warga_miskin;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ============================================================
|
||||
-- 1. SPBU
|
||||
-- ============================================================
|
||||
INSERT INTO spbu (nama, deskripsi, buka_24_jam, geom) VALUES
|
||||
(
|
||||
'SPBU Bundaran Digulis Untan',
|
||||
'SPBU terdekat dari kampus',
|
||||
1,
|
||||
ST_GeomFromText('POINT(109.3440 -0.0565)')
|
||||
),
|
||||
(
|
||||
'SPBU Ahmad Yani',
|
||||
'Dekat Mega Mall (24 Jam)',
|
||||
1,
|
||||
ST_GeomFromText('POINT(109.3360 -0.0450)')
|
||||
),
|
||||
(
|
||||
'SPBU Imam Bonjol',
|
||||
'SPBU pinggir kota',
|
||||
0,
|
||||
ST_GeomFromText('POINT(109.3410 -0.0380)')
|
||||
),
|
||||
(
|
||||
'SPBU Kota Baru',
|
||||
'Jl. Sultan Abdurrahman',
|
||||
0,
|
||||
ST_GeomFromText('POINT(109.3245 -0.0487)')
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 2. Rumah Ibadah
|
||||
-- ============================================================
|
||||
INSERT INTO rumah_ibadah (nama, agama, radius_bantuan_meter, geom) VALUES
|
||||
(
|
||||
'Masjid Raya Mujahidin',
|
||||
'Islam',
|
||||
1000,
|
||||
ST_GeomFromText('POINT(109.3356 -0.0454)')
|
||||
),
|
||||
(
|
||||
'Gereja Katedral St. Yosef',
|
||||
'Katolik',
|
||||
1000,
|
||||
ST_GeomFromText('POINT(109.3368 -0.0298)')
|
||||
),
|
||||
(
|
||||
'Vihara Bodhisatva Karaniya Metta',
|
||||
'Buddha',
|
||||
1000,
|
||||
ST_GeomFromText('POINT(109.3468 -0.0233)')
|
||||
),
|
||||
(
|
||||
'Masjid Jami Keraton Kadriyah',
|
||||
'Islam',
|
||||
1000,
|
||||
ST_GeomFromText('POINT(109.3523 -0.0229)')
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 3. Jalan
|
||||
-- ============================================================
|
||||
INSERT INTO jalan (nama, jenis_jalan, geom) VALUES
|
||||
(
|
||||
'Jalan Ahmad Yani',
|
||||
'Arteri Primer',
|
||||
ST_GeomFromText('LINESTRING(109.3448 -0.0583, 109.3360 -0.0450, 109.3310 -0.0320)')
|
||||
),
|
||||
(
|
||||
'Jalan Gajah Mada',
|
||||
'Kolektor',
|
||||
ST_GeomFromText('LINESTRING(109.3310 -0.0320, 109.3410 -0.0290, 109.3460 -0.0250)')
|
||||
),
|
||||
(
|
||||
'Jalan Imam Bonjol',
|
||||
'Lokal',
|
||||
ST_GeomFromText('LINESTRING(109.3360 -0.0450, 109.3420 -0.0400, 109.3500 -0.0350)')
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 4. Kavling
|
||||
-- ============================================================
|
||||
INSERT INTO kavling (nama_pemilik, status_kepemilikan, luas, geom) VALUES
|
||||
(
|
||||
'PT. Mega Karya',
|
||||
'HGB',
|
||||
25000.00,
|
||||
ST_GeomFromText('POLYGON((109.333 -0.048, 109.338 -0.048, 109.338 -0.053, 109.333 -0.053, 109.333 -0.048))')
|
||||
),
|
||||
(
|
||||
'Bapak Sudirman',
|
||||
'SHM',
|
||||
1500.00,
|
||||
ST_GeomFromText('POLYGON((109.340 -0.035, 109.341 -0.035, 109.341 -0.036, 109.340 -0.036, 109.340 -0.035))')
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 5. Kawasan Kumuh
|
||||
-- ============================================================
|
||||
INSERT INTO kawasan_kumuh (nama_kawasan, geom) VALUES
|
||||
(
|
||||
'Kawasan Rawan Bantaran Sungai',
|
||||
ST_GeomFromText('POLYGON((109.360 -0.050, 109.365 -0.050, 109.365 -0.055, 109.360 -0.055, 109.360 -0.050))')
|
||||
),
|
||||
(
|
||||
'Kawasan Padat Parit Tokaya',
|
||||
ST_GeomFromText('POLYGON((109.342 -0.038, 109.346 -0.038, 109.346 -0.042, 109.342 -0.042, 109.342 -0.038))')
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 6. Warga Miskin
|
||||
-- ============================================================
|
||||
INSERT INTO warga_miskin (nama_kk, penghasilan, jumlah_tanggungan, geom) VALUES
|
||||
(
|
||||
'Bpk. Budi (Terisolasi)',
|
||||
800000.00,
|
||||
4,
|
||||
ST_GeomFromText('POINT(109.361 -0.051)')
|
||||
),
|
||||
(
|
||||
'Ibu Siti (Terisolasi)',
|
||||
600000.00,
|
||||
2,
|
||||
ST_GeomFromText('POINT(109.362 -0.052)')
|
||||
),
|
||||
(
|
||||
'Bpk. Joko (Terisolasi)',
|
||||
1000000.00,
|
||||
5,
|
||||
ST_GeomFromText('POINT(109.363 -0.053)')
|
||||
),
|
||||
(
|
||||
'Ibu Ani (Terisolasi)',
|
||||
700000.00,
|
||||
3,
|
||||
ST_GeomFromText('POINT(109.364 -0.054)')
|
||||
),
|
||||
(
|
||||
'Bpk. Hasan',
|
||||
1200000.00,
|
||||
3,
|
||||
ST_GeomFromText('POINT(109.334 -0.050)')
|
||||
),
|
||||
(
|
||||
'Mbah Warno',
|
||||
400000.00,
|
||||
1,
|
||||
ST_GeomFromText('POINT(109.336 -0.046)')
|
||||
),
|
||||
(
|
||||
'Pak Junaidi',
|
||||
900000.00,
|
||||
4,
|
||||
ST_GeomFromText('POINT(109.344 -0.040)')
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
-- ============================================================
|
||||
-- WebGIS Pontianak - Seed Users
|
||||
-- ============================================================
|
||||
-- Akun demo:
|
||||
-- admin / admin123
|
||||
-- pengguna / user123
|
||||
|
||||
USE webgis_db;
|
||||
|
||||
INSERT INTO users (username, password, role, nama_lengkap) VALUES
|
||||
(
|
||||
'admin',
|
||||
'$2y$12$oRvX1EtLHM/y8XtwlOy./Oi2UVpnHp98GvXqEuLCFimhr0doKus62',
|
||||
'admin',
|
||||
'Administrator WebGIS'
|
||||
),
|
||||
(
|
||||
'pengguna',
|
||||
'$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW',
|
||||
'user',
|
||||
'Pengguna Publik'
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
password = VALUES(password),
|
||||
role = VALUES(role),
|
||||
nama_lengkap = VALUES(nama_lengkap);
|
||||
@@ -0,0 +1,210 @@
|
||||
-- ============================================================
|
||||
-- WebGIS Pemetaan Kemiskinan Terpadu — Database Lengkap (SKPL)
|
||||
-- ============================================================
|
||||
-- Import file ini untuk membuat ulang database dari awal.
|
||||
-- Perhatian: tabel lama dengan nama yang sama akan dihapus.
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
DROP TABLE IF EXISTS activity_log;
|
||||
DROP TABLE IF EXISTS foto_rumah;
|
||||
DROP TABLE IF EXISTS bantuan_sosial;
|
||||
DROP TABLE IF EXISTS jenis_bantuan;
|
||||
DROP TABLE IF EXISTS fasilitas_publik;
|
||||
DROP TABLE IF EXISTS wilayah;
|
||||
DROP TABLE IF EXISTS laporan_warga;
|
||||
DROP TABLE IF EXISTS warga_miskin;
|
||||
DROP TABLE IF EXISTS users;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ============================================================
|
||||
-- 1. Users (4 role SKPL: publik / enumerator / operator / pimpinan)
|
||||
-- ============================================================
|
||||
CREATE TABLE users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(120) DEFAULT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
role ENUM('publik','enumerator','operator','pimpinan') NOT NULL DEFAULT 'enumerator',
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
wilayah_tugas VARCHAR(100) DEFAULT NULL,
|
||||
last_login TIMESTAMP NULL DEFAULT NULL,
|
||||
nama_lengkap VARCHAR(100) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Akun demo. Password: operator=admin123, pimpinan & enumerator=user123
|
||||
INSERT INTO users (username, email, password, role, nama_lengkap) VALUES
|
||||
('operator', 'operator@webgis.id', '$2y$12$oRvX1EtLHM/y8XtwlOy./Oi2UVpnHp98GvXqEuLCFimhr0doKus62', 'operator', 'Operator Dinas Sosial'),
|
||||
('pimpinan', 'pimpinan@webgis.id', '$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW', 'pimpinan', 'Kepala Dinas Sosial'),
|
||||
('enumerator', 'enumerator@webgis.id', '$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW', 'enumerator', 'Petugas Lapangan');
|
||||
|
||||
-- ============================================================
|
||||
-- 2. Rumah Tangga Miskin
|
||||
-- ============================================================
|
||||
CREATE TABLE warga_miskin (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(100) NOT NULL,
|
||||
nik_kk VARCHAR(16) DEFAULT NULL,
|
||||
alamat VARCHAR(255) DEFAULT NULL,
|
||||
wilayah_id INT DEFAULT NULL,
|
||||
rt VARCHAR(5) DEFAULT NULL,
|
||||
rw VARCHAR(5) DEFAULT NULL,
|
||||
jumlah_jiwa INT DEFAULT NULL,
|
||||
pekerjaan_kk VARCHAR(100) DEFAULT NULL,
|
||||
penghasilan DECIMAL(15,2) NOT NULL,
|
||||
jumlah_tanggungan INT NOT NULL,
|
||||
sumber_air ENUM('SUMUR_BOR','PDAM','SUNGAI','HUJAN','TIDAK_ADA') DEFAULT NULL,
|
||||
status_listrik ENUM('PLN','NON_PLN','TIDAK_ADA') DEFAULT NULL,
|
||||
material_dinding ENUM('PERMANEN','SEMI_PERMANEN','TIDAK_PERMANEN') DEFAULT NULL,
|
||||
status_kepemilikan ENUM('MILIK','SEWA','NUMPANG','LAINNYA') DEFAULT NULL,
|
||||
status_verifikasi ENUM('belum','terverifikasi','perlu_tinjauan') NOT NULL DEFAULT 'belum',
|
||||
created_by INT DEFAULT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_warga_miskin_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO warga_miskin (nama_kk, penghasilan, jumlah_tanggungan, geom) VALUES
|
||||
('Bpk. Budi (Terisolasi)', 800000.00, 4, ST_GeomFromText('POINT(109.361 -0.051)')),
|
||||
('Ibu Siti (Terisolasi)', 600000.00, 2, ST_GeomFromText('POINT(109.362 -0.052)')),
|
||||
('Bpk. Joko (Terisolasi)', 1000000.00, 5, ST_GeomFromText('POINT(109.363 -0.053)')),
|
||||
('Ibu Ani (Terisolasi)', 700000.00, 3, ST_GeomFromText('POINT(109.364 -0.054)')),
|
||||
('Bpk. Hasan', 1200000.00, 3, ST_GeomFromText('POINT(109.334 -0.050)')),
|
||||
('Mbah Warno', 400000.00, 1, ST_GeomFromText('POINT(109.336 -0.046)')),
|
||||
('Pak Junaidi', 900000.00, 4, ST_GeomFromText('POINT(109.344 -0.040)'));
|
||||
|
||||
-- ============================================================
|
||||
-- 3. Laporan Warga (partisipasi/transparansi)
|
||||
-- ============================================================
|
||||
CREATE TABLE laporan_warga (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
kategori VARCHAR(50) NOT NULL,
|
||||
deskripsi TEXT NOT NULL,
|
||||
geometry POINT NOT NULL,
|
||||
status ENUM('menunggu', 'diproses', 'selesai', 'ditolak') NOT NULL DEFAULT 'menunggu',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_laporan_user_id (user_id),
|
||||
SPATIAL INDEX idx_laporan_geometry (geometry),
|
||||
CONSTRAINT fk_laporan_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 4. Log Aktivitas (KF-04)
|
||||
-- ============================================================
|
||||
CREATE TABLE activity_log (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NULL,
|
||||
username VARCHAR(50) DEFAULT NULL,
|
||||
aksi VARCHAR(50) NOT NULL,
|
||||
tabel_target VARCHAR(50) DEFAULT NULL,
|
||||
record_id INT DEFAULT NULL,
|
||||
keterangan TEXT DEFAULT NULL,
|
||||
ip_address VARCHAR(45) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_activity_user (user_id),
|
||||
INDEX idx_activity_created (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 5. Wilayah (KF-06) — batas kelurahan untuk choropleth
|
||||
-- ============================================================
|
||||
CREATE TABLE wilayah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
kode_wilayah VARCHAR(20) DEFAULT NULL,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
jenis ENUM('kelurahan','kecamatan') NOT NULL DEFAULT 'kelurahan',
|
||||
parent_id INT DEFAULT NULL,
|
||||
jumlah_penduduk INT NOT NULL DEFAULT 0,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_wilayah_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO wilayah (kode_wilayah, nama, jenis, jumlah_penduduk, geom) VALUES
|
||||
('6171010001', 'Kel. Tambelan Sampit', 'kelurahan', 45,
|
||||
ST_GeomFromText('POLYGON((109.357 -0.047, 109.368 -0.047, 109.368 -0.058, 109.357 -0.058, 109.357 -0.047))')),
|
||||
('6171010002', 'Kel. Sungai Bangkong', 'kelurahan', 60,
|
||||
ST_GeomFromText('POLYGON((109.328 -0.043, 109.340 -0.043, 109.340 -0.055, 109.328 -0.055, 109.328 -0.043))')),
|
||||
('6171010003', 'Kel. Akcaya', 'kelurahan', 80,
|
||||
ST_GeomFromText('POLYGON((109.339 -0.035, 109.350 -0.035, 109.350 -0.045, 109.339 -0.045, 109.339 -0.035))')),
|
||||
('6171010004', 'Kel. Benua Melayu Darat', 'kelurahan', 55,
|
||||
ST_GeomFromText('POLYGON((109.318 -0.044, 109.329 -0.044, 109.329 -0.056, 109.318 -0.056, 109.318 -0.044))'));
|
||||
|
||||
-- ============================================================
|
||||
-- 6. Bantuan Sosial (KF-17) — master jenis + riwayat per warga
|
||||
-- ============================================================
|
||||
CREATE TABLE jenis_bantuan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
kode VARCHAR(20) NOT NULL UNIQUE,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
deskripsi VARCHAR(255) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO jenis_bantuan (kode, nama, deskripsi) VALUES
|
||||
('PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat keluarga miskin'),
|
||||
('BPNT', 'Bantuan Pangan Non Tunai', 'Bantuan sembako via KKS'),
|
||||
('PBI-JK', 'Penerima Bantuan Iuran JK', 'Subsidi iuran BPJS Kesehatan'),
|
||||
('BLT-DD', 'Bantuan Langsung Tunai Dana Desa', 'Bantuan tunai dari Dana Desa'),
|
||||
('RUTILAHU','Rumah Tidak Layak Huni', 'Rehabilitasi rumah tidak layak huni'),
|
||||
('KIP', 'Kartu Indonesia Pintar', 'Bantuan biaya pendidikan');
|
||||
|
||||
CREATE TABLE bantuan_sosial (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
warga_id INT NOT NULL,
|
||||
jenis_bantuan_id INT NOT NULL,
|
||||
tgl_mulai DATE DEFAULT NULL,
|
||||
tgl_berakhir DATE DEFAULT NULL,
|
||||
is_aktif TINYINT(1) NOT NULL DEFAULT 1,
|
||||
keterangan VARCHAR(255) DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_bansos_warga (warga_id),
|
||||
INDEX idx_bansos_jenis (jenis_bantuan_id),
|
||||
CONSTRAINT fk_bansos_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_bansos_jenis FOREIGN KEY (jenis_bantuan_id) REFERENCES jenis_bantuan(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 7. Foto Kondisi Rumah (KF-13)
|
||||
-- ============================================================
|
||||
CREATE TABLE foto_rumah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
warga_id INT NOT NULL,
|
||||
file_path VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_foto_warga (warga_id),
|
||||
CONSTRAINT fk_foto_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- 8. Fasilitas Publik (KF-21) — untuk proximity analysis
|
||||
-- ============================================================
|
||||
CREATE TABLE fasilitas_publik (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(120) NOT NULL,
|
||||
jenis ENUM('sekolah','puskesmas','pasar','kantor_kelurahan','rumah_ibadah','lainnya') NOT NULL DEFAULT 'lainnya',
|
||||
wilayah_id INT DEFAULT NULL,
|
||||
geom GEOMETRY NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_fasilitas_geom (geom)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO fasilitas_publik (nama, jenis, geom) VALUES
|
||||
('SDN 01 Pontianak Kota', 'sekolah', ST_GeomFromText('POINT(109.3380 -0.0420)')),
|
||||
('Puskesmas Alianyang', 'puskesmas', ST_GeomFromText('POINT(109.3330 -0.0480)')),
|
||||
('Pasar Flamboyan', 'pasar', ST_GeomFromText('POINT(109.3470 -0.0250)')),
|
||||
('Kantor Kel. Akcaya', 'kantor_kelurahan', ST_GeomFromText('POINT(109.3445 -0.0400)')),
|
||||
('Puskesmas Kampung Bali', 'puskesmas', ST_GeomFromText('POINT(109.3360 -0.0440)'));
|
||||
|
||||
-- ============================================================
|
||||
-- 9. Seed demo kondisi rumah & bantuan (untuk analisis Fase E/F)
|
||||
-- ============================================================
|
||||
UPDATE warga_miskin SET sumber_air='SUNGAI', status_listrik='NON_PLN', material_dinding='TIDAK_PERMANEN', status_kepemilikan='NUMPANG' WHERE nama_kk LIKE '%Terisolasi%';
|
||||
UPDATE warga_miskin SET sumber_air='PDAM', status_listrik='PLN', material_dinding='SEMI_PERMANEN', status_kepemilikan='MILIK' WHERE nama_kk IN ('Bpk. Hasan','Mbah Warno','Pak Junaidi');
|
||||
|
||||
INSERT INTO bantuan_sosial (warga_id, jenis_bantuan_id, tgl_mulai, is_aktif)
|
||||
SELECT id, 1, '2026-01-01', 1 FROM warga_miskin WHERE nama_kk IN ('Bpk. Hasan','Pak Junaidi');
|
||||
INSERT INTO bantuan_sosial (warga_id, jenis_bantuan_id, tgl_mulai, is_aktif)
|
||||
SELECT id, 2, '2026-02-01', 1 FROM warga_miskin WHERE nama_kk='Mbah Warno';
|
||||
Reference in New Issue
Block a user