2013-01-23 22 views
0

我想存储mysql表中的项目之间的比较。例如,我有以下三个项目:在MySQL中存储/更新基于比较的数据

  • ID:1,名称:项目A,comparisionScore:1
  • ID:2,名称:项目B,comparisionScore:2
  • ID:3,名称:项目C,比较评分:3

这意味着,比较时,比较评分越大的项目越好。但是,当我想插入一个新的项目到表中时,这个方法失败了,这比项目A好,而且比项目B差,我们说项目D.所以我可以做以下事情,因为我不必存储整数:

  • ID:1,名称:项目A,comparisionScore:1
  • ID:2,名称:项目B,comparisionScore:2
  • ID:3,名称:项目C,comparisionScore:3
  • id:4,Name:Item D,comparisionScore:1.5

The wors因为我们无法知道要添加的新项目的数量,所以没有足够的数量用于此目的。例如,通过将范围由2,则结果可以是以下:

  • ID:1,名称:项目A,comparisionScore:1
  • ID:2,名称:项目B,comparisionScore:2
  • ID:3,名称:项目C,comparisionScore:3
  • ID:4,名称:项目d,comparisionScore:1.5
  • ID:5,名称:项目E,comparisionScore:1.75
  • ID: 6,名称:项目F,比较分数:1.875
  • ID:7,名称:项目G,comparisionScore:1.9375
  • ID:8,名称:项目H,comparisionScore:1.96875 ...

如果该项目Z小于项目比更好和更坏项目H,没有Z值可能在1.9999 ...和2之间的两倍值。

所以问题是我可以使用什么方法来存储MySQL数据中项目之间的比较数据?

我应该能够回答,当用户通过查看该表询问哪一个更好的项目A或项目D.

+0

如果您存储排名而不是分数?比如“b + h-”表明它比b好,比h差?然后在进行查询时建立分数? – ethrbunny

+0

我想要做的事情如下: 用户来问,哪一个更好?项目A或项目G? 我可以为此做点什么吗? – sedran

+0

_“如果项目Z比项目A更好,而且比项目H更差,则Z值不会超过1.9999 ...和2之间的两倍。” - 我不明白,不应该Z介于1和1.96875之间? –

回答

1

而不是开始比较分数为1,2,3。给出更大的整数值,如10,000,20,000,30,000。那么你有一些空间可以在中间插入值。

要回答最后一个问题,当您尝试插入12,384和12,385之间的比较分数时,必须先将所有比较分数重新编号,以便您可以放置​​最新的比较分数。

这些数字只对排序有意义,所以您可以随时更改它们。

+0

谢谢,这是我将实施的方式。 – sedran