242 lines
12 KiB
SQL
242 lines
12 KiB
SQL
-- 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`);
|