将mysql数据库表结构导出成DBML格式

前言

DBML(数据库标记语言)是一种简单易读的 DSL 语言,用于定义数据库结构。

因为需要分析商品模块的表设计是否合理,所以需要图形化表,并显示表之前的关系。
想来想去,找到了DBML。所以就需要将数据库结构,导出成DBML格式。

方法

用的laravel框架。

有两种方法

  • 使用 desc tableName
输入如下:
array:13 [0 => array:6 ["Field" => "id""Type" => "bigint(20)""Null" => "NO""Key" => "PRI""Default" => null"Extra" => "auto_increment"]1 => array:6 ["Field" => "parent_id""Type" => "bigint(20)""Null" => "YES""Key" => "MUL""Default" => "0""Extra" => ""]
  • 使用 show create table tableName
输出如下:
CREATE TABLE `category` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',`parent_id` bigint(20) DEFAULT '0' COMMENT '父分类ID(0表示顶级分类)',`category_name` varchar(255) NOT NULL COMMENT '分类名称',`category_alias` varchar(255) NOT NULL DEFAULT '' COMMENT '分类别名',`category_code` varchar(50) DEFAULT NULL COMMENT '分类编码',`category_sort` int(11) NOT NULL DEFAULT '1' COMMENT '分类排序值',`level` int(11) NOT NULL DEFAULT '1' COMMENT '分类层级(1=一级分类)',`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态(1=启用,0=停用)',`user_created` varchar(255) NOT NULL DEFAULT '' COMMENT '创建人',`user_cid` int(11) NOT NULL DEFAULT '0' COMMENT '创建人id',`user_updated` varchar(255) NOT NULL DEFAULT '' COMMENT '更新人',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,KEY `idx_parent_id` (`parent_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=777 DEFAULT CHARSET=utf8mb4 COMMENT='分类表'

因此就需要结合这两种命令得到DBML格式所需要的数据。,脚本如下。

<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\DB;class TestController extends Controller
{public function dbtableToDbml(){$tables = ['category','category_attribute','attribute','attribute_option','product','product_attribute','product_attribute_option','process','process_resource','combo','combo_item','combo_item_attribute','customer_subtotal','customer_product','customer_combo','customer_combo_item','customer_combo_attribute','customer_combo_material','customer_combo_material_attribute','customer_product_process','customer_product_process_resource',];$res = $this->dbtableStruToDbml($tables);return $res;}//数据库表结构转为DBML格式public function dbtableStruToDbml($tables){$tableArr = is_string($tables) ? explode(',', $tables) : $tables;$res = '';//获取字段名及备注$extractFieldAndComment = function ($str) {$result = ['field' => null,'comment' => null];// 1. 提取字段名(匹配反引号包裹的内容)if (preg_match('/`([^`]+)`/', $str, $fieldMatches)) {$result['field'] = trim($fieldMatches[1]);}// 2. 提取COMMENT后的内容(如果存在)if (preg_match('/COMMENT\s+\'([^\']*)\'/i', $str, $commentMatches)) {$result['comment'] = trim($commentMatches[1]);}return $result;};$getTableComment = function ($str) {// 正则表达式解析:// COMMENT\s*=\s* 匹配"COMMENT"及可能的空格、等号、空格(不区分大小写)// '([^']*)' 匹配单引号内的内容(捕获组1),[^']*表示非单引号的任意字符(包括空)$pattern = '/COMMENT\s*=\s*\'([^\']*)\'/i';// 执行匹配if (preg_match($pattern, $str, $matches)) {// 匹配成功,返回捕获到的内容(trim处理避免意外空格,保留空内容)return trim($matches[1]);}// 无COMMENT时返回空字符串return '';};foreach ($tableArr as $table) {$tableComment = '';$tableDesc = DB::select("desc {$table}");$filedArr = [];foreach ($tableDesc as $item) {$filedArr[$item->Field] = ['field' => $item->Field,'type' => $item->Type,'comment' => ''];}$createTable = DB::select("show create table {$table}");$createTable = json_decode(json_encode($createTable), true);$createTable = $createTable[0]['Create Table'];$fieldInfos = explode("\n", $createTable);foreach ($fieldInfos as $fieldInfo) {$fieldInfo = trim($fieldInfo, ' '); //去掉前面的空格$pattern = '/^`/'; //是否以 ` 号开头,是的话,才是字段,否则就是其他的,其他的不考虑if (preg_match($pattern, $fieldInfo)) {//是字段才处理$fieldAndComment = $extractFieldAndComment($fieldInfo);$filedArr[$fieldAndComment['field']]['comment'] = $fieldAndComment['comment'];} elseif (preg_match('/^\)/', $fieldInfo)) {$tableComment = $getTableComment($fieldInfo);}}$str = '';$str = "Table {$table} {\n";foreach ($filedArr as $fieldItem) {$str .= "   {$fieldItem['field']} {$fieldItem['type']} [note: '{$fieldItem['comment']}'] \n";}$str .= "   Note: '{$tableComment}'\n";$str .= "}\n";strlen($res) ? $res =  $res . "\n\n\n" : '';$res .= $str;}return $res;}}

导出的内容如下:

Table category {id bigint(20) [note: '分类ID'] parent_id bigint(20) [note: '父分类ID(0表示顶级分类)'] category_name varchar(255) [note: '分类名称'] category_alias varchar(255) [note: '分类别名'] category_code varchar(50) [note: '分类编码'] category_sort int(11) [note: '分类排序值'] level int(11) [note: '分类层级(1=一级分类)'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_cid int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] Note: '分类表'
}Table category_attribute {id bigint(20) [note: '记录ID'] category_id bigint(20) [note: '分类ID'] attribute_id bigint(20) [note: '属性ID'] limit_ids text [note: '限定属性值id'] Note: '分类属性关联表'
}Table attribute {id bigint(20) [note: '属性ID'] attribute_name varchar(255) [note: '属性名称(如颜色,尺寸)'] attribute_code varchar(50) [note: '属性编码(程序识别唯一值)'] sort mediumint(9) [note: '排序'] remark varchar(255) [note: '属性说明'] input_type varchar(50) [note: '输入类型(single=单选,double=多选)'] unit varchar(50) [note: '属性单位'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_id int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] Note: '属性定义表'
}Table attribute_option {id bigint(20) [note: '选项ID'] attribute_id bigint(20) [note: '所属属性ID'] option_value varchar(255) [note: '属性选项值'] option_code varchar(50) [note: '属性选项编码'] status tinyint(4) [note: '状态(1=启用,0=停用)'] sort_order int(11) [note: '排序值(用于前端展示顺序)'] remark varchar(255) [note: '备注'] Note: '属性选项表(全局)'
}Table product {id bigint(20) [note: '商品ID(主键,自增)'] category_id bigint(20) [note: '分类ID(外键)'] category_top_ids varchar(255) [note: '上级分类id'] category_top_name varchar(255) [note: '上级分类名称'] product_code varchar(50) [note: '商品编码(内部唯一)'] product_name varchar(255) [note: ''] product_image varchar(255) [note: '商品图片'] product_type int(11) [note: '物料类型:100-原料 200-辅料 201-纸箱 202-套袋'] short_name varchar(255) [note: '商品简称'] scientific_name varchar(255) [note: '商品学名'] label_alias varchar(255) [note: '标签别名'] description text [note: '商品描述'] unit_name varchar(50) [note: '基础单位名称'] inspection_standard text [note: '质检标准'] shelf_life int(11) [note: '保质期,单位:天'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_id int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] safe_stock int(11) [note: '安全库存值'] Note: '商品主数据表'
}Table product_attribute {id bigint(20) [note: '记录ID'] product_id bigint(20) [note: '商品ID'] attribute_id bigint(20) [note: '属性ID'] is_must tinyint(4) [note: '是否必填:0-否 1-是'] Note: '商品属性值表'
}Table product_attribute_option {id bigint(20) [note: '记录ID'] product_id bigint(20) [note: '商品ID'] attribute_id bigint(20) [note: '属性ID'] option_id bigint(20) [note: '属性值ID'] Note: '商品属性可选值关联表'
}Table process {id bigint(20) [note: '工艺ID'] process_code varchar(50) [note: '工艺编码'] process_name varchar(255) [note: '工艺名称'] process_type varchar(255) [note: '工艺类型'] process_duration int(11) [note: '工艺工期'] duration varchar(255) [note: '时间单位'] description text [note: '工艺描述'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_id int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] Note: '组合商品工艺表'
}Table process_resource {process_id bigint(20) [note: '工艺ID'] product_id bigint(20) [note: '物料ID'] Note: '工艺物料关联表'
}Table combo {id bigint(20) [note: '组合ID'] category_id bigint(20) [note: '分类ID(外键)'] category_top_ids varchar(255) [note: '上级分类id'] category_top_name varchar(255) [note: '上级分类名称'] combo_name varchar(255) [note: '组合名称'] combo_code varchar(255) [note: '组合编码'] combo_image text [note: '组合图片'] combo_price decimal(10,2) [note: '组合价格'] combo_label varchar(255) [note: '组合成品标签'] subtotal_name varchar(255) [note: '小计名称'] unit_name varchar(50) [note: '基础单位名称'] unit_spec decimal(10,2) [note: '基础单位规格'] unit_pack_name varchar(50) [note: '包装单位名称'] unit_pack_spec decimal(10,2) [note: '包装单位规格'] description text [note: '组合描述'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_id int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] Note: '组合产成品主表'
}Table combo_item {id bigint(20) [note: '组合项ID'] combo_id bigint(20) [note: '组合ID'] product_id bigint(20) [note: '所属组合的商品ID'] category_id bigint(20) [note: '所属组合的分类ID'] category_name varchar(255) [note: '分类名称'] item_name varchar(255) [note: '组合名称'] item_type varchar(50) [note: '组合项类型(LABEL/PRODUCT)'] quantity int(11) [note: '数量'] label_name varchar(50) [note: '标签名称'] remark text [note: '备注'] Note: '组合项表'
}Table combo_item_attribute {id bigint(20) [note: '记录ID'] item_id bigint(20) [note: '组合项ID'] attribute_id bigint(20) [note: '属性ID'] option_id bigint(20) [note: '属性值ID'] Note: '组合项属性值表'
}Table customer_subtotal {id bigint(20) [note: '小计ID'] name varchar(128) [note: '小计名称'] remark varchar(255) [note: '备注'] plan_name varchar(128) [note: '小计名称-采购'] production_name varchar(128) [note: '小计名称-生产'] sort_num int(11) [note: '排序值'] Note: '客户商品小计关联表'
}Table customer_product {id bigint(20) [note: '记录ID'] client_id bigint(20) [note: '客户ID'] customer_product_name varchar(255) [note: '客户成品名称'] customer_product_code varchar(255) [note: '客户成品编码'] customer_product_alias varchar(255) [note: '客户成品代号'] customer_product_process text [note: '加工工艺描述'] customer_product_label text [note: '关联组合成品名称(combo名称)'] customer_product_tag text [note: '关联组合成品代码(combo编码)'] customer_product_image text [note: '客户成品图片'] subtotal_id bigint(20) [note: '小计关联'] subtotal_name varchar(255) [note: '小计分类名称'] unit_name varchar(50) [note: '单位名称'] unit_spec int(11) [note: '单位规格'] custom_price decimal(10,2) [note: '客户成品定价'] piece_count decimal(10,2) [note: '计件价格'] gross_weight int(11) [note: '毛重'] pure_weight int(11) [note: '净重'] currency varchar(10) [note: '币种'] custom_spec1 varchar(50) [note: '规格1'] custom_spec2 varchar(50) [note: '规格2'] custom_length varchar(50) [note: '客户商品长度'] status tinyint(4) [note: '状态(1=启用,0=停用)'] user_created varchar(255) [note: '创建人'] user_id int(11) [note: '创建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] remark varchar(255) [note: '备注'] Note: '客户商品表'
}Table customer_combo {id bigint(20) [note: '记录ID'] customer_product_id bigint(20) [note: '客户商品ID'] customer_combo_name varchar(255) [note: '组合名称'] customer_combo_code varchar(255) [note: '组合代码'] quantity int(11) [note: '组合数量'] Note: '客户组合商品表'
}Table customer_combo_item {id bigint(20) [note: '组合项ID'] customer_combo_id bigint(20) [note: '组合ID'] product_id bigint(20) [note: '所属组合的商品ID'] category_id bigint(20) [note: '所属组合的分类ID'] category_name varchar(255) [note: '分类名称'] item_name varchar(255) [note: '组合名称'] item_type varchar(50) [note: '组合项类型(LABEL/PRODUCT)'] quantity int(11) [note: '数量'] label_name varchar(50) [note: '标签名称'] replace_product_id varchar(255) [note: '可替换商品ID'] replace_label varchar(255) [note: '可替换标签'] remark text [note: '备注'] Note: '客户组合商品明细表'
}Table customer_combo_attribute {id bigint(20) [note: '记录ID'] item_id bigint(20) [note: '组合项ID'] attribute_id bigint(20) [note: '属性ID'] option_id bigint(20) [note: '属性值ID'] Note: '客户组合商品属性表'
}Table customer_combo_material {id bigint(20) [note: '辅料ID'] customer_product_id bigint(20) [note: '客户商品ID'] customer_combo_id bigint(20) [note: '客户商品组合ID'] product_id bigint(20) [note: '产品ID'] process_type varchar(255) [note: '标记所属工艺'] product_type varchar(255) [note: '标记物料类型'] quantity int(11) [note: '数量'] remark text [note: '备注'] is_new tinyint(4) [note: '是否新数据:1-新'] Note: '客户组合辅料表'
}Table customer_combo_material_attribute {id bigint(20) [note: '记录ID'] customer_material_id bigint(20) [note: '辅料ID,关联customer_combo_material表id'] attribute_id bigint(20) [note: '属性ID'] option_id bigint(20) [note: '属性值ID'] Note: '客户组合辅料属性值表'
}Table customer_product_process {id bigint(20) [note: '记录ID'] customer_product_id bigint(20) [note: '客户商品ID'] process_id bigint(20) [note: '工艺id'] description text [note: '描述'] source varchar(255) [note: '来源'] created_at datetime [note: '创建时间'] updated_at datetime [note: '更新时间'] Note: '客户组合商品工艺表'
}Table customer_product_process_resource {id bigint(20) [note: 'ID'] customer_process_id bigint(20) [note: '客户商品工艺ID,关联customer_product_process表id'] product_id bigint(20) [note: '工艺产品id'] Note: '客户组合商品工艺物料关联表'
}
总结

表与表之间的关系,需要在导出的DBML中用ref定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93455.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转tokenizer

&#x1f31f; 案例 1&#xff1a;加载现成的 BERT 分词器from tokenizers import Tokenizer# 加载一个预训练的 BERT tokenizer&#xff08;文件需要提前下载&#xff0c;比如bert-base-uncased&#xff09; tokenizer Tokenizer.from_file("bert-base-uncased-tokenize…

Day53--图论--106. 岛屿的周长(卡码网),110. 字符串接龙(卡码网),105. 有向图的完全联通(卡码网)

Day53–图论–106. 岛屿的周长&#xff08;卡码网&#xff09;&#xff0c;110. 字符串接龙&#xff08;卡码网&#xff09;&#xff0c;105. 有向图的完全联通&#xff08;卡码网&#xff09; 106. 岛屿的周长&#xff08;卡码网&#xff09; 方法&#xff1a;深搜 思路&am…

Elasticsearch 数据建模与映射(Mapping)详解

在 Elasticsearch 中&#xff0c;数据建模与映射&#xff08;Mapping&#xff09; 是决定搜索性能、存储效率和功能支持的核心环节。合理的映射设计能让搜索更精准、聚合更高效、存储更节省。 本文将全面详解 Elasticsearch 的 数据建模原则、字段类型、动态映射、自定义分析器…

5G工业一体机汽车零部件工厂的无纸化管理

在全球数字化转型的浪潮中&#xff0c;制造业对信息化、智能化的需求日益强烈。尤其是在汽车零部件领域&#xff0c;生产线的复杂性、质量追溯的苛刻性以及对效率的高要求&#xff0c;迫切需要一种高效、可靠、可扩展的管理模式。以“5G工业一体机”为核心的无纸化管理&#xf…

项目管理工具

1、概述IT 项目生命周期通常可分为启动、规划、执行、监控与控制、收尾五个核心阶段&#xff0c;每个阶段的目标和任务不同&#xff0c;所依赖的工具也各有侧重。以下按阶段梳理常用工具&#xff0c;涵盖项目管理、协作、技术开发等多个维度。2、启动阶段&#xff1a;明确项目目…

Linux 进程、线程与 exec/系统调用详解

1. wait 与 waitpid —— 子进程资源回收1.1 waitpid_t wait(int *wstatus);功能&#xff1a;阻塞等待&#xff0c;回收任意子进程的资源空间。参数&#xff1a;wstatus&#xff1a;保存子进程退出状态的变量地址NULL&#xff1a;不保存退出状态返回值&#xff1a;成功&#xf…

Laravel 使用ssh链接远程数据库

1.创建ssh ssh -i ./id_rsa -N -L 13306:127.0.0.1:3306 -p 22 root***对上述代码的解释&#xff1a; 命令是一个SSH隧道命令&#xff0c;用于将本地端口3306转发到远程服务器上的3306端口。以下是命令的详细解释&#xff1a;# 调用SSH客户端。 ssh # 指定用于身份验证的私钥文…

Python延申内容(一)

1.技术面试题 &#xff08;1&#xff09;TCP与UDP的区别是什么&#xff1f; 答&#xff1a; TCP&#xff08;传输控制协议&#xff09;&#xff1a;面向连接、可靠传输&#xff08;数据完整有序&#xff09;、流量控制、拥塞控制&#xff0c;适用于文件传输、网页浏览等场景。 …

Java 9 新特性及具体应用

目录 1. 模块系统&#xff08;Jigsaw&#xff09; 2. JShell&#xff08;REPL工具&#xff09; 3. 集合工厂方法 4. 接口私有方法 5. Stream API 增强 6. HTTP/2 客户端&#xff08;Incubator&#xff09; 7. 多版本JAR包 总结 1. 模块系统&#xff08;Jigsaw&#xff0…

第二十五天:构造函数/析构函数/拷贝构造

构造函数/析构函数/拷贝构造 1. 构造函数&#xff08;Constructor&#xff09; 定义与作用&#xff1a;构造函数是一种特殊的成员函数&#xff0c;其名称与类名相同&#xff0c;没有返回类型&#xff08;包括 void 也没有&#xff09;。它的主要作用是在创建对象时初始化对象的…

【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数),视频保存在指定位置

文章目录1 读取本地视频1.1 绝对路径 6种方式1.2 相对路径 4种方式1.3 读取本地视频2 视频基本信息3 调用摄像头 并将视频保存在指定位置P14 3-6 1 读取本地视频 现在要读取本地视频“video.mp4”&#xff0c; 视频文件“video.mp4”和playVideo.py脚本文件&#xff0c;都在…

【DL学习笔记】常用数据集总结

一、如何找数据集 paperswithcode&#xff0c;但好像没了 AutoDL Roboflow Kaggle Hungging Face 百度飞浆PP AIStudio 二、目标检测数据集格式 常用数据集坐标格式 MSCOCO &#xff1a; 坐标格式&#xff08;x&#xff0c;y&#xff0c;w&#xff0c;h&#xff…

19.3 Transformers量化模型极速加载指南:4倍推理加速+75%显存节省实战

Transformers量化模型极速加载指南:4倍推理加速+75%显存节省实战 实战项目:模型量化 Transformers 兼容性配置 量化模型加载核心配置逻辑 #mermaid-svg-rDjfMigtxckLYWp3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

Android 终端接入 GB28181 国标视频平台的完整解决方案解析

1. 引言&#xff1a;让 Android 终端无缝融入国标视频网络在公安、交通、应急、工业、教育等领域&#xff0c;GB/T 28181 国标协议早已成为视频监控与指挥调度的事实标准。传统国标视频网络通常由固定部署的 IPC 摄像机、NVR、视频管理平台构成&#xff0c;设备形态单一。随着一…

Docker目录的迁移

# 迁移 docker 目录 &#xff08;无论容器与镜像占用空间大小&#xff0c;哪怕只占用1G&#xff0c;也需用此方式&#xff0c;否则可能迁移不成功&#xff09;service docker stopcd /var/lib/docker# 一个一个复制除 overlay2 外的其他所有文件夹cp -R builder /home/docker/l…

IOS APP 前端存储

UserDefaults优点简单易用提供简单的键值对存储接口无需复杂配置&#xff0c;开箱即用适合存储少量简单数据轻量级专门为存储小量数据设计内存占用小性能开销低自动持久化数据自动保存到磁盘应用重启后数据仍然可用通过synchronize()方法可以强制立即写入&#xff08;iOS 12已自…

在前端js中使用jsPDF或react-to-pdf生成pdf文件时,不使用默认下载,而是存储到服务器

开源地址&#xff1a; https://github.com/ivmarcos/react-to-pdf 主要就是这个方法&#xff0c;有三种可选&#xff1a; 默认是save&#xff0c;也就是会自动触发下载的方法&#xff0c;open方法是默认会打开一个pdf预览的tab页面&#xff0c;build方法就是在调用的函数gener…

会议征稿!IOP出版|第二届人工智能、光电子学与光学技术国际研讨会(AIOT2025)

往届已EI检索&#xff0c;欢迎投稿&#xff01; AIOT2024会后两个月实现见刊&#xff01; AIOT2025已通过IOP-JPCS出版申请&#xff0c;独立JPCS出版 AIOT2025已上线西安文理学院官网&#xff1a; 征文通知&#xff5c;第二届人工智能、光电子学与光学技术国际…

CPP多线程2:多线程竞争与死锁问题

在多线程编程中&#xff0c;多个线程协同工作能显著提升程序效率&#xff0c;但当它们需要共享和操作同一资源时&#xff0c;潜在的问题也随之而来&#xff1b;线程间的执行顺序不确定性可能导致资源竞争&#xff0c;可能引发死锁&#xff0c;让程序陷入停滞。 多线程竞争问题示…

全国产飞腾d2000+复旦微690t信号处理模块

UD VPX-404是基于高速模拟/数字采集回放、FPGA信号实时处理、CPU主控、高速SSD实时存储架构开发的一款高度集成的信号处理组合模块&#xff0c;采用6U VPX架构&#xff0c;模块装上外壳即为独立整机&#xff0c;方便用户二次开发。 UD VPX-404模块的国产率可达到100%&#xff0…