Database design 如何改进我的数据库结构以进行邮政编码和发货查询?
我们有一个页面,显示任何给定邮政编码的运费,我正试图将其转换为网站上的一个表单,该表单将完成一些繁琐的工作,并向用户提供其邮政编码的费用。 我剥掉拉链的最后两个数字,因为我不需要它们来查找区域。 我拥有的数据显示了邮政编码的范围。例如,第一个条目是以004到006开头的任何邮政编码都位于2区 显然,我不想创建我的表,在其中一行中我列出了“004”的数据,下一行是“005”,等等。有什么好的方法来构造这个表,以便我可以获取他们输入的邮政编码,并将其与一系列邮政编码进行比较Database design 如何改进我的数据库结构以进行邮政编码和发货查询?,database-design,sqlite,Database Design,Sqlite,我们有一个页面,显示任何给定邮政编码的运费,我正试图将其转换为网站上的一个表单,该表单将完成一些繁琐的工作,并向用户提供其邮政编码的费用。 我剥掉拉链的最后两个数字,因为我不需要它们来查找区域。 我拥有的数据显示了邮政编码的范围。例如,第一个条目是以004到006开头的任何邮政编码都位于2区 显然,我不想创建我的表,在其中一行中我列出了“004”的数据,下一行是“005”,等等。有什么好的方法来构造这个表,以便我可以获取他们输入的邮政编码,并将其与一系列邮政编码进行比较 我正在使用PHP和sql
我正在使用PHP和sqlite3,但是我不能用最好的方式来组织它,一旦我这样做了,我就可以把它编码成没有问题。虽然邮政编码包含数字字符,但它作为一个数字是没有意义的-你不能把它加起来-所以你应该把它存储为一个字符串 在此基础上,您的邮政编码范围可以与开始和结束范围字段一起存储。。。 即: 将您的邮政编码数据与
between
子句进行比较
select * from address
inner join zipcoderanges
on substr(address.zipcode,1,3) between zipcoderanges.RangeStart and zipcoderanges.RangeEnd
您最好将所有Zipcode和它们的区域存储在一个表中,而不是存储在范围中。这样,您就可以在不使用函数inteh on子句的情况下进行stroight联接,而该子句的性能应该会更好。任何时候,只要您在联接中使用函数,就知道您的设计不是最优的。
select * from address
inner join zipcoderanges
on substr(address.zipcode,1,3) between zipcoderanges.RangeStart and zipcoderanges.RangeEnd