Data table prototype
项目和设备,
用一张表对应起来。
一行就是一个项目与一个设备的绑定关系。项目代表产品/型号,设备沿用 SparkLink 的节点定义;不同项目通过独立 CAN 总线隔离。
—产品/型号
—当前查询结果
—状态为 deployed
项目内唯一允许跨项目复用
项目设备绑定表
数据库表:
project_device_binding · 一行对应一个项目设备关系请输入 API Key 后连接后端…
| 关系 ID | 项目 | 产品型号 | CAN 总线 | 设备类型 | 节点号 | 设备序列号 | 协议版本 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| PDB-0001 | PROJECT-ENGINE-A | 发动机一型 | CAN0 | 发动机控制器engine_controller | 0x02 | ECU-A-001 | SparkLink/main | 已部署 | |
| PDB-0002 | PROJECT-ENGINE-A | 发动机一型 | CAN0 | 阀组控制器valve_group_controller | 0x03 | VALVE-A-001 | SparkLink/main | 已部署 | |
| PDB-0003 | PROJECT-ENGINE-A | 发动机一型 | CAN0 | 氧泵电机控制器oxidizer_pump_controller | 0x04 | OXP-A-001 | SparkLink/main | 已部署 | |
| PDB-0004 | PROJECT-ENGINE-B | 发动机二型 | CAN1 | 发动机控制器engine_controller | 0x02 | ECU-B-001 | SparkLink/main | 已部署 | |
| PDB-0005 | PROJECT-ENGINE-B | 发动机二型 | CAN1 | 阀组控制器valve_group_controller | 0x03 | VALVE-B-001 | SparkLink/main | 已部署 | |
| PDB-0006 | PROJECT-ENGINE-B | 发动机二型 | CAN1 | 热电偶采集板thermocouple_collector | 0x0D | TC-B-001 | SparkLink/main | 待部署 |
没有符合条件的绑定记录。
显示 0 条记录项目内唯一键:
(project_code, device_type)Table design
这张表怎么对应数据库
项目和设备信息放在一张关系表里,项目代码和设备类型共同确定一条绑定关系。
project_device_binding
建议的字段和页面列一一对应。
字段类型用途
idbigint PK关系记录唯一 IDproject_codevarchar产品/型号项目编码product_modelvarchar项目展示名称can_busvarchar物理 CAN 总线标识device_typevarchar设备类型编码node_idtinyintSparkLink 节点号device_serialvarchar实物设备序列号protocol_profilevarchar协议定义版本/分支statusenumdeployed / planned / retired项目和设备如何区分
- 项目 A 和项目 B 可以都使用设备类型
engine_controller。 - 因为两者在不同 CAN 总线,节点号
0x02可以复用。 - 同一个项目内,设备类型最多一条,所以节点号不会冲突。
- 项目标识只在部署台账中维护,运行时不放进 CAN 帧,也不做项目校验。
Database draft
建表草案
后续如果确认这个模型,再把 SQL 和实际后端字段定稿。
project_device_binding.sql
CREATE TABLE project_device_binding ( id BIGINT PRIMARY KEY, project_code VARCHAR(64) NOT NULL, product_model VARCHAR(128) NOT NULL, can_bus VARCHAR(32) NOT NULL, device_type VARCHAR(64) NOT NULL, node_id SMALLINT UNSIGNED NOT NULL, device_serial VARCHAR(128) NOT NULL, protocol_profile VARCHAR(128) NOT NULL, status VARCHAR(16) NOT NULL DEFAULT 'planned', created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, UNIQUE (project_code, device_type), UNIQUE (project_code, node_id) );
当前边界:这张表用于部署台账和查询。由于运行时不校验项目,实际接线必须保证一个 CAN 总线只属于一个项目。