首页 文章

产品变体 - 如何建模?希望不是EAV?

提问于
浏览
3

给定产品,产品可能有变化(例如尺寸:小,中,大或颜色:白色,黑色) . 如果产品具有多个变体,则总变化是各个变化的组合(例如,小白,小黑,中白,中黑,大白,大黑) . 每种变体组合将分配其自己的SKU,价格,库存水平等 . 每种变化也将与一般产品细节(例如产品名称,产品描述等)相关联 .

当您不知道变化可能是什么时,对产品变化进行建模的最佳方法是什么?我认为这可能是EAV,但过去我遇到过这个问题 . 想知道是否有更好的方法 .

UPDATE 1:

这不是How to design a product table for many kinds of product where each product has many parameters的重复 .

看完接受的答案后,我还是迷路了 . 似乎我对EAV的不情愿是有根据的 . 所以也许我远离那个解决方案 . 此外,如果我使用EAV,那么总是存在哪些属性,例如价格,SKU和库存水平?我知道那些必须永远存在 - 因此,他们不需要EAV的灵活性 .

@Bill Karwin说他的第一选择是使用类表继承 . 我不确定这对我是否有用 . 我需要存储数万(甚至数十万)条记录 . 我不知道前面会有什么变体(我的代码会知道,因为它可以动态解析XML提要和电子表格 - 但不久之后) . 因此,试图预测此时我需要的其他表格是不可能的 .

所以 - 我还是迷路了 . 如何为产品变体建模?

1 回答

  • 0

    我不是EAV的守护者,但在某些情况下它是必要的,而且听起来你的是其中一个案例 . 如果您不知道在设计时需要哪些属性,那么您的选择相当有限 .

    现在使用无模式设计可能是NoSQL越来越流行的选择,但仍然会涉及允许具有n个动态属性的对象/文档的奇怪之处 .

    如果它满足您的需求,还可以考虑简单地使用描述每个产品的动态部分的BLOB或XML列 . 这将比EAV简化您的解决方案,但也限制了您的数据检索选项(取决于您的要求) .

    此外,如果我使用EAV,那么总是存在哪些属性,例如价格,SKU和库存水平?

    我绝对建议您尽可能明确地建模,并将您的解决方案(XML,EAV或其他)隔离到需要它的区域 . 没有理由比你必须限制自己 .

相关问题