A2:Part是研发设计的一个重要承载,它是不断修改且需要随时查看历史版本数据及修改记录的,那么就把Part分成了两个数据实体,Part主对象(记录Part编码、Part名称)和Part版本对象(记录Part的规格信息、Part图纸版本等),那么BOMLink记录了Part父子项关系数据,针对子项数据对应到Part的主对象,也就是说,系统拿到BOMLink关系数据时,能够知道子项Part的编码、名称,但是规格信息和图纸版本并不知道选择哪一个。当企业在管理所有研发产品时,要求产品设计需要支持向下兼容,也就是Part最新版本可以满足历史上所有功能,那么无论父项Part的版本是哪一个,子项Part的最新版本都能满足需求,因为Part是向下兼容的。
但是有的企业可能做不到产品设计完全向下兼容,也就是Part版本A具有特性,在Part版本B就不具备了。那么每一层的父项Part和子项Part必须记录父项Part版本和子项Part版本的配套关系。那么从数据模型层面看BOMLink只要记录父项Part版本和子项Part版本的关系,从模型层面就可以解决此问题。
但是版本对版本的关系模式下,意味着针对每个Part的每一个版本,都必须单独界定其所依赖的子Part版本。当一个Part存在多个版本,且其下属的子Part同样拥有多个版本时,每一种版本组合都需要独立维护。这无疑极大地加剧了数据管理工作的复杂程度,同时显著提升了出错的概率,为后续的数据维护与更新工作带来沉重负担。所以不建议在数据模型层面建议版本对版本的关系。
建议数据模型+版本规则的方式进行支撑,可以结合业务需求,设置不同的版本规则和扩展模型来支撑,BOMLink的基础模型不变化。