Skip to content

BIM引擎底座 · 数据库设计 ​

文档版本:0.36 | 最近核对日期:2026-11-09

1. 基线与设计边界 ​

本文给出首期六张表的完整字段设计,覆盖模型资产、版本、处理任务、内部文件、全量构件及属性。2026-11-08 已按本文结构通过项目纳管入口在开发库建表并回读:6 张表、27 项约束(主键/唯一/检查)、8 个命名索引全部就位,列数与字段矩阵一致(模型资产 9、版本 22、任务 29、内部文件 11、构件 10、属性 14,含 BaseEntity 审计列)。生产库未访问、未建表。

核对对象开发库实际事实本设计采用方式
BIM_MODEL、BIM_MODEL_VERSION、BIM_PROCESS_TASK、BIM_MODEL_FILE、BIM_ELEMENT、BIM_ELEMENT_PROPERTY2026-11-08 经纳管入口按本文建表;回读列数 9/22/29/11/10/14,约束 27 项、命名索引 8 个已建成,字段矩阵即实际结构
BIZ_UNIT_PROJECT.UNIT_PROJECT_IDBIGINT,非空模型唯一工程归属逻辑外键
BIZ_UNIT_PROJECT.LINE_ID/BID_ID/SITE_IDBIGINT,非空从单位工程关联解析工程范围,不复制到BIM_MODEL
BIZ_UNIT_PROJECT.MAJOR_CODEVARCHAR(64),非空从单位工程继承标准专业,不重复录入
BIZ_SITE_MASTER.SITE_MASTER_IDBIGINT,非空通过单位工程关联工点,用于汇总
BIZ_SITE_MASTER.LINE_IDBIGINT,允许空业务服务核对实际线路关系;不能假设数据库保证非空
BIZ_MAJOR_DICT.IDVARCHAR(64),非空不转为 Long,不作为模型专业字段
BIZ_MAJOR_DICT.MAJOR_CODEVARCHAR(64),非空单位工程专业对应标准字典,BIM不另存归属编码
SYS_OSS.OSS_IDNUMBER,DATA_LENGTH=22,非空复用文件记录;实体映射为 Long
SYS_MENU BIM相关记录原 10 行禁用旧记录;本次启用「BIM底座/模型管理」及四个按钮,删除旧进度任务与 bim:model:view 共 5 行,新增 bim:model:edit/submit/download/preview 四行仅保留本模块入口,不恢复旧进度任务

2026-11-08 实测补充:DM8 空字符串不折叠为 NULL('' IS NULL 为假),DBMS_LOB.SUBSTR(clob, n, 1) 可用于 CLOB 有界比较;属性筛选按此实现,更换数据库时需复核该适配点。

2. 关系与通用约定 ​

版本的 CURRENT_TASK_ID 指向当前处理尝试,ACCEPTED_TASK_ID 指向已完整核查的解析快照;资产的 CURRENT_VERSION_ID 指向当前发布版本。它们必须指向自身下属记录,不允许跨资产或跨版本引用。

  • 主键为平台雪花 ID,逻辑类型 Long,目标 DM8 类型 BIGINT;浏览器不得数字化转换。
  • LFK 表示逻辑外键,服务端校验引用与归属,本版不假定建立物理外键,也不设计级联删除。PK、UK、I 分别表示主键、联合唯一约束及普通索引。
  • 以下矩阵每表包含 BaseEntity 五个持久化审计列。params 等非持久化辅助字段不建列。无租户、审批或独立组织权限需求,不建 tenant_id、流程实例字段或另一套授权表。
  • “无”表示无数据库默认值,填充值由表中来源指定。当前首期无删除动作,不增设无来源的逻辑删除字段;历史版本及失败任务暂保留。
  • 所有行“核验”均为“已建(2026-11-08)”;列、约束与索引经开发库回读一致。VARCHAR 长度为实际定义,中文字符按 UTF-8 存储。
  • 时间由应用审计/业务服务填充。任务执行采用原发起人审计上下文,不凭空使用用户 0;创建部门允许空,以平台现有用户上下文为准。
  • CLOB 存放原始大文本,不要求数据库 JSON 扩展。跨人大金仓、openGauss 的 CLOB 映射、空字符串、排序规则和索引长度需专项验证,不把 DM8 方言变成业务规则。

3. 完整字段矩阵 ​

3.1 BIM_MODEL:模型资产 ​

