Unless you actually have varying rates for each 500 gram increment, you do not have 83 classes, you have what is sometimes referred to as a postage stamp function.
Example: U.S. postal rates:
Base rate: 37 cents
Base weight: 1 ounce
Incremental rate: 23 cents
Incremental weight: 1 ounce
So, I don't need 83 columns to calculate a shipping rate. If I have something that weights 47 ounces:
$shipweight = $shipweight - $baseweight; // handle the min
$totcharge = $ baserate;
// compute how many incremental units are left
$extraunits = ceil($shipweight / $incrementalweight);
// multiply by rate per unit
$totcharge += $extraunits * $incrementalrate;
So, again, unless you are aware of some country that charges a different rate for every step in weight, as in
1 ounce - 50 cents
2 ounces - 80 cents - 30 diff
3 ounces - 1.00 - 20 diff
4 ounces - 1.10 - 10 diff
you do not need a table to hold 83 values. You need only the rates above.
Somtimes shipping charges per unit increase/decrease as weights go up. If this is the case, then you modify the table above as in
Base rate: 37 cents
Base weight: 1 ounce
Number of weight ranges
and for each weight range
Weights this range is valid for
Incremental rate: 23 cents
Incremental weight: 1 ounce
Even these more complex weight functions still only have a couple of weight ranges, not 83.
So for a given country, you have one record for each shipping method, or if you are not a DB purist, put all the fields in one record for all the shipping methods.