Mysql 同时整合其他运营商。大约有16000个共点。其中,联邦快递服务于约19000个地点。他们中的一些只有交付。需要关于计划A的建议。与其保留所有可能的组合,不如保留范围组合?例如,考虑PIN码67630367638767642和6953826953816956
Mysql 同时整合其他运营商。大约有16000个共点。其中,联邦快递服务于约19000个地点。他们中的一些只有交付。需要关于计划A的建议。与其保留所有可能的组合,不如保留范围组合?例如,考虑PIN码67630367638767642和6953826953816956,mysql,database-design,Mysql,Database Design,同时整合其他运营商。大约有16000个共点。其中,联邦快递服务于约19000个地点。他们中的一些只有交付。需要关于计划A的建议。与其保留所有可能的组合,不如保留范围组合?例如,考虑PIN码67630367638767642和695382695381695650。对于pincode 676303,有6种可能的组合。但如果取pincode的前三个数字,即676-676和676-695,则只有两个组合,并且只有这两个组合的保持率。问题是,在之间查找,无法很好地优化。 Shipping Comp
同时整合其他运营商。大约有16000个共点。其中,联邦快递服务于约19000个地点。他们中的一些只有交付。需要关于计划A的建议。与其保留所有可能的组合,不如保留范围组合?例如,考虑PIN码67630367638767642和695382695381695650。对于pincode 676303,有6种可能的组合。但如果取pincode的前三个数字,即676-676和676-695,则只有两个组合,并且只有这两个组合的保持率。问题是,在之间查找
,无法很好地优化。
Shipping Companies
--------
ID (int, PK)
Name (string)
Pincodes
--------
ID (int, PK)
Pincode (string)
These entities have a many-to-many relationship. So create a table to link them:
Shipping Company Pincodes
--------
ID (int, PK)
Shipping Company ID (int, FK)
Pincode ID (int, FK)
Pickup (bit)
Delivery (bit)
Pincode | Fedex Rate | DHL Rate | UPS Rate
----------------------------------------------------
67 - 69 7.7 6.5 5.5
Shipping Companies
--------
ID (int, PK)
Name (string)
Shipping Company Pincodes
--------
Shipping Company ID (int, PK/FK)
Pincode (int, PK/FK)
Pickup (bit)
Delivery (bit)
Rate (decimal)
CREATE TABLE Rates (
from_a, from_z, -- min and max pins for source pin range
to_a, to_z, -- ditto for destination
fedex DECIMAL(6,2) NULL -- NULLable in case fedex does not run that route
etc.
PRIMARY KEY(from_a, from_z, to_a, to_z)
) ENGINE=InnoDB;
SELECT IFNULL(fedex, 'N/A') AS Fedex, ...
FROM Rates
WHERE $from BETWEEN from_a AND from_z
AND $to BETWEEN to_a AND to_z;
PRIMARY KEY(x, y, from_a, from_z, to_a, to_z)
SELECT ...
FROM Rates
WHERE x = FLOOR($from/100)
AND y = FLOOR($to/100)
AND the rest of Plan B's WHERE