@@ -1,113 +0,0 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 国家主表 ----------------------------------
-- 创建国家ID记录表( 主表, 存储基础主键+通用字段)
CREATE TABLE IF NOT EXISTS countries (
country_id UUID PRIMARY KEY DEFAULT uuidv7 ( ) ,
deleted boolean DEFAULT false ,
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ;
-- 表注释
COMMENT ON TABLE countries IS ' 国家主表,仅存储国家基础主键及通用公共字段,关联国家/地区子表 ' ;
-- 字段注释
COMMENT ON COLUMN countries . country_id IS ' 国家主键ID, PG18原生UUIDv7, 作为所有子表的关联外键 ' ;
COMMENT ON COLUMN countries . deleted IS ' 逻辑删除标识, false-未删除, true-已删除,默认未删除 ' ;
COMMENT ON COLUMN countries . create_time IS ' 记录创建时间,默认当前系统时间,不可手动修改 ' ;
COMMENT ON COLUMN countries . update_time IS ' 记录最后更新时间,默认当前系统时间 ' ;
-- 创建update_time自动刷新触发器函数( 所有表复用)
CREATE OR REPLACE FUNCTION update_table_modify_time ( )
RETURNS TRIGGER AS $ $
BEGIN
NEW . update_time = CURRENT_TIMESTAMP ;
RETURN NEW ;
END ;
$ $ LANGUAGE plpgsql ;
-- 绑定触发器到国家主表
CREATE TRIGGER tr_countries_update_time
BEFORE UPDATE ON countries
FOR EACH ROW
EXECUTE FUNCTION update_table_modify_time ( ) ;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 国家核心信息表 ----------------------------------
-- 创建国家核心信息记录表(子表,存储国家编码/名称等核心信息)
CREATE TABLE IF NOT EXISTS country_core_infos (
core_id UUID PRIMARY KEY DEFAULT uuidv7 ( ) ,
country_id UUID NOT NULL ,
country_code VARCHAR ( 5 ) NOT NULL , -- 如CN(中国)/US(美国), 遵循ISO 3166-1
country_cn_short_name VARCHAR ( 50 ) NOT NULL , -- 如中国/美国,中文简称
deleted boolean DEFAULT false ,
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
-- 外键约束:关联国家主表,保证数据一致性(删除主表时级联置空/禁止删除,按需选择)
CONSTRAINT fk_country_core_infos_country_id
FOREIGN KEY ( country_id ) REFERENCES countries ( country_id )
ON DELETE RESTRICT -- 主表国家未删除时,禁止删除子表信息(推荐生产使用)
-- ON DELETE SET NULL -- 可选: 主表删除时, 子表country_id置空( 适合软删除场景)
) ;
-- 表注释
COMMENT ON TABLE country_core_infos IS ' 国家核心信息子表,存储国家编码、中文名称等专属信息,与国家主表一对一关联 ' ;
-- 字段注释
COMMENT ON COLUMN country_core_infos . core_id IS ' 子表主键ID, PG18原生UUIDv7 ' ;
COMMENT ON COLUMN country_core_infos . country_id IS ' 关联国家主表countries.country_id, 外键约束 ' ;
COMMENT ON COLUMN country_core_infos . country_code IS ' 国家二位编码, 遵循ISO 3166-1, 如CN(中国)/US(美国),唯一标识国家 ' ;
COMMENT ON COLUMN country_core_infos . country_cn_short_name IS ' 国家中文简称,如中国/美国,业务展示专用 ' ;
COMMENT ON COLUMN country_core_infos . deleted IS ' 逻辑删除标识, false-未删除, true-已删除,默认未删除 ' ;
COMMENT ON COLUMN country_core_infos . create_time IS ' 记录创建时间,默认当前系统时间,不可手动修改 ' ;
COMMENT ON COLUMN country_core_infos . update_time IS ' 记录最后更新时间,更新时触发器自动刷新 ' ;
-- 索引:优化高频业务查询(核心)
CREATE UNIQUE INDEX uk_country_core_infos_code ON country_core_infos ( country_code ) WHERE deleted = false ; -- 唯一索引:国家编码不重复(未删除数据)
CREATE INDEX idx_country_core_infos_country_id ON country_core_infos ( country_id , deleted ) ; -- 联合索引: 按国家ID关联查询+过滤删除数据
CREATE INDEX idx_country_core_infos_name ON country_core_infos ( country_cn_short_name , deleted ) ; -- 联合索引:按国家名称模糊查询+过滤删除数据
-- 绑定触发器: 更新时自动刷新update_time
CREATE TRIGGER tr_country_core_infos_update_time
BEFORE UPDATE ON country_core_infos
FOR EACH ROW
EXECUTE FUNCTION update_table_modify_time ( ) ;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 国家地区核心信息表 ----------------------------------
-- 创建国家地区信息记录表(子表,存储国家下属地区编码/名称等信息,如中国香港/美国纽约)
CREATE TABLE IF NOT EXISTS country_region_core_infos (
region_id UUID PRIMARY KEY DEFAULT uuidv7 ( ) ,
country_id UUID NOT NULL ,
region_code VARCHAR ( 5 ) NOT NULL , -- 如HK(香港)/TW(台湾)/NYC(纽约),建议按 国家码-地区码 设计如CN-HK
region_cn_short_name VARCHAR ( 50 ) NOT NULL , -- 如香港/台湾/纽约,中文简称
deleted boolean DEFAULT false ,
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
-- 外键约束:关联国家主表,保证数据一致性
CONSTRAINT fk_country_region_core_infos_country_id
FOREIGN KEY ( country_id ) REFERENCES countries ( country_id )
ON DELETE RESTRICT -- 主表国家未删除时,禁止删除子表地区信息(推荐生产使用)
) ;
-- 表注释
COMMENT ON TABLE country_region_core_infos IS ' 国家地区核心信息子表,存储国家下属地区编码、中文名称等信息,与国家主表一对多关联,支持区分中国香港/澳门/台湾等地区 ' ;
-- 字段注释
COMMENT ON COLUMN country_region_core_infos . region_id IS ' 子表主键ID, PG18原生UUIDv7 ' ;
COMMENT ON COLUMN country_region_core_infos . country_id IS ' 关联国家主表countries.country_id, 外键约束, 标识地区所属国家 ' ;
COMMENT ON COLUMN country_region_core_infos . region_code IS ' 地区编码, 如HK(香港)/TW(台湾)/NYC(纽约), 建议遵循ISO 3166-2设计为CN-HK/CN-TW ' ;
COMMENT ON COLUMN country_region_core_infos . region_cn_short_name IS ' 地区中文简称,如香港/台湾/纽约,业务展示专用 ' ;
COMMENT ON COLUMN country_region_core_infos . deleted IS ' 逻辑删除标识, false-未删除, true-已删除,默认未删除 ' ;
COMMENT ON COLUMN country_region_core_infos . create_time IS ' 记录创建时间,默认当前系统时间,不可手动修改 ' ;
COMMENT ON COLUMN country_region_core_infos . update_time IS ' 记录最后更新时间,更新时触发器自动刷新 ' ;
-- 索引:优化高频业务查询(核心)
CREATE UNIQUE INDEX uk_country_region_core_infos_country_region ON country_region_core_infos ( country_id , region_code ) WHERE deleted = false ; -- 唯一索引:同一国家下地区编码不重复(未删除数据)
CREATE INDEX idx_country_region_core_infos_country_id ON country_region_core_infos ( country_id , deleted ) ; -- 联合索引: 按国家ID查询下属所有地区+过滤删除数据
CREATE INDEX idx_country_region_core_infos_name ON country_region_core_infos ( region_cn_short_name , deleted ) ; -- 联合索引:按地区名称模糊查询+过滤删除数据
-- 绑定触发器: 更新时自动刷新update_time
CREATE TRIGGER tr_country_region_core_infos_update_time
BEFORE UPDATE ON country_region_core_infos
FOR EACH ROW
EXECUTE FUNCTION update_table_modify_time ( ) ;