在MySQL中存储/更新基于比较的数据

时间:2013-01-23 22:41:40

标签: mysql database-design comparison

我想存储mysql表中项目之间的比较。例如,我有以下三个项目:

  • id:1,姓名:项目A,comparisionScore:1
  • id:2,姓名:项目B,comparisionScore:2
  • id:3,姓名:项目C,comparisionScore:3

这意味着在比较时,compareScore更大的项目更好。但是,当我想向表中插入一个新项时,此方法失败,这比项A更好,比项B更差,让我们说项D.所以我可以执行以下操作,因为我不必只存储整数:

  • id:1,姓名:项目A,comparisionScore:1
  • id:2,姓名:项目B,comparisionScore:2
  • id:3,姓名:项目C,comparisionScore:3
  • id:4,姓名:D项,比较分数:1.5

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

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

如果项目Z优于项目A并且比项目H差,则没有Z值在1.9999 ...和2之间的双重值。

那么我可以用什么方法在MySQL数据中的Items之间存储比较数据?

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

1 个答案:

答案 0 :(得分:1)

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

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

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