0

アイテム間の比較をmysqlテーブルに保存したいと思います。たとえば、次の3つのアイテムがあります。

  • id:1、名前:アイテムA、comparisionScore:1
  • id:2、名前:アイテムB、比較スコア:2
  • id:3、名前:アイテムC、比較スコア:3

つまり、比較するときは、comparationScoreが大きい方が良いということです。ただし、新しいアイテムをテーブルに挿入する場合、このメソッドは失敗します。これは、アイテムAよりも良く、アイテムBよりも悪い、たとえばアイテムDです。したがって、整数のみを格納する必要がないため、次のことができます。

  • id:1、名前:アイテムA、comparisionScore:1
  • id:2、名前:アイテムB、比較スコア:2
  • id:3、名前:アイテムC、比較スコア:3
  • id:4、名前:アイテムD、比較スコア:1.5

最悪なのは、追加する新しいアイテムの数がわからないため、この目的のための十分な数がないことです。たとえば、範囲を2で割ると、結果は次のようになります。

  • id:1、名前:アイテムA、comparisionScore:1
  • id:2、名前:アイテムB、比較スコア:2
  • id:3、名前:アイテムC、比較スコア: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データのアイテム間の比較データを保存するために他にどのような方法を使用できますか?

その表を見て、ユーザーがアイテム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 に答える