我需要将客户的分发区域存储到数据库的最佳方式。
我销售的每件商品都有此属性:
我的客户经常向我列出他们愿意从我们的产品中购买产品的分销区域。
客户数据示例:
1)从CA,FL,HI,AK到邮政编码91367,12345,54321,98765
2)从11111,22222,33333到44444,55555,66666
我将数据存储在数据库中的方式如下:
我有一个表,包含:fromState,fromCity,fromZip,toState,toCity,toZip
我存储数据的方式是创建'FROM'和'TO'数据的所有可能组合,对于seocnd示例,我得到以下行:
问题是,有时数据太长,以至于我的数据库需要数百万条记录,我正在寻找更好的方法来存储我的客户分布要求,然后检查我的产品是否在他们的区域内分发。
感谢您的任何建议!
答案 0 :(得分:1)
我认为实现这一目标的最节省空间的方法是制作三个表:From
,To
和Client
。 From
表格来自您表格中的列,其中包含clientId
的附加列,您的To
表格将成为表格中的列,其中包含{{1}的其他列},您的clientId
表将有一个Client
,可能还有客户名称或其他识别标记。这会将你的froms和tos与你的客户联系起来,而不是彼此相关,并且有一个FROM + TO + 1存储空间,而不是FROM * TO存储空间。
要处理clientId
和From
的多对一或多对多关系,请保留建议的To
和From
表结构,但要更改为了示例,提议的To
表是关系表,client
。 FromtoTo
表将包含一列FromtoTo
关系ID和一列From
关系ID。您的To
和clientId
表格中的From
列会更改为这些关系ID。结构的一个例子如下:
To
此处,从请求1匹配到请求1和2,从请求2匹配到请求3。