Files
UAS_WEBGIS_MuhammadFarras_D…/docker/init-databases.sql
T
2026-06-10 06:26:11 +07:00

242 lines
12 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Buat database
CREATE DATABASE IF NOT EXISTS webgis_p3 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS webgis_spbu CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS WEB_GIS CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Kasih akses user webgis
GRANT ALL PRIVILEGES ON webgis_p3.* TO 'webgis'@'%';
GRANT ALL PRIVILEGES ON webgis_spbu.* TO 'webgis'@'%';
GRANT ALL PRIVILEGES ON WEB_GIS.* TO 'webgis'@'%';
FLUSH PRIVILEGES;
-- Import data webgis_p3
USE webgis_p3;
-- ============================================================
-- DATABASE LENGKAP: webgis_p3
-- WebGIS Poverty Mapping + Sistem Login (3 Role)
-- Import file ini ke Laragon phpMyAdmin
-- ============================================================
CREATE DATABASE IF NOT EXISTS webgis_p3
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE webgis_p3;
-- ── Tabel Data Jalan (Polyline) ────────────────────────────
CREATE TABLE IF NOT EXISTS data_jalan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_jalan VARCHAR(200) NOT NULL,
status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten',
panjang_m DOUBLE NOT NULL DEFAULT 0,
geojson LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Tabel Data Parsil Tanah (Polygon) ─────────────────────
CREATE TABLE IF NOT EXISTS data_parsil (
id INT AUTO_INCREMENT PRIMARY KEY,
no_parsil VARCHAR(100) NOT NULL,
pemilik VARCHAR(200) NOT NULL,
status ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM',
luas_m2 DOUBLE NOT NULL DEFAULT 0,
geojson LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Tabel Data SPBU (Point/Marker) ────────────────────────
CREATE TABLE IF NOT EXISTS data_spbu (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_spbu VARCHAR(200) NOT NULL,
no_wa VARCHAR(20) NOT NULL,
buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Data Contoh SPBU ──────────────────────────────────────
INSERT INTO data_spbu (nama_spbu, no_wa, buka_24_jam, latitude, longitude) VALUES
('SPBU Jl. Ahmad Yani', '0812-1111-0001', 'Ya', -0.0400, 109.3200),
('SPBU Jl. Gajah Mada', '0812-1111-0002', 'Ya', -0.0520, 109.3450),
('SPBU Jl. Diponegoro', '0812-1111-0003', 'Tidak', -0.0610, 109.3600),
('SPBU Jl. Sutan Syahrir', '0812-1111-0004', 'Tidak', -0.0480, 109.3700),
('SPBU Jl. Kom. Yos Sudarso', '0812-1111-0005', 'Ya', -0.0350, 109.3550);
-- ── Tabel Data Kemiskinan (Point/Marker) ──────────────────
CREATE TABLE IF NOT EXISTS data_kemiskinan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_kk VARCHAR(200) NOT NULL,
jumlah_kk INT NOT NULL DEFAULT 1,
alamat TEXT NOT NULL,
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Tabel Data Rumah Ibadah (Point/Marker + Radius Buffer)
CREATE TABLE IF NOT EXISTS data_masjid (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_masjid VARCHAR(200) NOT NULL,
jenis ENUM('Masjid','Mushola','Gereja','Pura','Vihara','Klenteng') NOT NULL DEFAULT 'Masjid',
pic_masjid VARCHAR(200) NOT NULL,
alamat TEXT NOT NULL,
radius_m INT NOT NULL DEFAULT 500,
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Tabel Users (Sistem Login 3 Role) ─────────────────────
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,
nama_lengkap VARCHAR(200) NOT NULL,
role ENUM('admin','petugas','pengurus','walikota') NOT NULL,
password_hash VARCHAR(255) NOT NULL,
aktif TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_role (role),
INDEX idx_aktif (aktif)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ── Akun Demo ─────────────────────────────────────────────
-- Password semua akun: "password" (bcrypt via PHP PASSWORD_DEFAULT)
INSERT INTO users (username, nama_lengkap, role, password_hash) VALUES
(
'admin',
'Administrator Sistem',
'admin',
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
),
(
'pengurus',
'Pengurus Rumah Ibadah',
'pengurus',
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
),
(
'walikota',
'Walikota Pontianak',
'walikota',
'$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG'
);
-- Import data webgis_spbu
USE webgis_spbu;
-- ============================================================
-- DATABASE: webgis_spbu
-- Pertemuan 3 Layer Groups and Layers Control
-- Data SPBU dengan 2 Layer Group: Buka 24 Jam & Tidak 24 Jam
-- ============================================================
CREATE DATABASE IF NOT EXISTS webgis_spbu
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE webgis_spbu;
-- buka_24_jam: 'Ya' → Layer Group "SPBU Buka 24 Jam"
-- 'Tidak' → Layer Group "SPBU Tidak Buka 24 Jam"
CREATE TABLE IF NOT EXISTS data_spbu (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_spbu VARCHAR(200) NOT NULL,
alamat VARCHAR(300) NOT NULL,
no_wa VARCHAR(20) NOT NULL,
buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak',
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Migrasi: tambah kolom alamat jika tabel lama dari PovertyMap belum punya
-- ALTER TABLE data_spbu ADD COLUMN alamat VARCHAR(300) NOT NULL DEFAULT '' AFTER nama_spbu;
-- UPDATE data_spbu SET alamat = CONCAT(nama_spbu, ', Pontianak') WHERE alamat = '';
INSERT IGNORE INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES
('SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200),
('SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450),
('SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600),
('SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700),
('SPBU Jl. Kom. Yos Sudarso', 'Jl. Kom. Yos Sudarso No. 22, Pontianak', '0812-1111-0005', 'Ya', -0.0350, 109.3550),
('SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300),
('SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380);
-- Import data WEB_GIS
USE WEB_GIS;
-- =========================================================
-- WebGIS - Struktur Database
-- Tugas: Manajemen Data Jalan & Parsil Tanah (Kavling)
-- Database: WEB_GIS
-- Tipe Geometri: GeoJSON (LineString & Polygon)
-- =========================================================
CREATE DATABASE IF NOT EXISTS WEB_GIS
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE WEB_GIS;
-- ---------------------------------------------------------
-- TABEL 1: Manajemen Data Jalan
-- Tipe Geometri : GeoJSON LineString
-- Panjang Jalan : Dihitung otomatis oleh LeafletJS (meter)
-- ---------------------------------------------------------
CREATE TABLE IF NOT EXISTS `tb_jalan` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key jalan',
`nama_jalan` VARCHAR(100) NOT NULL COMMENT 'Nama ruas jalan',
`status_jalan` ENUM(
'Nasional',
'Provinsi',
'Kabupaten'
) NOT NULL COMMENT 'Status administrasi jalan',
`panjang_jalan` DECIMAL(12,2) NOT NULL DEFAULT '0.00' COMMENT 'Panjang jalan dalam meter (dihitung otomatis LeafletJS via L.LatLng.distanceTo)',
`geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON LineString',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci
COMMENT='Tabel manajemen data jalan berdasarkan status administrasi. Geometri disimpan sebagai GeoJSON LineString.';
-- ---------------------------------------------------------
-- TABEL 2: Manajemen Parsil Tanah / Kavling
-- Tipe Geometri : GeoJSON Polygon
-- Luas Tanah : Dihitung otomatis oleh LeafletJS (m²)
-- ---------------------------------------------------------
CREATE TABLE IF NOT EXISTS `tb_parsil` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key parsil',
`nama_parsil` VARCHAR(100) NOT NULL COMMENT 'Nama atau nomor identifikasi parsil tanah',
`status_kepemilikan` ENUM(
'SHM',
'HGB',
'HGU',
'HP'
) NOT NULL COMMENT 'Status sertifikat kepemilikan: SHM=Sertifikat Hak Milik, HGB=Hak Guna Bangunan, HGU=Hak Guna Usaha, HP=Hak Pakai',
`luas_tanah` DECIMAL(16,4) NOT NULL DEFAULT '0.0000' COMMENT 'Luas tanah dalam meter persegi (dihitung otomatis LeafletJS via formula geodesic spherical)',
`geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON Polygon',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci
COMMENT='Tabel manajemen parsil/kavling tanah berdasarkan status kepemilikan. Geometri disimpan sebagai GeoJSON Polygon.';
-- ---------------------------------------------------------
-- Contoh Indeks untuk performa query filter
-- ---------------------------------------------------------
ALTER TABLE `tb_jalan` ADD INDEX `idx_status_jalan` (`status_jalan`);
ALTER TABLE `tb_parsil` ADD INDEX `idx_status_parsil` (`status_kepemilikan`);