Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 如何改进我的数据库结构以进行邮政编码和发货查询?_Database Design_Sqlite - Fatal编程技术网

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

Database design 如何改进我的数据库结构以进行邮政编码和发货查询?,database-design,sqlite,Database Design,Sqlite,我们有一个页面,显示任何给定邮政编码的运费,我正试图将其转换为网站上的一个表单,该表单将完成一些繁琐的工作,并向用户提供其邮政编码的费用。 我剥掉拉链的最后两个数字,因为我不需要它们来查找区域。 我拥有的数据显示了邮政编码的范围。例如,第一个条目是以004到006开头的任何邮政编码都位于2区 显然,我不想创建我的表,在其中一行中我列出了“004”的数据,下一行是“005”,等等。有什么好的方法来构造这个表,以便我可以获取他们输入的邮政编码,并将其与一系列邮政编码进行比较 我正在使用PHP和sql

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

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


我正在使用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