对应R-BIM-001~005、资产接口。模型唯一归属为UNIT_PROJECT_ID;工点、标段、线路和专业通过单位工程解析。此前草稿的SITE_MASTER_ID、MAJOR_CODE从目标模型表移除,不建立双写、兼容字段或归属快照。开发库此前未建BIM表,本次是目标设计修订,不是已执行数据迁移。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
MODEL_ID模型资产IDLongBIGINT64位否无PK雪花ID已建
UNIT_PROJECT_ID所属单位工程IDLongBIGINT64位否无LFK;I_UNIT导航选定单位工程,后端核对有效性及专属权限已建
MODEL_NAME模型名称及局部范围StringVARCHAR256否无无用户填写已建
CURRENT_VERSION_ID当前发布版本IDLongBIGINT64位是无LFK发布事务更新已建
CREATE_DEPT创建部门LongBIGINT64位是无无BaseEntity审计已建
CREATE_BY创建人LongBIGINT64位否无无BaseEntity审计已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无无BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无BaseEntity审计已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

3.2 BIM_MODEL_VERSION:原文件与业务版本 ​

对应 R-BIM-010、030~034。每个平台版本对应独立黑洞数据集;版本号仅在本资产内递增。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
VERSION_ID模型版本IDLongBIGINT64位否无PK雪花ID已建
MODEL_ID所属模型资产LongBIGINT64位否无LFK;UK_VER首列资产接口上下文已建
VERSION_NO业务版本序号IntegerINT32位否无UK_VER次列资产内从1递增已建
SOURCE_OSS_ID原文件记录IDLongBIGINT64位否无LFK本次成功上传的SYS_OSS记录已建
SOURCE_NAME原始文件名快照StringVARCHAR1024否无无上传文件名,经安全处理已建
SOURCE_FORMAT原文件格式EnumVARCHAR8否无CHECK既有RVT/PAK枚举保留;本期验收RVT,PAK支持延期,不因延期修改既有约束或清理记录已建
SOURCE_SIZE原文件字节数LongBIGINT64位否无CHECK非负文件存储实际结果已建
CURRENT_TASK_ID当前处理任务LongBIGINT64位是无LFK建立或重新处理时设置已建
ACCEPTED_TASK_ID完整解析快照任务LongBIGINT64位是无LFK全量核查通过后设置已建
ENGINE_DATASET_ID服务端数据集标识StringVARCHAR128是无UK_DATASET黑洞创建结果,保留原值已建
ENGINE_VERSION成功转换的引擎版本号IntegerINT32位是无无黑洞转换成功结果已建
ENGINE_RES_ID几何资源标识StringVARCHAR128是无无viewDataSetModel结果已建
VIEW_CONFIG资源与坐标描述快照ObjectCLOB大文本是无无适配器白名单字段,不存凭据已建
STABLE_ID_SUPPORT引擎稳定标识能力EnumVARCHAR16否UNKNOWNCHECKUNKNOWN/SUPPORTED/UNSUPPORTED已建
INSPECTION_CONFIRMED发布检查确认BooleanCHAR1否0CHECK发布时写1已建
PUBLISHED_BY发布人LongBIGINT64位是无LFK用户当前登录人员已建
PUBLISHED_AT首次发布时间DateTimeTIMESTAMP6是无无发布事务填充已建
CREATE_DEPT创建部门LongBIGINT64位是无无BaseEntity审计已建
CREATE_BY创建人LongBIGINT64位否无无BaseEntity审计已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无无BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无BaseEntity审计已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

VIEW_CONFIG 仅包含受控资源相对定位、场景内容、scale/rotate/translation、坐标系与基点等经适配确认的字段;认证信息及部署服务器地址由运行配置提供。不能存储任意脚本、任意代理目标或管理员凭据。

3.3 BIM_PROCESS_TASK:一次处理尝试 ​

