213 lines
10 KiB
SQL
213 lines
10 KiB
SQL
-- ============================================
|
||
-- SecMPS v2.0 数据库建表脚本(8张表)
|
||
-- 数据库: 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 NVARCHAR(50) NOT NULL COMMENT '设备种类(数据字典)',
|
||
RegionId INT NULL COMMENT '所属区域ID',
|
||
GatewayNodeId INT NULL COMMENT '所属网关节点ID',
|
||
IsParent NVARCHAR(20) NOT NULL DEFAULT '0' COMMENT '是否父设备(数据字典)',
|
||
ParentDeviceId INT NULL COMMENT '父设备ID(自引用,子设备挂父设备下)',
|
||
IsOnline NVARCHAR(20) NOT NULL DEFAULT '0' COMMENT '在线状态(数据字典)',
|
||
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 NVARCHAR(20) DEFAULT '1' COMMENT '启用状态(数据字典)',
|
||
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),
|
||
INDEX IX_Gateway (GatewayNodeId)
|
||
) 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 '单位(数据字典)',
|
||
IsControlPoint NVARCHAR(20) DEFAULT '0' COMMENT '是否控制点(数据字典)',
|
||
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 NVARCHAR(20) DEFAULT '1' COMMENT '告警等级(数据字典)',
|
||
AlarmDesc NVARCHAR(500) COMMENT '告警描述',
|
||
AlarmValue DOUBLE COMMENT '触发值',
|
||
StartTime DATETIME NOT NULL COMMENT '告警开始时间',
|
||
EndTime DATETIME COMMENT '告警结束时间',
|
||
ConfirmTime DATETIME COMMENT '确认时间',
|
||
ConfirmUser NVARCHAR(50) COMMENT '确认人',
|
||
State NVARCHAR(20) DEFAULT '1' COMMENT '状态(数据字典)',
|
||
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 '告警记录表';
|
||
|
||
|
||
-- ============================================
|
||
-- 8. 网关节点注册表
|
||
-- NodeCode=网关唯一编码 AdapterTypes=网关上报
|
||
-- ============================================
|
||
DROP TABLE IF EXISTS gateway_nodes;
|
||
CREATE TABLE gateway_nodes (
|
||
NodeId INT AUTO_INCREMENT COMMENT '网关节点ID',
|
||
NodeCode NVARCHAR(50) NOT NULL COMMENT '网关唯一编码',
|
||
NodeName NVARCHAR(100) NOT NULL COMMENT '网关名称',
|
||
NodeToken NVARCHAR(100) NOT NULL COMMENT '认证令牌',
|
||
AdapterTypes NVARCHAR(200) COMMENT '支持的适配器类型(网关上报)',
|
||
BaseUrl NVARCHAR(200) COMMENT '网关自身地址(网关上报)',
|
||
LastHeartbeat DATETIME COMMENT '上次心跳时间',
|
||
IsOnline NVARCHAR(20) DEFAULT '0' COMMENT '在线状态(数据字典)',
|
||
Enable NVARCHAR(20) DEFAULT '1' COMMENT '启用状态(数据字典)',
|
||
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 (NodeId),
|
||
UNIQUE INDEX IX_Code (NodeCode),
|
||
INDEX IX_Online (IsOnline)
|
||
) COMMENT '网关节点注册表';
|