我正在创建一个系统,用户可以在其中指定其商品的运费。我需要涵盖的变量是重量范围(从克到克)、价格和涵盖的国家/地区。根据这些数据,我可以通过引用客户所在国家/地区和篮子的总重量来计算运费。
我的第一个想法是这样的:
id from_weight to_weight price us ca gb fr es de it
------------------------------------------------------------------
1 0g 499g 1.99 Y Y N N N N N
2 500g 999g 2.99 Y Y N N N N N
3 1000g 1999g 4.99 Y Y N N N N N
4 2000g 2999g 7.99 Y Y N N N N N
5 0g 499g 4.99 N N Y Y Y Y Y
6 500g 999g 6.99 N N Y Y Y Y Y
7 1000g 1999g 9.99 N N Y Y Y Y Y
8 2000g 2999g 14.99 N N Y Y Y Y Y
但是,计划将添加越来越多的国家/地区选项。这意味着每次添加更多列。这是构建此类数据的最佳方式吗?还有其他建议吗
最佳答案
通常,首选做法是保持表结构相同,只添加行以满足您所说明的情况。 (由于优化等原因,您可能会偏离这一点)
我建议查找“第三范式”,如果您的数据库符合第三范式的规则,那么您通常最终会减少很多维护,并且更容易扩展。
table1
id | from_weight | to_weight | price
1 | 0g | 499g | 1.99
table2
id | table1id | countrycode | status
1 | 1 | us | Y
2 | 1 | ca | Y
3 | 1 | gb | N
这是查询数据的方式
select price from table1
join table2 on table1.id=table2.table1id
where countrycode='us' and status='Y' and
300 between from_weight and to_weight
关于mysql - 在 MySQL 表中存储运费,将来会添加许多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800111/