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)。如果不知道将对表应用什么查询,则无法充分回答这一问题。