51 lines
2.9 KiB
SQL
51 lines
2.9 KiB
SQL
-- td_building_cell_m 楼宇小区桥接月表 DDL (标准契约版)
|
|
-- 必须与 POC-TSG...DDL(1).sql L1148-1193 100% 对齐
|
|
|
|
CREATE TABLE IF NOT EXISTS dmk.td_building_cell_m (
|
|
year_month varchar(7) NOT NULL,
|
|
data_type integer NOT NULL,
|
|
building_id varchar(64) NOT NULL,
|
|
cellkey varchar(64) NOT NULL,
|
|
cell_name varchar(128),
|
|
operator_name varchar(32) NOT NULL,
|
|
network_class varchar(32) NOT NULL,
|
|
freq varchar(32) NOT NULL DEFAULT 'all',
|
|
indoor_flag smallint NOT NULL DEFAULT -1,
|
|
provincecode integer,
|
|
citycode integer,
|
|
districtcode integer,
|
|
cell_lon numeric(10, 6),
|
|
cell_lat numeric(10, 6),
|
|
cell_wkt text,
|
|
cell_geom geometry(Point, 4326) GENERATED ALWAYS AS (
|
|
CASE WHEN cell_wkt IS NOT NULL THEN ST_GeomFromText(cell_wkt, 4326)::geometry(Point, 4326)
|
|
WHEN cell_lon IS NOT NULL AND cell_lat IS NOT NULL THEN ST_SetSRID(ST_MakePoint(cell_lon, cell_lat), 4326)::geometry(Point, 4326)
|
|
ELSE NULL
|
|
END
|
|
) STORED,
|
|
updated_time timestamp without time zone NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (year_month, data_type, building_id, cellkey, operator_name, network_class, freq, indoor_flag)
|
|
);
|
|
|
|
COMMENT ON TABLE dmk.td_building_cell_m IS '楼宇小区桥接月表,支撑 /api/buildings/cells 与楼宇-小区关联。';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.year_month IS '账期,格式 YYYY-MM';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.data_type IS '数据来源类型';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.building_id IS '楼宇 ID';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cellkey IS '小区唯一键 cellkey';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cell_name IS '小区名称(冗余)';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.operator_name IS '运营商名称';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.network_class IS '网络制式';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.freq IS '频段';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.indoor_flag IS '室内外标识';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.provincecode IS '省编码';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.citycode IS '地市编码';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.districtcode IS '区县编码';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cell_lon IS '小区经度';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cell_lat IS '小区纬度';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cell_wkt IS '小区点 WKT';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.cell_geom IS '小区点几何列(由 cell_wkt 或经纬度生成)';
|
|
COMMENT ON COLUMN dmk.td_building_cell_m.updated_time IS '记录更新时间';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_td_building_cell_query ON dmk.td_building_cell_m(year_month, data_type, provincecode, citycode, districtcode, operator_name, network_class, freq, indoor_flag);
|
|
CREATE INDEX IF NOT EXISTS idx_td_building_cell_geom ON dmk.td_building_cell_m USING gist(cell_geom) WHERE cell_geom IS NOT NULL;
|