我有一个相当普遍(我相信)的问题,但由于它的名称(包),很难搜索(即我得到了一切但物理包的意思......)。
基本上我有一个可以包装的产品,比如在有2个产品的盒子里。
然后将这些单独的盒子放入纸箱中,其中10个去。因此,一共有20种产品。
但是,此设置不一定必须是2/10,它可以是1/20或甚至是另一个嵌套,例如1/5/4(总共20个产品)。
如何在某些RDBMS(例如MySql)中创建表/引用?
答案 0 :(得分:0)
首先,我认为这不是数据库设计问题,因为大部分工作都应该用来澄清要求。
您提供的数据是什么?这些是要存储在数据库中的。所有可以从中计算出来的数据都不需要存储,因为它们是多余的。根据您的描述,我得出结论,给出了一个盒子的产品数量,但是盒子里面的产品包装(你的1/5/4例子)并没有确定。这意味着只要产品总数不超过20,就允许任何产品包装。为了表达这一点,像
这样的表格设计Product(id, name, ..., max_in_box, ...)
就足够了。
然而,这可能在身体上不满意。不包含任何个包含20个产品的数量的包可能实际上都适合这个盒子。为了表达这一点,您必须存储产品,包装和盒子的长度/宽度/高度,并在算法上确定特定组合是否适合。
如果你有不同类型的盒子,可能需要另一个扩展。现在,max_in_box
属性不能与产品一起放置,而是放在将产品链接到盒子类型的单独实体/表格中。