117 lines
4.6 KiB
SQL
117 lines
4.6 KiB
SQL
-- ============================================================
|
|
-- 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;
|