我为不同的 OEM 设计了一些车辆识别码 (VIN)解码器。关于 VIN 号码的事情......尽管有些标准化,但每个 OEM 都可以重载字符位置代码并以不同方式对待它们,添加“额外”元数据(即星号指向 VIN 号码之外的更多数据)等等。尽管如此所有这一切,我已经能够构建几个不同的 OEM VIN 解码器,现在我正在尝试构建一个 GM VIN 解码器,这让我很头疼。
问题的要点是,GM 对车辆属性部分(位置 4、5、6、7)的处理方式不同,具体取决于它是卡车还是汽车。这是细分:
通用乘用车VIN故障
通用卡车 VIN 故障
通常我所做的是设计自己的粗略ETL
流程,将数据导入 RDMBS - 每个表都与主要的 VIN 故障大致相关。例如,将有一个 WMI 表、EngineType 表、ModelYear 表、AssemblyPlant 表等。然后我构建一个视图,该视图连接一些上下文数据,这些数据可能直接从 VIN 号本身的字符代码中收集(例如某些车辆类型仅具有某些车辆发动机)。
要查找 VIN,只需使用 VIN 字符串的每个主要字符代码位置细分查询 VIEW。例如,1FAFP53UX4A162757的示例 VIN在不同 OEM 的 VIN 结构中分解如下:
| 管理信息系统 | 克制 | LineSeriesBody | 引擎 | 校验码 | 年份 | 工厂 | 序列 | | 123 | 4 | 第567章 8 | 9 | 10 | 11 | 12-17 | -------------------------------------------------- ------------------------------------------- | 1FA | F | P53 | 你 | X | 4 | 一个 | ... |
通用汽车为此投入了一把扳手……取决于是汽车还是卡车,字符代码位置意味着不同的东西。
我的意思的示例 - 下面的每个 ASCII 表都与 SQL 表相关。etc..
意味着还有很多其他的列数据
乘用车
这是位置 4,5 的示例(对应于车辆线/系列)。这些确实结合在一起,VIN 源数据并没有真正区分位置 4 和 5,尽管上面显示了细分。
| 代码 (45)| 线 | 系列 | ETC.. -------------------------------------- | 遗传算法 | 别克 | 长曲棍球 | ETC..
..和位置 6 对应于体型
| 代码 (6) | 风格 | ETC.. -------------------------------------- | 1 | 轿跑车,2 门 | ETC..
卡车
..但对于卡车,结构完全不同。考虑位置 4 独立作为总车辆重量限制 GVWR。
| 代码 (4) | GVWR | ETC.. ------------------------------------------- | 大号 | 6000 磅 | ETC..
..和位置 5,6(底盘/系列)现在意味着类似于乘用车的位置 4,5:
| 代码 (56) | 线 | 系列 | ETC.. -------------------------------------- | 房车 | 别克 | 飞地 | ETC..
我正在寻找一种巧妙的方法来在关系设计中解决这个问题。我想在 VIN 被解码时返回一个通用结构——如果可能的话(即不为汽车和卡车返回不同的结构)