在MySQL中存储/更新基于比较的数据
我想在mysql表中存储项目之间的比较。例如,我有以下三项:在MySQL中存储/更新基于比较的数据,mysql,database-design,comparison,Mysql,Database Design,Comparison,我想在mysql表中存储项目之间的比较。例如,我有以下三项: id:1,名称:项目A,比较核心:1 id:2,名称:B项,比较核心:2 id:3,名称:C项,比较核心:3 这意味着在比较时,比较核心越大的项目越好。但是,当我想向表中插入一个新项时,该方法失败,该项比a项好,比B项差,比如D项。因此,我可以执行以下操作,因为我不必只存储整数: id:1,名称:项目A,比较核心:1 id:2,名称:B项,比较核心:2 id:3,名称:C项,比较核心:3 id:4,名称:D项,比较核心:1.5
- id:1,名称:项目A,比较核心:1
- id:2,名称:B项,比较核心:2
- id:3,名称:C项,比较核心:3
- id:1,名称:项目A,比较核心:1
- id:2,名称:B项,比较核心:2
- id:3,名称:C项,比较核心:3
- id:4,名称:D项,比较核心:1.5
- id:1,名称:项目A,比较核心: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
当用户询问a项或D项哪个更好时,我应该能够通过查看该表来回答。而不是从比较分数1、2、3开始;给出更大的整数值,如10000、20000、30000。然后你有一些空间可以在中间插入值。 要回答上一个问题,当您尝试在12384和12385之间插入比较分数时,您必须首先对所有比较分数重新编号,以便您可以放置最新的比较分数
这些数字仅对排序有意义,因此您可以随时更改它们。如果存储的是排名而不是分数,会怎么样?类似于“b+h-”的东西来表明它比b好,比h差?然后在进行查询时建立分数?我想做的事情如下:一个用户来询问哪一个更好,项目A还是项目G?我能做点什么吗?“如果Z项比A项好,比H项差,那么Z值不能在1.9999…和2之间。”-我不明白,Z值不应该在1和1.96875之间吗?最多可以达到65位,这将使您有足够的机会在现有行之间插入新行。如果您发现自己的新行没有“空间”,只需“移动”挡道的行(通过更新它们的
comparisonscore
)。您甚至可以使用按字典顺序排列的字符串而不是数字。除此之外,您总是可以模拟链表,但这会使某些类型的查询变得笨拙和低效。谢谢,这是我将实现的方法。