对应 R-BIM-011~015。每次重新处理新建记录;任务计数是完整性核查证据,不另建同步进度表。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
TASK_ID处理任务IDLongBIGINT64位否无PK雪花ID已建
VERSION_ID所属版本LongBIGINT64位否无LFK;UK_ATTEMPT首列版本服务已建
ATTEMPT_NO版本内尝试序号IntegerINT32位否无UK_ATTEMPT次列从1递增已建
TASK_STATUS任务状态EnumVARCHAR16否PENDINGI_TASK首列;CHECKPENDING/RUNNING/SUCCEEDED/FAILED已建
TASK_PHASE当前处理阶段EnumVARCHAR16否REGISTERCHECKREGISTER/UPLOAD/CONVERT/PARSE/CHECK已建
ENGINE_STATUS引擎转换原始状态IntegerINT32位是无无转换状态接口原值已建
ENGINE_DATASET_ID本次尝试的服务端数据集StringVARCHAR128是无无上传申请返回或经核实复用版本映射;保留尝试历史已建
ENGINE_VERSION本次解析的引擎版本IntegerINT32位是无无开始解析前固定成功转换版本已建
ENGINE_SOURCE_FILE_ID引擎管理端源文件IDStringVARCHAR128是无无createInFolder返回fileId;不是hostFileId已建
ENGINE_UPLOAD_ID引擎上传记录IDStringVARCHAR128是无无createInFolder返回fileDataId已建
ENGINE_UPLOAD_KEY引擎上传处理标识StringVARCHAR512是无无后台上传路线保存为 fileKey|savePath,仅供服务端映射传输与通知完成使用,不返回前端已建
CHUNK_SIZE本次分片大小字节数LongBIGINT64位是无CHECK正数申请上传前固定已建
CHUNK_COUNT本次总分片数IntegerINT32位是无CHECK正数按源文件字节数计算已建
LAST_CONFIRMED_CHUNK最后明确成功的分片索引IntegerINT32位是无无从未成功为空;起点依据已验证协议已建
PROGRESS当前阶段百分比DecimalDECIMAL5,2是无CHECK范围0~100实际进度,未知为空已建
EXPECTED_FILES预期内部文件数LongBIGINT64位是无无文件枚举完成后统计已建
COMPLETED_FILES已完整解析文件数LongBIGINT64位否0无完整性核查累计已建
EXPECTED_ELEMENTS枚举所得构件总数LongBIGINT64位是无无全文件枚举完成后统计已建
COMPLETED_ELEMENTS身份与属性读取完成构件数LongBIGINT64位否0无包含成功读取空属性的构件已建
PROPERTY_COUNT已写入属性条数LongBIGINT64位否0无与源响应累计及DB回读核对已建
ERROR_CODE失败分类StringVARCHAR64是无无平台异常分类已建
ERROR_MESSAGE脱敏失败说明StringVARCHAR2000是无无保留阶段和对象定位,不含凭据已建
STARTED_AT开始处理时间DateTimeTIMESTAMP6是无无首次执行时填充已建
FINISHED_AT完成或失败时间DateTimeTIMESTAMP6是无无终态时填充已建
CREATE_DEPT创建部门LongBIGINT64位是无无BaseEntity审计已建
CREATE_BY创建人LongBIGINT64位否无无原处理发起人已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无I_TASK次列BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无保留任务审计上下文已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

上传映射由成功远端响应填充后才推进阶段。ENGINE_UPLOAD_KEY 不进入 VO、普通日志或错误提示;字段存储只对后端服务账号开放。重试若复用已确认的远端文件,复制必要映射到新任务,并校验它属于同一版本。LAST_CONFIRMED_CHUNK 仅证明已确认部分,不证明响应超时的下一片未被接收;恢复须查询远端事实。ENGINE_DATASET_ID/ENGINE_VERSION 是任务历史快照,不能因版本当前映射调整而回写历史任务。

3.4 BIM_MODEL_FILE:解析快照内的文件 ​

同一上传文件转换后可能包含多个内部文件。TASK_ID 固定快照,ENGINE_FILE_ID 只在本次快照内解释。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
FILE_ID平台内部文件IDLongBIGINT64位否无PK雪花ID已建
TASK_ID所属解析任务快照LongBIGINT64位否无LFK;UK_FILE首列处理任务已建
ENGINE_FILE_ID引擎文件索引原值StringVARCHAR128否无UK_FILE次列fileIntId/hostFileId经适配校验已建
SOURCE_UID引擎返回的文件唯一标识StringVARCHAR512是无无uniqueId原值,不假设跨版稳定已建
FILE_NAME内部文件名称StringVARCHAR1024否无无内部文件名称(格式如 {源文件名}_V{版本号}.{扩展名})已建
LAZY_LOADING目录树逐级读取标志BooleanCHAR1否无CHECKenableLazyLoading转换0/1已建
CREATE_DEPT创建部门LongBIGINT64位是无无任务审计上下文已建
CREATE_BY创建人LongBIGINT64位否无无任务审计上下文已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无无BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无任务审计上下文已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

