-- ---------------------------- -- Zone management: bms_region -> prc_zone -> prc_zone_detail -- Country master is bms_region (no prc_zone_country) -- charset: utf8mb4 -- ---------------------------- SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS prc_zone_detail; DROP TABLE IF EXISTS prc_zone; DROP TABLE IF EXISTS prc_zone_country; DROP TABLE IF EXISTS xtd_zonecountry; DROP TABLE IF EXISTS xtd_zone_division; DROP TABLE IF EXISTS xtd_zone_scheme; SET FOREIGN_KEY_CHECKS = 1; CREATE TABLE IF NOT EXISTS prc_zone ( zone_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'zone id', region_id BIGINT(20) NOT NULL COMMENT 'bms_region.region_id', country_code VARCHAR(10) NOT NULL COMMENT 'ISO2 country code from bms_region', zone_code VARCHAR(50) NOT NULL COMMENT 'zone code e.g. 1', zone_name VARCHAR(100) DEFAULT NULL COMMENT 'display name e.g. AU(1)', zone_sort INT(11) DEFAULT 0 COMMENT 'sort', remark VARCHAR(500) DEFAULT NULL COMMENT 'remark', create_time DATETIME DEFAULT NULL COMMENT 'created at', update_time DATETIME DEFAULT NULL COMMENT 'updated at', PRIMARY KEY (zone_id), UNIQUE KEY uk_zone_region_code (region_id, zone_code), INDEX idx_zone_region_id (region_id), INDEX idx_zone_country_code (country_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone under bms_region'; CREATE TABLE IF NOT EXISTS prc_zone_detail ( detail_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'detail id', zone_id BIGINT(20) NOT NULL COMMENT 'zone id', postcode VARCHAR(32) NOT NULL COMMENT 'postcode', create_time DATETIME DEFAULT NULL COMMENT 'created at', update_time DATETIME DEFAULT NULL COMMENT 'updated at', PRIMARY KEY (detail_id), INDEX idx_zd_zone_id (zone_id), INDEX idx_zd_postcode (postcode), UNIQUE KEY uk_zd_zone_postcode (zone_id, postcode), CONSTRAINT fk_zd_zone FOREIGN KEY (zone_id) REFERENCES prc_zone (zone_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone postcode detail';