38 lines
2.6 KiB
MySQL
38 lines
2.6 KiB
MySQL
|
|
-- =============================================
|
|||
|
|
-- 设备轨迹记录表
|
|||
|
|
-- 记录工牌设备进出各区域的轨迹(进入时创建,离开时更新)
|
|||
|
|
-- =============================================
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS `ops_device_trajectory` (
|
|||
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|||
|
|
`device_id` BIGINT NOT NULL COMMENT '工牌设备ID',
|
|||
|
|
`device_name` VARCHAR(64) DEFAULT NULL COMMENT '设备名称(冗余)',
|
|||
|
|
`nickname` VARCHAR(64) DEFAULT NULL COMMENT '设备备注名称(冗余)',
|
|||
|
|
`person_id` BIGINT DEFAULT NULL COMMENT '人员ID(预留)',
|
|||
|
|
`person_name` VARCHAR(64) DEFAULT NULL COMMENT '人员名称(预留)',
|
|||
|
|
`area_id` BIGINT NOT NULL COMMENT '区域ID',
|
|||
|
|
`area_name` VARCHAR(128) DEFAULT NULL COMMENT '区域名称(冗余)',
|
|||
|
|
`beacon_mac` VARCHAR(64) DEFAULT NULL COMMENT '匹配的Beacon MAC',
|
|||
|
|
`enter_time` DATETIME NOT NULL COMMENT '进入时间',
|
|||
|
|
`leave_time` DATETIME DEFAULT NULL COMMENT '离开时间',
|
|||
|
|
`duration_seconds` INT DEFAULT NULL COMMENT '停留时长(秒)',
|
|||
|
|
`leave_reason` VARCHAR(32) DEFAULT NULL COMMENT '离开原因: SIGNAL_LOSS/AREA_SWITCH/DEVICE_OFFLINE',
|
|||
|
|
`enter_rssi` INT DEFAULT NULL COMMENT '进入时RSSI',
|
|||
|
|
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
|
|||
|
|
`creator` VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|||
|
|
`updater` VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|||
|
|
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
INDEX `idx_device_enter` (`device_id`, `enter_time`),
|
|||
|
|
INDEX `idx_area_enter` (`area_id`, `enter_time`),
|
|||
|
|
INDEX `idx_device_area` (`device_id`, `area_id`),
|
|||
|
|
INDEX `idx_tenant` (`tenant_id`),
|
|||
|
|
INDEX `idx_device_area_leave` (`device_id`, `area_id`, `leave_time`)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备轨迹记录';
|
|||
|
|
|
|||
|
|
-- 优化:为 selectOpenRecord 查询(device_id + area_id + leave_time IS NULL)添加索引
|
|||
|
|
-- 注:已有数据的线上环境需单独执行以下 ALTER(如数据量大请在低峰期执行):
|
|||
|
|
-- ALTER TABLE `ops_device_trajectory` ADD INDEX `idx_device_area_leave` (`device_id`, `area_id`, `leave_time`);
|