产品 BOM(物料清单):成本更新...我必须使用树结构吗?
我正在处理产品 BOM(物料清单),但我陷入了困境。这是我的类图:
- 一个组件有 ComponentItems。 ComponentItem 有一个 Component 和一个数量。示例:组件 ABC 有 3 个组件 C1 和 2 个组件 C2。
- 产品具有 ComponentItems 和 ProductItems(与 ComponentItems 类似,但针对产品)。
每个组件都有一个单位成本,因此组件项有一个总成本。由 ComponentItems 组成的 Component 也有总成本(ComponentItems 成本之和)。
这种结构允许我创建任何产品/组件层次结构。 我正在验证产品和组件的插入/更新中的循环。
我想在数据库中更新每个成本,我不想每次必须使用产品/组件时都使用对象计算成本。我的意思是,如果我更新组件 ABC 的单位成本,他的父组件成本应该更新,依此类推 -->更新在层次结构中传播。
实现这一点的最佳方法是什么?我正在考虑树表示。当组件更新时,我检索所有相关组件/产品并构建一棵树。然后我必须更新组件的第一级父级,并对这个父级的父级执行相同的操作。
I'm working on a Product BOM (bill of material) and I'm stucked. This is my class diagram:
- A Component has ComponentItems. A ComponentItem has a Component and a quantity. Example: Component ABC has 3 Component C1 and 2 Component C2.
- A Product has ComponentItems and ProductItems (similar to ComponentItems but for Products).
Each Component has a unit cost so a ComponentItem has a total cost. And a Component composed by ComponentItems has a total cost too (sum of ComponentItems cost).
This structure lets me create any Product/Component hierarchy.
I'm validating loops in insert/update of products and components.
I want to have each cost updated in database, I don't want to calculate cost using objects every time I have to use a Product/Component. I mean, if I update the unit cost of Component ABC, his parent component cost should be updated and so on --> the update is propagated in the hierarchy.
What's the best way to implement this? I was thinking of a tree representation. When a component is updated, I retrieve all related components/products and build a tree. Then I have to update first level parents of the component and do the same with parents of this parents.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为简单的树结构是最好的。
例如类似的东西
I think a simple tree structure would be best.
E.g. Something like
装饰器模式可能是解决此问题的好方法。
这里有《Head First Design Patterns》中的一个很好的章节,其中讨论了在类似的背景。
The Decorator Pattern might be a good way to approach this.
There's a good chapter from Head First Design Patterns available here that talks about using Decorator in a similar context.