First Commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
-- ============================================================
|
||||
-- SIG Mapping Tanah & Jalan - Skema Database
|
||||
-- MySQL 8.x
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS sig_mapping
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE sig_mapping;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Tabel TANAH (disimpan sebagai polygon)
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS tanah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
pemilik VARCHAR(150) NULL,
|
||||
kategori VARCHAR(80) NULL, -- status: SHM, HGB, HGU, HP
|
||||
deskripsi TEXT NULL,
|
||||
luas DOUBLE NOT NULL DEFAULT 0, -- meter persegi (m2)
|
||||
keliling DOUBLE NOT NULL DEFAULT 0, -- meter (m)
|
||||
warna VARCHAR(20) NOT NULL DEFAULT '#22c55e',
|
||||
geojson JSON NOT NULL, -- GeoJSON geometry (Polygon)
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Tabel JALAN (disimpan sebagai polyline / linestring)
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS jalan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
jenis VARCHAR(50) NULL, -- mis. Aspal, Beton, Tanah
|
||||
kategori VARCHAR(80) NULL, -- Jalan Nasional, Jalan Provinsi, Jalan Kabupaten
|
||||
deskripsi TEXT NULL,
|
||||
panjang DOUBLE NOT NULL DEFAULT 0, -- meter (m)
|
||||
warna VARCHAR(20) NOT NULL DEFAULT '#ef4444',
|
||||
geojson JSON NOT NULL, -- GeoJSON geometry (LineString)
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Migrasi: tambah kolom kategori bila tabel lama belum punya.
|
||||
-- MySQL 8 tidak mendukung "ADD COLUMN IF NOT EXISTS", jadi dicek dulu
|
||||
-- via information_schema. Aman dijalankan berulang.
|
||||
-- ------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS add_kategori_columns;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE add_kategori_columns()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tanah' AND COLUMN_NAME = 'kategori'
|
||||
) THEN
|
||||
ALTER TABLE tanah ADD COLUMN kategori VARCHAR(80) NULL AFTER pemilik;
|
||||
END IF;
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'jalan' AND COLUMN_NAME = 'kategori'
|
||||
) THEN
|
||||
ALTER TABLE jalan ADD COLUMN kategori VARCHAR(80) NULL AFTER jenis;
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL add_kategori_columns();
|
||||
DROP PROCEDURE add_kategori_columns;
|
||||
Reference in New Issue
Block a user