2016-05-23 11 views
2

Ich habe mehrere Kategorien, die ich in einer Datenbank speichern und sie Benutzern präsentieren muss. Jeder hat ein Minimum von drei bis maximal vier Bereichen. Zum Beispiel:Tabellenentwurf zum Speichern mehrerer Bereiche in der MySQL-Datenbank

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+ 

Wenn ein Benutzer eine Kategorie auswählt, sollte er einen bestimmten Bereich auswählen, der in der Datenbank gespeichert wird.

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

Erwägung, dass:

  • Bereiche können keine Lücken haben zwischen ihnen (zB wenn Bereich A von 100 bis 200 geht, Bereich B must Beginn ab 200)
  • jeder Bereich muss Start von 0
  • jeder Bereich muss offen (oder halboffen) sein

Was wäre das beste Design für eine Tabelle, um diese Werte zu halten?

Ich dachte an so etwas wie diese

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

verwenden und dann die Ausgabe erarbeiten, bevor sie an den Benutzer dienen (wenn zwei Bereiche gleich sind der Code wird die letzten „ad infinitum“, so die der erste wäre "0 - 1500, 1500 - 3000, 3000 - 5000, 5000+"), aber es scheint schmutzig und anfällig für Fehler.

+0

Dies kann nicht ausreichend beantwortet werden ohne zu wissen, welche Anfragen auf die Registerkarte angewendet werden le. –

Antwort

0

könnten Sie 2 Tabelle zB Ranges:

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

und RangeCategories:

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

Und natürlich werden Sie auch haben Ihre categories Tabelle:

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

Danke für die Antwort. Bereiche sind jedoch nicht immer fest (z. B. kann ich keinen Anfang/Ende als 0/1500 mit einem Bereich von 1500 haben, da der nächste Bereich von 1500 bis 2500 sein kann). – Bacco