人脸系统数据库设计

1. 简介

本文档全面系统的简介描述了人脸系统的数据库结构与设计。

2. 设计约束

人脸系统基于分布式数据OPAQ和业务数据库MYSQL实现。因为人脸抓拍日志(capture_log)数据量非常大,设计上存放在OPAQ,布控报警(alarm)后续要存入到OPAQ中,其余数据存在MySQL。

  • 人脸默认是Hibernate ORM框架,数据库表命名规则为全部小写,例如数据库中的capture_log对应Hibernate中的实体类为CaptureLog。
  • 数据库编码一律使用UTF-8编码
public class CustomMysqlDialect extends MySQL5InnoDBDialect
{
    public String getTableTypeString()
    {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
    }
}
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=com.netposa.face.config.CustomMysqlDialect

3. 数据字典

3.1 用户权限

一个用户可以对应多个角色,一个角色可以对应多个用户。多对多关系。
用于做认证和权限控制

用户表(s_user

用户表保存用户的登录信息

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 用户唯一ID,主键
create_date date DEFAULT NULL 创建日期
idcard varchar(20) NOT NUL 身份证
name varchar(20) NOT NULL 用户名
password varchar(64) NOT NULL MD5码后的密码
realname varchar(20) DEFAULT NULL 真实姓名
sex varchar(20) DEFAULT NULL 性别
status tinyint(1) DEFAULT NULL 状态,0表示可用, 1表示禁用

原来的status设计为status int(11) DEFAULT NULL

角色表(s_role

用来关联用户表,确定每个用户的关系

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 角色唯一ID,主键
name varchar(20) DEFAULT NULL 组名称
description varchar(100) DEFAULT NULL 组描述

将现在的uid删除,没有意义,实际中组也不会特别多,没必要再弄个uuid,删除,目前有很多需求,不想某个人使用某个静态库,因为涉及一些敏感信息

用户角色表(user_role)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 唯一ID,主键
userid int(20) NOT NULL 用户的唯一ID
roleid int(20) NOT NULL 用户所属的组信息

资源表(resource)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 资源唯一ID,主键
name varchar(20) DEFAULT NULL 资源名称

资源角色表(resource_role)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 资源唯一ID,主键
resouceid varchar(20) DEFAULT NULL 资源ID
roleid int(20) NOT NULL 资源所属的角色

3.2 配置管理

人脸库(lib)

库分为静态库和布控库,布控库因为人员不是很多,所有数据全部存放在一张表中
静态库分表存(每个静态库分两张表,一个人员信息表,一个人员图片表,一个人最多有五张图片)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 人脸唯一ID,主键
createtime datetime DEFAULT NULL 库创建时间
creator varchar(255) DEFAULT NULL 库的创建者
memo varchar(512) DEFAULT NULL 库的备注信息
subpictablename varchar(255) DEFAULT 静态库的图片表名称
subtablename varchar(64) DEFAULT NULL 静态库的人员信息表名称
threshold int(11) DEFAULT NULL 阈值1-100
type varchar(255) DEFAULT NULL 库的类型
库的类型为下面两种类型
public enum  LibType
{
    GENERAL,   //普通库
    LARGE      //静态大库
}

人员信息(person)

字段 类型 备注
objectid bigint(20) NOT NULL AUTO_INCREMENT 人脸唯一ID,主键
birth date DEFAULT NULL 生日
createtime datetime NOT NULL 创建时间
idcard varchar(30) DEFAULT NULL 身份证
memo varchar(30) DEFAULT NULL 备注
name varchar(64) DEFAULT NULL 姓名
sex varchar(1) DEFAULT NULL 性别
threshold int(2) DEFAULT NULL 阈值0-100,目前未使用,预留
lib bigint(20) 所在的库ID
credentialstype varchar(2) DEFAULT NULL 证件类型
degree varchar(2) DEFAULT NULL 文化程度
homeaddress varchar(255) DEFAULT NULL 家庭住址
homeplace varchar(255) DEFAULT NULL 出生地
householdreg varchar(255) DEFAULT 籍贯
identity varchar(64) DEFAULT NULL 身份职衔
militaryservice varchar(1) DEFAULT NULL 服兵役情况
nation varchar(2) DEFAULT NULL 民族
nationality varchar(64) DEFAULT NULL 国籍
oldname varchar(64) DEFAULT NULL 曾用名
organization varchar(64) DEFAULT NULL 机构(所在处室或分管工作)
stature varchar(64) DEFAULT NULL 身高

人员图片信息(person_pic)

字段 类型 备注
picid bigint(20) NOT NULL AUTO_INCREMENT 图片唯一ID,键
filepath varchar(255) DEFAULT NULL 文件路径
objectid bigint(20) NOT NULL 对象ID

设备信息 (device)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 设备唯一ID,主键
ip varchar(64) DEFAULT NULL 设备IP地址
name varchar(255) DEFAULT NULL 设备名称
outerip varchar(64) DEFAULT NULL 外网的IP
outerport int(6) DEFAULT NULL 外网的端口
password varchar(64) DEFAULT NULL 密码
port int(6) DEFAULT NULL 摄像机端口
username varchar(64) DEFAULT NULL 摄像机用户名
path varchar(255) DEFAULT NULL IOD服务路径,默认:/iod/system/device/devices
type bigint(20) NOT NULL AUTO_INCREMENT 设备唯类型,具体值见下
public enum DeviceType {
    /**
     * PVG设备
     */
    PVG,

    /**
     * IoD设备
     */
    IoD
}

目前设备信息包含PVG和IoD信息,表名叫pvg,建议修改成device

摄像机表 (camera)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 摄像机一ID,主键
host varchar(64) DEFAULT NULL 摄像机IP地址
name varchar(64) DEFAULT NULL 摄像机av通道名称
path varchar(64) DEFAULT NULL 摄像机分层,直接从PVG设备同步过来的字段
title varchar(64) DEFAULT NULL 标题,摄像机显示的名称
deviceid bigint(20) DEFAULT NULL 摄像机对应上层的设备(PVG、IoD)的ID
iod_id varchar(50) DEFAULT NULL Iod对象的ID
latitude double(20,8) DEFAULT NULL 摄像机的纬度
longitude double(20,8) DEFAULT NULL 摄像机的经度

目前摄像机表存在很多无用的字段,上表已经是精简过的,其它字段都可以删除不用

任务表 (task)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 摄像机一ID,主键
creater varchar(255) DEFAULT NULL 任务创建者
createtime datetime DEFAULT NULL 任务创建时间
starttime varchar(255) DEFAULT NULL 任务开始时间
endtime datetime DEFAULT NULL 任务结束时间
errcode varchar(255) NOT NULL PCC返回的pccJobReport.errorCode
jobkey bigint(20) DEFAULT NULL 任务提交后的jobkey
jobstate varchar(255) DEFAULT NULL PCC返回的jobstate
memo varchar(255) DEFAULT NULL 任务说明
name varchar(255) DEFAULT NULL 任务名称
causes varchar(255) DEFAULT NULL PCC返回的原因状态
committime datetime DEFAULT NULL, PCC任务提交时间
costedtime datetime DEFAULT NULL PCC整个任务花费的时间
processedtime varchar(255) DEFAULT NULL PCC实际算法花费的时间

任务额外配置表 (task_additional_property)

该表主要是在创建布控任务对摄像机进行配置

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 关联关系唯一ID
bottom int(11) DEFAULT NULL 摄像机处理区域bottom
left int(11) DEFAULT NULL 摄像机处理区域left
right int(11) DEFAULT NULL 摄像机处理区域right
top int(11) DEFAULT NULL 摄像机处理区域top
camera bigint(20) DEFAULT NULL 摄像机ID
taskid bigint(20) DEFAULT NULL 任务ID
maxsize bigint(11) DEFAULT NULL 摄像机最大人脸库
minsize bigint(11) DEFAULT NULL 摄像机最小人脸框

3.3 布防布控

告警表 (alarm)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 告警ID
alarm_person_image varchar(255) DEFAULT NULL 告警图片源
alarm_panorama_image varchar(255) DEFAULT NULL 告警全景图片
alarm_time datetime DEFAULT NULL 告警时间
camera_id bigint(20) DEFAULT NULL 摄像机ID
target varchar(255) DEFAULT NULL 比重库的人员json
status int(1) DEFAULT NULL 处理的状态见下
public enum AlarmStatusType {
  ALARM_UNTREATED("未处理", 0),
  ALARM_VALID("有效", 1),
  ALARM_INVALID("无效", 2),
  ALARM_UNKNOWEN("未知", 3);
}
{
   ["libid":1,"objectid":12, "picid":216, "score":85]
}

目前保存的告警表设计冗余度太高,重复太多,并且分别在两张表中,建议重构

你可能感兴趣的:(人脸系统数据库设计)