【MySQL】替换件需求
先上个表结构吧:
CREATE TABLE `tm_part_replace` ( `ITEM_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `OWNER_CODE` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-1' COMMENT '经销商代码', `PART_NO` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '配件代码(原始)', `OPTION_PART_NO` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '替换件代码', `SHIFT_DIRECT` int(8) DEFAULT NULL COMMENT '替换方向 10041001单向 10041002双向', `IS_DELETED` tinyint(4) DEFAULT NULL COMMENT '逻辑删除 0否 1是', `CREATE_AT` datetime DEFAULT NULL COMMENT '创建时间', `CREATE_BY` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', `UPDATE_AT` datetime DEFAULT NULL COMMENT '更新时间', `UPDATE_BY` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人', `RECORD_VERSION` int(11) DEFAULT NULL COMMENT '乐观锁记录', PRIMARY KEY (`ITEM_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='配件替换件表(确认)';
配件存在着一些替换关系
就是配件B可以代替配件A去使用,在需要使用配件A的情况没有配件A,可以使用配件B来代替
这是一种情况,还有一种情况是,配件A可以替换配件B,配件B也可以替换配件A使用
那这种替换是双向的,所以就是两种替换情况,单向的和双向的
零件主表存储了各种零件记录,只取零件代码作为关键字段存储
替换件和配件存储都是主表的零件代码字段来构成替换关系。
如果是单向,就只存储一条记录(A -> B)
如果是双向,就要存储两条记录,表示B也是A的替换件(A -> B + B -> A)
单向10041001
双向10041002
字典数据表示
导入的数据:
样本数据用例:
mysql> SELECT * FROM tm_part_replace; +---------+------------+-----------------+-----------------+--------------+------------+-----------+-----------+-----------+-----------+----------------+ | ITEM_ID | OWNER_CODE | PART_NO | OPTION_PART_NO | SHIFT_DIRECT | IS_DELETED | CREATE_AT | CREATE_BY | UPDATE_AT | UPDATE_BY | RECORD_VERSION | +---------+------------+-----------------+-----------------+--------------+------------+-----------+-----------+-----------+-----------+----------------+ | 1 | -1 | TEST-PART-NO-06 | TEST-PART-NO-04 | 10041001 | NULL | NULL | NULL | NULL | NULL | NULL | | 2 | -1 | TEST-PART-NO-06 | TEST-PART-NO-03 | 10041002 | NULL | NULL | NULL | NULL | NULL | NULL | | 3 | -1 | TEST-PART-NO-03 | TEST-PART-NO-06 | 10041002 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | -1 | TEST-PART-NO-05 | TEST-PART-NO-04 | 10041001 | NULL | NULL | NULL | NULL | NULL | NULL | | 5 | -1 | TEST-PART-NO-03 | TEST-PART-NO-04 | 10041002 | NULL | NULL | NULL | NULL | NULL | NULL | | 6 | -1 | TEST-PART-NO-04 | TEST-PART-NO-03 | 10041002 | NULL | NULL | NULL | NULL | NULL | NULL | +---------+------------+-----------------+-----------------+--------------+------------+-----------+-----------+-----------+-----------+----------------+ 6 rows in set (0.03 sec)