Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

16 KiB

数据库模式

**本文档引用的文件** - [数据库字段修改记录.txt](file://DB/数据库字段修改记录.txt) - [database_modify.xml](file://Install/Geomative Studio/database_modify.xml) - [Project.h](file://h/Project.h) - [Project.cpp](file://cpp/ProblemZone/Project.cpp) - [Device.cpp](file://cpp/ProblemZone/Device.cpp) - [IOManager.cpp](file://cpp/Managers/IOManager.cpp) - [TdManager.cpp](file://cpp/Managers/TdManager.cpp) - [Script.cpp](file://cpp/ProblemZone/Script.cpp) - [TdRecord.cpp](file://cpp/ProblemZone/TdRecord.cpp) - [GeoMative.rc](file://GeoMative.rc) - [Resource.h](file://Resource.h)

目录

  1. 引言
  2. 核心实体表结构
  3. 数据库关系与ER图
  4. 关键字段业务含义与验证规则
  5. 数据库版本演进历史
  6. 结论

引言

本文档旨在全面描述Geomative Studio软件所使用的Access数据库的结构。基于DB/数据库字段修改记录.txt文件的详细记录,本文档将深入分析项目、设备、脚本、测量数据等核心实体的表结构,包括字段名称、数据类型、主键/外键约束、索引和默认值。文档将解释各表之间的关系(如一对多、多对多等)并提供实体关系图(ER图)进行可视化表示。此外,文档还将包含数据库版本的演进历史和字段变更记录,并说明不同版本间的兼容性处理策略。

Section sources

核心实体表结构

本节详细描述数据库中核心实体的表结构。信息主要来源于IOManager.cpp文件中创建数据库表的代码,以及Project.cppDevice.cpp等文件中查询数据的SQL语句。

项目 (Project) 表

project表存储了工程项目的元数据。

表结构:

字段名称 数据类型 是否可为空 说明
ID AutoNumber 主键,自增ID
CN 文本 (40) 项目ID
PRname 文本 (20) 项目名称
PRdesc 文本 (50) 备注
location 文本 (50) 位置
PRdate 日期/时间 日期
duration 长整型 持续时间(天)
PS 文本 (20) 项目主管
CS 文本 (20) 现场经理
PM 文本 (20) 项目经理
QAS 文本 (20) QA
standard 文本 (20) 标准

Section sources

设备 (Device) 表

device表存储了设备的硬件和配置信息。

表结构:

字段名称 数据类型 是否可为空 说明
ID AutoNumber 主键,自增ID
DEname 文本 (20) 设备名称
modelNO 文本 (20) 型号
SN 文本 (20) 序列号
HWV 文本 (20) 硬件版本
SWV 文本 (20) 软件版本
Mdate 日期/时间 生产日期
Mbatch 文本 (20) 批次号
GPS 文本 (50) GPS信息(2017.9.18新增)

Section sources

脚本 (Script) 表

scon表(在代码中常被称为script)存储了测量任务的配置脚本。

表结构:

字段名称 数据类型 是否可为空 说明
ID AutoNumber 主键,自增ID
CN 文本 (40) 脚本ID
Sname 文本 (20) 阵列名称
Eamount 整型 电极数量
CHamount 整型 通道数量
TPamount 整型 点数
definer 文本 (20) 操作员
DEdate 日期/时间 创建日期
SCdesc 文本 (50) 备注
Rect 文本 矩形大小(2015.6.12新增)
RectLoc 文本 矩形位置(2015.6.12新增)
PoleDistance 文本 电极间距(2015.6.12新增)
PoleStep 文本 电极步长(2015.6.12新增)

Section sources

测量数据 (Measurement Data) 表

td表是存储测量任务的核心表,它与多种具体测量数据表(如td1dcon, td2dcon, td3dcon)存在一对多关系。

表结构:

字段名称 数据类型 是否可为空 说明
ID AutoNumber 主键,自增ID
TDname 文本 (20) 任务名称
Tlocation 文本 (50) 测区位置
DESN 文本 (20) 设备序列号
SCCN 文本 (40) 脚本ID
Sname 文本 (20) 阵列名称
Stype 整型 阵列类型
Ttype 整型 测试方法
Tmode 整型 测试模式
Eamount 整型 电极数量
TPamount 整型 点数
CHamount 整型 通道数量
N 整型 堆叠次数
TRwave 整型 发射波形
TRfrequency 整型 发射频率
Ifrequency 整型 发射频率
SAfrequency 整型 采样频率
Clayout 整型 装置类型
Espace 文本 电极间距(2015.6.12由数字改为文本)
Edistance 文本 电极距离(2015.6.12由数字改为文本)
weather 整型 天气
WDIR 整型 风向
temperature 整型 温度
height 整型 高度
humidity 整型 湿度
Cdate 日期/时间 创建日期
Ctime 日期/时间 创建时间
Tdate 日期/时间 测试日期
Ttime 日期/时间 测试时间
Rdirection 整型 电阻率方向
CRtime 整型 堆叠时间
PM 文本 (10) 项目经理
OP 文本 (10) 操作员
QA 文本 (10) QA
rect 文本 矩形大小(2015.6.12新增)
rect_loc 文本 矩形位置(2015.6.12新增)
SkipCable 整型 跳过电缆(2017.9.18新增)
IsAutoGenerate 整型 是否自动生成(2017.9.25新增)
TZID 长整型 测区ID(外键)

Section sources

测量数据详情表

td1dcon, td2dcon, td3dcon等表存储了具体的测量数据点,与td表通过TCHIDTSN关联。

通用字段结构 (以td2dcon为例):

字段名称 数据类型 是否可为空 说明
ID AutoNumber 主键,自增ID
TSN 整型 任务序列号
TCHID 长整型 通道ID
V 单精度浮点型 电压
I 单精度浮点型 电流
R0 单精度浮点型 电阻
SP 单精度浮点型 自电
bUse 是/否 记录是否有效(2015.6.2新增)
Vrawdata 备注 原始电压数据
Irawdata 备注 原始电流数据

Section sources

数据库关系与ER图

根据对代码的分析,数据库中的核心实体存在以下关系:

  • 项目 (Project)测区 (Tz) 之间存在一对多关系。一个项目可以包含多个测区。
  • 测区 (Tz)测量任务 (Td) 之间存在一对多关系。一个测区可以包含多个测量任务。
  • 设备 (Device)测量任务 (Td) 之间存在一对多关系。一台设备可以执行多个测量任务。
  • 脚本 (Scon)测量任务 (Td) 之间存在一对多关系。一个脚本可以被多个测量任务使用。
  • 测量任务 (Td)测量数据详情 (Td1dcon, Td2dcon, Td3dcon) 之间存在一对多关系。一个测量任务包含多个数据点。
erDiagram
PROJECT {
AutoNumber ID PK
string CN UK
string PRname
string PRdesc
string location
datetime PRdate
long duration
string PS
string CS
string PM
string QAS
string standard
}
DEVICE {
AutoNumber ID PK
string DEname
string modelNO
string SN UK
string HWV
string SWV
datetime Mdate
string Mbatch
string GPS
}
SCON {
AutoNumber ID PK
string CN UK
string Sname
int Eamount
int CHamount
int TPamount
string definer
datetime DEdate
string SCdesc
string Rect
string RectLoc
string PoleDistance
string PoleStep
}
TZ {
AutoNumber ID PK
string CN
string TZname
string location
datetime Cdate
datetime Ctime
long PROID FK
}
TD {
AutoNumber ID PK
string TDname
string Tlocation
string DESN FK
string SCCN FK
string Sname
int Stype
int Ttype
int Tmode
int Eamount
int TPamount
int CHamount
int N
int TRwave
int TRfrequency
int Ifrequency
int SAfrequency
int Clayout
string Espace
string Edistance
int weather
int WDIR
int temperature
int height
int humidity
datetime Cdate
datetime Ctime
datetime Tdate
datetime Ttime
int Rdirection
int CRtime
string PM
string OP
string QA
string rect
string rect_loc
int SkipCable
int IsAutoGenerate
long TZID FK
}
TD1DCON {
AutoNumber ID PK
int TSN
long TCHID
float V
float I
float R0
float SP
boolean bUse
memo Vrawdata
memo Irawdata
}
TD2DCON {
AutoNumber ID PK
int TSN
long TCHID
float V
float I
float R0
float SP
boolean bUse
memo Vrawdata
memo Irawdata
}
TD3DCON {
AutoNumber ID PK
int TSN
long TCHID
float V
float I
float R0
float SP
boolean bUse
memo Vrawdata
memo Irawdata
}
PROJECT ||--o{ TZ : "包含"
TZ ||--o{ TD : "包含"
DEVICE ||--o{ TD : "执行"
SCON ||--o{ TD : "使用"
TD ||--o{ TD1DCON : "包含"
TD ||--o{ TD2DCON : "包含"
TD ||--o{ TD3DCON : "包含"

**Diagram sources **

关键字段业务含义与验证规则

本节列举核心表中关键字段的业务含义和可能的数据验证规则。

项目 (Project) 表

  • CN (项目ID): 项目的唯一标识符。业务规则要求其在系统内必须唯一。
  • PRname (项目名称): 项目的名称,用于用户识别。不能为空。
  • PRdate (日期): 项目创建的日期,用于时间排序和报告生成。
  • PS, CS, PM, QAS (人员): 记录项目相关人员,用于责任追溯。

设备 (Device) 表

  • SN (序列号): 设备的唯一硬件标识符。业务规则要求其在系统内必须唯一。
  • Mdate (生产日期): 设备的生产日期,用于设备生命周期管理。

脚本 (Scon) 表

  • CN (脚本ID): 脚本的唯一标识符。业务规则要求其在系统内必须唯一。
  • Eamount (电极数量): 定义了测量阵列中使用的电极总数。必须为正整数。
  • CHamount (通道数量): 定义了测量任务中使用的通道数量。必须为正整数。

测量任务 (Td) 表

  • TDname (任务名称): 测量任务的名称,用于用户识别。不能为空。
  • Ttype (测试方法): 一个整型代码,通过cm表(代码映射表)关联到具体的测试方法名称(如“电阻率”、“激电”等)。
  • Clayout (装置类型): 一个整型代码,通过cm表关联到具体的装置名称(如“温纳”、“施伦贝谢”等)。
  • Espace / Edistance (电极间距/距离): 存储为文本类型,可能包含单位信息(如"5m"),提供了更大的灵活性。

Section sources

数据库版本演进历史

根据DB/数据库字段修改记录.txt文件,数据库经历了多次重要的结构变更。以下是按时间顺序整理的版本演进历史:

日期 变更内容 变更类型 兼容性说明
2015年6月2日 td1dcon, td2dcon, td3dcon表中增加bUse字段,用于标记记录是否有效。 新增字段 向后兼容。旧数据的bUse字段默认为True(有效)。
2015年6月12日 1. 在Td表中增加rectrect_loc字段。
2. 将Td表的EspaceEdistance字段从数字类型改为文本类型。
3. 在scon表中增加Rect, RectLoc, PoleDistance, PoleStep字段,并删除旧的X0\Y0\X1\Y1字段。
新增字段
修改字段类型
新增/删除字段
向后兼容。旧数据的rectrect_loc为空。EspaceEdistance的数值被转换为字符串。旧的坐标字段被废弃。
2016年12月2日 1. 在ac, acds, td_spc_attr表中新增10个时窗的信息。
2. 在cm表中加入发射频率为9(0.03125Hz)。
新增字段
新增数据
向后兼容。新时窗字段在旧数据中为空。
2017年9月12日 project以及tz表中加入默认的工程和默认测区。 新增数据 向后兼容。不影响现有数据。
2017年9月18日 1. 在device表中增加GPS字段。
2. 在desetting表中增加CableType, LowPowerAlarm, AutoStack字段。
3. 将gr表中的ECODE属性从文本改成整型。
4. 在td表中增加SkipCable字段。
5. 将td表中的DESN属性从必填改为非必填。
新增字段
修改字段类型
修改字段约束
向后兼容。GPS等新字段在旧设备记录中为空。ECODE的文本值被转换为对应的整型代码。DESN字段可为空。
2017年9月23日 新增task_timer表。 新增表 向后兼容。该表用于新功能,不影响旧数据。
2017年9月25日 td表中添加IsAutoGenerate字段。 新增字段 向后兼容。旧任务的该字段为False
2017年9月26日 timer_task表中增加PLCID字段。 新增字段 向后兼容。
2017年9月28日 td1d/2d/3ddcon表中的V,I,R0,SP的字段属性都改为非必填字段。 修改字段约束 向后兼容。允许存储不完整的测量数据。
2019年7月4日 medium表新增加强梯度装置。 新增数据 向后兼容。
2019年7月14日 1. medium表新增跨孔装置。
2. 新增TTaskInfoCoordinetes表,用于保存电极坐标信息。
新增数据
新增表
向后兼容。
2019年12月3日 新增TPictureInfoTPictureCode表,用于存放图片和二维码信息。 新增表 向后兼容。
2019年12月11日 新增TLoggingTaskInfoTLoggingTaskContent表,用于支持测井功能。 新增表 向后兼容。

Section sources

结论

本文档基于对Geomative Studio项目代码和数据库变更记录的分析,全面描述了其Access数据库的模式。数据库设计围绕“项目-测区-任务-数据”的核心流程,通过清晰的表结构和关系来管理地质勘探数据。数据库经历了从2015年至今的持续演进,通过新增字段、修改类型和增加新表的方式,不断扩展功能以支持新的测量方法和设备特性。所有变更都遵循了向后兼容的原则,确保了旧版数据在新版软件中的可用性。cm表作为核心的代码映射表,为系统提供了良好的可配置性和多语言支持能力。