Files
SecMPS/doc/db_init.sql
2026-05-16 04:42:27 +08:00

183 lines
8.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================
-- SecMPS v2.0 数据库建表脚本7张表
-- 数据库: gljs_main
-- 点位=子设备, 通过 Base_Device.ParentDeviceId 级联
-- ============================================
USE gljs_main;
-- ============================================
-- 1. 统一设备主表
-- 采集器/摄像机=父设备(IsParent=1) 探头/通道=子设备(ParentDeviceId)
-- ============================================
DROP TABLE IF EXISTS Base_Device;
CREATE TABLE Base_Device (
DeviceId INT AUTO_INCREMENT COMMENT '设备ID',
DeviceName NVARCHAR(100) NOT NULL COMMENT '设备名称',
AdapterCode NVARCHAR(50) NOT NULL COMMENT '来源适配器',
SourceId NVARCHAR(100) NOT NULL COMMENT '源系统设备ID',
DeviceCategory INT NOT NULL DEFAULT 1 COMMENT '设备大类(1视频/2IoT/3门禁/4道闸/5报警)',
RegionId INT NULL COMMENT '所属区域ID',
IsParent TINYINT NOT NULL DEFAULT 0 COMMENT '是否父设备(0叶子/1可展开)',
ParentDeviceId INT NULL COMMENT '父设备ID(自引用,子设备挂父设备下)',
IsOnline TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态(0离线/1在线)',
IpAddress NVARCHAR(50) COMMENT 'IP地址',
Port INT COMMENT '端口',
Location NVARCHAR(200) COMMENT '安装位置',
Lat DOUBLE COMMENT '纬度',
Lng DOUBLE COMMENT '经度',
MapModelId NVARCHAR(100) COMMENT '三维地图模型ID',
MapModelScale FLOAT DEFAULT 1.0 COMMENT '模型缩放比例',
MapModelRotation NVARCHAR(100) COMMENT '模型旋转角度(JSON)',
ExtraData TEXT COMMENT '源系统原始数据JSON',
LocalOverrides TEXT COMMENT '本地覆盖字段JSON',
SyncVersion BIGINT DEFAULT 0 COMMENT '同步版本号',
LastSyncTime DATETIME COMMENT '上次同步时间',
Enable TINYINT DEFAULT 1 COMMENT '启用(0禁用/1启用)',
Remark NVARCHAR(500) COMMENT '备注',
CreateID INT COMMENT '创建人ID',
Creator NVARCHAR(50) COMMENT '创建人',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
ModifyID INT COMMENT '修改人ID',
Modifier NVARCHAR(50) COMMENT '修改人',
ModifyDate DATETIME COMMENT '修改时间',
PRIMARY KEY (DeviceId),
INDEX IX_Sync (AdapterCode, SourceId),
INDEX IX_Region (RegionId),
INDEX IX_Parent (ParentDeviceId),
INDEX IX_Category (DeviceCategory)
) COMMENT '统一设备主表';
-- ============================================
-- 2. 视频设备扩展表
-- DeviceId(INT) → Base_Device.DeviceId
-- ============================================
DROP TABLE IF EXISTS Device_Video_Ext;
CREATE TABLE Device_Video_Ext (
ExtId INT AUTO_INCREMENT COMMENT '扩展记录ID',
DeviceId INT NOT NULL COMMENT '关联设备ID',
OwlDeviceId NVARCHAR(64) NOT NULL COMMENT 'Owl系统设备ID',
Protocol INT DEFAULT 1 COMMENT '接入协议',
Manufacturer NVARCHAR(100) COMMENT '厂商',
Model NVARCHAR(100) COMMENT '设备型号',
ChannelCount INT DEFAULT 0 COMMENT '通道数量',
OwlStatus NVARCHAR(500) COMMENT 'Owl原始状态JSON',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ExtId),
INDEX IX_Device (DeviceId),
INDEX IX_Owl (OwlDeviceId)
) COMMENT '视频设备扩展表';
-- ============================================
-- 3. 视频通道扩展表
-- 存Owl通道的流地址/云台/录像能力等扩展信息
-- DeviceId(INT) → Base_Device.DeviceId一台NVR可有多条通道记录对应不同码流
-- ============================================
DROP TABLE IF EXISTS Video_Channel;
CREATE TABLE Video_Channel (
ChannelId INT AUTO_INCREMENT COMMENT '通道记录ID',
OwlChannelId NVARCHAR(64) NOT NULL COMMENT 'Owl系统通道ID',
DeviceId INT NOT NULL COMMENT '关联Base_Device设备ID',
OwlStreamApp NVARCHAR(50) COMMENT 'Owl流应用名',
OwlStreamName NVARCHAR(100) COMMENT 'Owl流名称',
HasPtz TINYINT DEFAULT 0 COMMENT '是否支持云台',
HasRecording TINYINT DEFAULT 0 COMMENT '是否支持录像',
RecordMode INT DEFAULT 0 COMMENT '录像模式',
SnapshotUrl NVARCHAR(500) COMMENT '快照地址',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ChannelId),
INDEX IX_Device (DeviceId),
INDEX IX_Owl (OwlChannelId)
) COMMENT '视频通道扩展表';
-- ============================================
-- 4. 录像记录表
-- ChannelId(INT) → Video_Channel.ChannelId
-- ============================================
DROP TABLE IF EXISTS Video_Record;
CREATE TABLE Video_Record (
RecordId INT AUTO_INCREMENT COMMENT '录像记录ID',
ChannelId INT NOT NULL COMMENT '关联通道ID',
OwlRecordId INT NOT NULL COMMENT 'Owl录像记录ID',
App NVARCHAR(50) COMMENT '应用名',
Stream NVARCHAR(100) COMMENT '流ID',
StartedAt DATETIME NOT NULL COMMENT '录像开始时间',
EndedAt DATETIME COMMENT '录像结束时间',
Duration DOUBLE DEFAULT 0 COMMENT '录像时长(秒)',
FilePath NVARCHAR(500) COMMENT '文件路径',
FileSize BIGINT DEFAULT 0 COMMENT '文件大小(字节)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (RecordId),
INDEX IX_Channel (ChannelId),
INDEX IX_Time (StartedAt)
) COMMENT '录像记录表';
-- ============================================
-- 5. IoT设备扩展表含点位属性
-- DeviceId(INT) → Base_Device.DeviceId
-- 子设备(点位)的额外属性: PointIndex/Unit/IsControlPoint
-- ============================================
DROP TABLE IF EXISTS Device_IoT_Ext;
CREATE TABLE Device_IoT_Ext (
ExtId INT AUTO_INCREMENT COMMENT '扩展记录ID',
DeviceId INT NOT NULL COMMENT '关联设备ID',
Mc4DeviceId INT NOT NULL COMMENT 'MC4.0设备ID',
PointIndex INT DEFAULT 0 COMMENT '点位索引(子设备用)',
PointTag NVARCHAR(100) COMMENT '点位标签',
Unit NVARCHAR(50) COMMENT '单位(℃/%/V)',
IsControlPoint TINYINT DEFAULT 0 COMMENT '是否控制点(0只读/1可写)',
ObjectType INT COMMENT 'MC4.0对象类型',
Tag NVARCHAR(100) COMMENT '设备标签',
ParentId INT COMMENT 'MC4.0父级ID',
Mc4Option NVARCHAR(500) COMMENT 'MC4.0原始配置JSON',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ExtId),
INDEX IX_Device (DeviceId),
INDEX IX_Mc4 (Mc4DeviceId)
) COMMENT '采集设备扩展表';
-- ============================================
-- 6. 设备数据归档表
-- DeviceId(INT) → Base_Device.DeviceId直接指向子设备/点位)
-- ============================================
DROP TABLE IF EXISTS IoT_DeviceData;
CREATE TABLE IoT_DeviceData (
DataId INT AUTO_INCREMENT COMMENT '数据记录ID',
DeviceId INT NOT NULL COMMENT '关联设备ID(子设备/点位)',
PointValue DOUBLE COMMENT '点位数值',
UpdateTime DATETIME NOT NULL COMMENT '数据更新时间',
`Interval` INT DEFAULT 0 COMMENT '采集间隔(毫秒)',
ArchiveType INT DEFAULT 1 COMMENT '归档类型(1小时/2日)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (DataId),
INDEX IX_Device (DeviceId),
INDEX IX_Time (CreateDate)
) COMMENT '设备数据归档表';
-- ============================================
-- 7. 告警记录表(通用)
-- DeviceId(INT) → Base_Device.DeviceId
-- ============================================
DROP TABLE IF EXISTS IoT_Alarm;
CREATE TABLE IoT_Alarm (
AlarmId INT AUTO_INCREMENT COMMENT '告警ID',
SourceAlarmId NVARCHAR(100) NOT NULL COMMENT '源系统告警ID',
DeviceId INT NOT NULL COMMENT '关联设备ID',
AlarmType INT DEFAULT 0 COMMENT '告警类型',
AlarmLevel INT DEFAULT 1 COMMENT '告警等级(1提示/2普通/3重要/4紧急)',
AlarmDesc NVARCHAR(500) COMMENT '告警描述',
AlarmValue DOUBLE COMMENT '触发值',
StartTime DATETIME NOT NULL COMMENT '告警开始时间',
EndTime DATETIME COMMENT '告警结束时间',
ConfirmTime DATETIME COMMENT '确认时间',
ConfirmUser NVARCHAR(50) COMMENT '确认人',
State INT DEFAULT 1 COMMENT '状态(1未确认/2已确认/3已结束)',
AdapterCode NVARCHAR(50) COMMENT '来源适配器',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (AlarmId),
INDEX IX_Device (DeviceId),
INDEX IX_Source (SourceAlarmId),
INDEX IX_Time (StartTime),
INDEX IX_Level (AlarmLevel)
) COMMENT '告警记录表';