Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL数据库中存储多个范围的表设计_Mysql_Database Design_Range - Fatal编程技术网

MySQL数据库中存储多个范围的表设计

MySQL数据库中存储多个范围的表设计,mysql,database-design,range,Mysql,Database Design,Range,我需要将几个类别存储在数据库中,并将它们呈现给用户。每一个至少有三到四个范围。例如: id | category_name | Range A | Range B | Range C | Range D -------------------------------------------------------------------- 1 | Category1 | 0 - 200 | 200 - 450 | 450 - 750 | 750+ 2 | Categor

我需要将几个类别存储在数据库中,并将它们呈现给用户。每一个至少有三到四个范围。例如:

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+”),但它看起来脏而且容易出错。

您可以使用两个表,例如
范围:

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

  id   | CategoryID|RangeId| 
    --------------------------------------------------------------------
     1 | 1         |   1   | 
     2 | 1         |   2   |          
     3 | 2         |   3   | 
     4 | 2         |   1   | 
     .....
当然,您还将拥有
类别
表:

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

谢谢你的回答。但是,范围并不总是固定的(例如,我不能将开始/结束设置为0/1500,范围为1500,因为下一个范围可能是1500到2500)。如果不知道将对表应用什么查询,则无法充分回答这一问题。