我不是要问选择哪个地图图例分类。但假设我选择了一个,我将如何在SQL表中正确存储它?问的原因是,最后,我需要存储比预期更多的信息...希望有人可以验证。
考虑以下3个案例:
数字,单值
为了能够正确存储它,所以我能够实时进行逻辑分类(做着色),这意味着,我还需要存储运算符(小于[lt
],更大比[gt
],等于[eq
]等)
结束,说我有2张桌子:
LegendSetup
专栏:
1. LegendKey (int)
2. Type (varchar)
3. Min (decimal)
4. Max (decimal)
LegendValueSetup
柱:
1. ValueKey (int) //AutoIncrement PK
2. LegendKey (int) //FK
3. RangeNumeric (decimal) //numeric
4. RangeAlpha (varchar) //alphabet
5. RangeOperator (varchar) //eq, lt, gt
6. RangeShow (varchar) //for display purpose
7. HexColor (varchar)
这是正常的吗?
答案 0 :(得分:2)
由于您只需要范围和等值,我建议您不要使用显式运算符,但范围如下:
CREATE TABLE LegendValueSetup (
ValueAlpha varchar,
ValueNumeric decimal,
LowerNumeric decimal,
UpperNumeric decimal,
... -- other columns
)
对于示例2和3,您只需将显式值存储在ValueAlpha
和ValueNumeric
列中。
例如1,您必须考虑LowerNumeric
是否为包容性,UpperNumeric
为独占界限,反之亦然。然后你可以像这样存储图例:
LowerNumeric | UpperNumeric | Color
NULL | 100 | Black
100 | 200 | Red
200 | 400 | Orange
400 | 600 | Yellow
600 | NULL | Green
如果您现在有一个值并希望获得颜色,则只需查询
SELECT color FROM LegendValueSetup WHERE LowerNumeric <= $value AND UpperNumeric > $value
您当然可以进一步将表格拆分为三个不同的表格,每个图例类型一个。