3.5 BIM_ELEMENT:全量构件 ​

对应 R-BIM-012、023、033。不会用稳定标识去重;平台主键表示快照构件实例,不表示跨版本实体。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
ELEMENT_ID平台构件IDLongBIGINT64位否无PK雪花ID已建
FILE_ID所属内部文件LongBIGINT64位否无LFK;UK_ELEMENT首列文件解析上下文已建
RUNTIME_ELEMENT_ID引擎构件运行时标识StringVARCHAR128否无UK_ELEMENT次列elementIntId原值字符串化保存已建
STABLE_ID候选稳定构件标识StringVARCHAR512是无无elementGuidId等已核实字段原值已建
ELEMENT_NAME原始构件名称StringVARCHAR1024是无无引擎构件信息,不自行生成业务名已建
CREATE_DEPT创建部门LongBIGINT64位是无无任务审计上下文已建
CREATE_BY创建人LongBIGINT64位否无无任务审计上下文已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无无BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无任务审计上下文已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

3.6 BIM_ELEMENT_PROPERTY:原始分组属性 ​

属性名称不作为唯一键。GROUP_ORDER、PROPERTY_ORDER 是完整响应中的出现次序,即使名称相同也能保留。保留无名称、无分组或空值原始项;UI 可显示缺失提示,但不将提示文字写回原值。

字段中文含义逻辑类型DM8类型长度/精度可空默认键/索引来源/生成规则核验
PROPERTY_ID属性记录IDLongBIGINT64位否无PK雪花ID已建
ELEMENT_ID所属平台构件LongBIGINT64位否无LFK;UK_PROPERTY首列构件解析上下文已建
GROUP_ORDER分组出现次序IntegerINT32位否无UK_PROPERTY次列按响应顺序从1编号已建
GROUP_NAME原始属性分组StringVARCHAR512是无无paramGroup原值已建
PROPERTY_ORDER组内属性次序IntegerINT32位否无UK_PROPERTY末列按响应顺序从1编号已建
PROPERTY_NAME原始属性名称StringVARCHAR512是无无paramName原值已建
VALUE_KIND原值空值标记EnumVARCHAR8否无CHECKNULL或TEXT已建
RAW_VALUE原始属性值StringCLOB大文本是无无paramValue原值;不转浮点已建
UNIT_TEXT原始单位描述StringVARCHAR512是无无已核实的paramType单位文本已建
CREATE_DEPT创建部门LongBIGINT64位是无无任务审计上下文已建
CREATE_BY创建人LongBIGINT64位否无无任务审计上下文已建
CREATE_TIME创建时间DateTimeTIMESTAMP6否无无BaseEntity审计已建
UPDATE_BY最后更新人LongBIGINT64位否无无任务审计上下文已建
UPDATE_TIME最后更新时间DateTimeTIMESTAMP6否无无BaseEntity审计已建

VALUE_KIND=NULL 表示源值 null;TEXT 表示源字符串,允许空字符串。若数据库把空串折叠为 null,TEXT+RAW_VALUE为空仍回读为空字符串,NULL+RAW_VALUE为空才回读 null。此规则需在目标数据库用真实驱动验证。若引擎返回非字符串值,适配器先确认契约并补充无损类型设计,不静默强制转成某种数值格式。

4. 索引、约束与读取方式 ​

目标约束/索引表与列对应读写用途
PK各表自身ID对象定位
I_UNITBIM_MODEL(UNIT_PROJECT_ID)单位工程模型查询、引用检查及关联工程范围过滤
UK_VERBIM_MODEL_VERSION(MODEL_ID, VERSION_NO)业务版本唯一
UK_DATASETBIM_MODEL_VERSION(ENGINE_DATASET_ID)每业务版本独立数据集;空值不参与业务唯一性判断
UK_ATTEMPTBIM_PROCESS_TASK(VERSION_ID, ATTEMPT_NO)处理尝试唯一及历史查询
I_TASKBIM_PROCESS_TASK(TASK_STATUS, CREATE_TIME)任务设施扫描待处理记录
UK_FILEBIM_MODEL_FILE(TASK_ID, ENGINE_FILE_ID)快照内文件唯一
UK_ELEMENTBIM_ELEMENT(FILE_ID, RUNTIME_ELEMENT_ID)文件内运行时构件唯一
UK_PROPERTYBIM_ELEMENT_PROPERTY(ELEMENT_ID, GROUP_ORDER, PROPERTY_ORDER)保留重复名称属性,按构件读取

