2016-05-23 202 views
2

我有几个类别需要存储在数据库中并呈现给用户。每个人至少有三个到最多四个范围。例如:用于在MySQL数据库中存储多个范围的表格设计

id | category_name | Range A | Range B | Range C | Range D 
-------------------------------------------------------------------- 
1 | Category1  | 0 - 200 | 200 - 450 | 450 - 750 | 750+ 
2 | Category2  | 0 - 300 | 300 - 600 | 600+  |   
3 | Category3  | 0 - 250 | 250 - 350 | 350 - 550 | 550+ 

当用户选择一个类别时,他应该选择一个将保存在数据库中的特定范围。

name | category_id | category_range 
------------------------------------------ 
niceuser30 | 2   | A 
hellouser1 | 1   | B 

考虑到:

  • 范围不能有缝隙它们(例如,如果范围A变为100〜200,范围B 必须从200开始)
  • 每个范围必须之间从0开始
  • 每个范围必须是开放式(或半开放式)

什么是最好的设计,以保存这些值的表格?

我想用一个类似于此

id | category_name | range_a | range_b | range_c | range_d 
------------------------------------------------------------- 
1 | Category1  | 1500 | 3000 | 5000 | 5000 
2 | Category2  | 500  | 1000 | 1000 | 

,然后将其投放到用户之前阐述的输出(如果两个范围是相等的代码设置的最后一个“循环往复”,所以第一个是“0-1500,1500-3000,3000-5000,5000+”)但看起来并且容易出错。

+0

这不能充分回答而不知道将对该选项卡应用哪些查询乐。 –

回答

0

你可以使用2台如Ranges:

id | RangeName| Start | End | Range | 
    -------------------------------------------------------------------- 
    1 | A  | 0 | 1500 | 1500  | 
    2 | B  | 1500 | 3000 | 1500  |   
    3 | C  | 3000 | 4000 | 1000  | 
    .... 

RangeCategories

id | CategoryID|RangeId| 
    -------------------------------------------------------------------- 
    1 | 1   | 1 | 
    2 | 1   | 2 |   
    3 | 2   | 3 | 
    4 | 2   | 1 | 
    ..... 

当然,你也有你的categories表:

id | CategoryName|... 
    -------------------------------------------------------------------- 
    1 | Category1  | ... 
    2 | Category2  | ...   
    3 | Category3  | ... 
+0

谢谢你的回答。但是,范围并不总是固定的(例如,我不能将范围为1500的开始/结束范围设置为0/1500,因为下一范围可能从1500到2500)。 – Bacco

相关问题