指定并允许重新排序存储为数据库中的行的成分

时间:2013-01-06 21:32:21

标签: database sorting database-design database-schema

我有一个Ingredient表和一个Food表,并希望使用IngredientToFood表将它们链接起来。我还希望能够指定Order,因为这对营养信息非常重要。我的IngredientToFood表目前包含IngredientIdFoodIdOrder列,两个ID上有复合PK,每个ID都有2个FK。我想知道的是实施订购原料的最佳实践方法。我已经看到了这里和其他地方提出的以下解决方案,我想知道哪个是我用例的最佳解决方案。

  1. 使用Order列指定数字顺序,在(100,200,300等)之间留下大量分隔。
  2. 使用两列,在这种情况下为beforeIngredientafterIngredient
  3. 在插入或删除之前使用触发器重新编号现有Order值(如果更新,您会怎么做?)
  4. 我不是在寻找有史以来最优雅的解决方案,而是仅仅考虑订购原料的应用。我假设我可能会更频繁地插入/删除成分,而不是重新排序现有成分。

1 个答案:

答案 0 :(得分:1)

  

使用“订单”列指定数字顺序,在(100,200,300等)之间留下大量分隔。

这是正确的想法,但你提到了营养信息的重要性。

您可能还想创建一个营养表,其中列出了您想要跟踪的不同营养素。您可以为每种营养素分配一个数字,例如100,200,300等,其中较低的数字是更重要的营养素。

此营养素编号将是订单表中的订单编号。

营养表超过任意订单号的优势在于您可以查询食谱中的营养素。