唯一约束保护的是已确认身份,不是额外并发设计。不建立单位工程模型唯一约束、工点+专业唯一约束或全库稳定构件ID唯一约束。导航和列表关联有效BIZ_UNIT_PROJECT,按同线整线或实际标段工点组合授权过滤,再施加节点范围;不分别对bidId与siteId做OR放行。导航单位工程数与模型数分别去重,不能因版本/构件联接重复累计。属性检索先限定授权模型及版本快照,再用EXISTS匹配属性,构件分页和总数使用同一条件。首期不引入搜索引擎、物化统计表或全局属性倒排索引;实际规模证据显示不足时再定向优化。

单位工程存在模型资产引用即禁止删除,包括标段范围/专业调整和删除标段的间接删除;由工程服务经API契约查询I_UNIT支持的引用事实,在原工程事务中拒绝,不设计数据库级联删除。单位工程名称等合法编辑实时反映在模型归属展示,不变更模型ID。此保护尚待应用实现,不能当作现有数据库约束。

业务约束:版本号和尝试号大于0,任务计数非负,枚举值在明确范围内;发布人、时间、检查确认必须成组有效。被接受的任务必须属于本版本且状态成功;当前发布版本必须属于本资产且已发布。上述跨行关系由同一应用服务事务保证,建表后补充与实际数据库约束一致的记录。

5. 快照、恢复与继承 ​

重新处理未发布版本时,建立新任务并清空该版本 ACCEPTED_TASK_ID;需要重新转换时才清空失效的资源描述。只有解析失败而转换成果仍有效时,复用该数据集及固定引擎版本,从 PARSE 开始建立新快照。失败任务的文件、构件、属性保留,但任何普通查询只沿版本 ACCEPTED_TASK_ID 读取完整快照。已发布版本禁止重新处理,新增文件须建立新版本。

已确认失效的未发布远端上传可重新登记,版本只保留一个当前有效数据集;原失败尝试的远端映射留在任务记录中。禁止复用另一个平台版本的数据集,也禁止因相同原文件名覆盖其他版本。阶段恢复条件见详细设计。

稳定标识继承只预留事实:资产 ID、文件原始身份、候选稳定构件 ID 及引擎能力。首期不建业务关联表、继承结果表或冲突工单表。后续即使能力为 SUPPORTED,也要核对文件身份以及两版标识唯一性;本期没有自动继承业务关联的实际执行结果。

6. 实施变更与环境记录 ​

项目当前状态实施与回读结果
六张BIM业务表开发库已建(2026-11-08);生产未建经纳管入口执行 12 条 DDL(6 表 + 6 索引);回读 6 表、27 项约束、8 个命名索引,列数与矩阵一致
单位工程/工点/专业/文件依赖已核对相关列,未修改共享结构单位工程有效性、工程关联与 OSS 映射按现状复用;应用侧补引用保护(三处删除入口)
BIM菜单已更新(2026-11-08)启用「BIM底座 → 模型管理」及 bim:model:query/add/upload/publish;删除旧进度任务 4 行与 bim:model:view 1 行;新增 bim:model:edit/submit/download/preview 4 行并绑定超级管理员与既有角色
开发数据已写入测试资产与版本1 个单位工程下「主体结构」资产及 RVT 首版;任务尝试记录含一次认证失败与转换中状态;DML 影响行数逐条回读
生产结构与应用发布未访问、未执行获具体发布授权后回读生产现状;不能照搬开发实际差异或清理未知历史

本次没有数据库发布包或可恢复备份。后续发布应按“核实目标与备份 → 建立结构 → 部署应用与资源访问配置 → 配置菜单权限 → 真实样本验证”的顺序执行;故障时先停用新入口、保留原文件及已生成数据,不通过删除共享表或覆盖业务数据回退。数据库操作统一遵循环境配置与运行。

2026-11-09 生产菜单对齐 ​

已通过项目 MCP 清除生产旧进度图模关联菜单及 3 个按钮、旧 bim:model:view 按钮,新增 4 个模型操作权限按钮并同步对应角色菜单关联;具体范围及回读见系统设置数据库设计。本次仅处理菜单授权,未核查或部署生产 BIM 应用与业务表;上述历史生产结构状态不能视为本次回读结论。