0

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

  • id: 1, Name: Item A, comparisionScore: 1
  • id: 2, Name: Item B, comparisionScore: 2
  • id: 3, Name: Item C, comparisionScore: 3

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

  • id: 1, Name: Item A, comparisionScore: 1
  • id: 2, Name: Item B, comparisionScore: 2
  • id: 3, Name: Item C, comparisionScore: 3
  • id: 4, Name: Item D, comparisionScore: 1.5

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

  • id: 1, Name: Item A, comparisionScore: 1
  • id: 2, Name: Item B, comparisionScore: 2
  • id: 3, Name: Item C, comparisionScore: 3
  • id: 4, Name: Item D, comparisionScore: 1.5
  • id: 5, Name: Item E, comparisionScore: 1.75
  • id: 6, Name: Item F, comparisionScore: 1.875
  • id: 7, Name: Item G, comparisionScore: 1.9375
  • id: 8, Name: Item H, comparisionScore: 1.96875 ...

如果项目 Z 比项目 A 好而比项目 H 差,则 Z 不能在 1.9999... 和 2 之间取双倍值。

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

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

4

1 回答 1

1

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

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

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

于 2013-01-24T16:01:26.587 回答