如何改进我的数据库结构的邮政编码和发货查询?

时间:2012-09-07 15:04:40

标签: database-design sqlite

我们有一个页面显示任何给定邮政编码的运费,我正在尝试将其翻译成网站上的一个表单,该表单将执行脏工作并向用户提供其邮政编码的费用。 我脱掉了拉链的最后两位数,因为我不需要它们来查找区域。 我所拥有的数据显示了范围的邮政编码。例如,第一个条目是任何以004到006开头的邮政编码都在第2区。

显然,我不想创建我的表,在一行中我列出了“004”的数据,下一行“005”等。有什么好的方法来构建这个以便我可以取下拉链他们输入并与一系列邮政编码进行比较?

我正在使用PHP和sqlite3,但是我无法用最好的方式来解决这个问题,一旦我这样做,我就可以编码它没问题。

1 个答案:

答案 0 :(得分:2)

虽然邮政编码包含数字字符,但作为数字没有任何意义 - 您无法将其添加 - 因此您应将其存储为字符串。

在此基础上,您的邮政编码范围可以与起始和结束范围的字段一起存储...... 即:

Zone |RangeStart | RangeEnd
   2 |       004 |      006

和您的邮政编码数据与between子句

进行比较
select * from address
     inner join zipcoderanges
     on substr(address.zipcode,1,3) between zipcoderanges.RangeStart and zipcoderanges.RangeEnd