问题是这样的:
我现在做的一个网站,需要有城市切换功能。
一个商户对应了一个城市列表。城市列表里有n个城市(n>0)
我想出的解决方案是,二进制映射的表示法:
比如:城市表里
id city
1 北京
2 上海
4 南京
8 深圳商户表的城市外键决定了:数量,和个体。
比如:city_id=3;
那么这个商户就有两个城市,分别是北京和上海。
city_id=15;
就是北京,上海,南京,深圳四个城市。但现在这样的方案出现的问题是:当城市数量快速增长的时候,数据库里的int 型已经不可能来表示他了。
全国有3165个城市,2的3165次方,这个数字太恐怖了。
当然我不会做这么多的城市。我预想的是支持1-200个城市。 我想找的答案是:如何改经此方案来支持200个以内城市或者更多。
或者其它比较轻量的解决方案。
我现在做的一个网站,需要有城市切换功能。
一个商户对应了一个城市列表。城市列表里有n个城市(n>0)
我想出的解决方案是,二进制映射的表示法:
比如:城市表里
id city
1 北京
2 上海
4 南京
8 深圳商户表的城市外键决定了:数量,和个体。
比如:city_id=3;
那么这个商户就有两个城市,分别是北京和上海。
city_id=15;
就是北京,上海,南京,深圳四个城市。但现在这样的方案出现的问题是:当城市数量快速增长的时候,数据库里的int 型已经不可能来表示他了。
全国有3165个城市,2的3165次方,这个数字太恐怖了。
当然我不会做这么多的城市。我预想的是支持1-200个城市。 我想找的答案是:如何改经此方案来支持200个以内城市或者更多。
或者其它比较轻量的解决方案。
1 北京
2 上海
3 南京
4 深圳
5
..
这样以序列号下去。不使用你那种二进制方式。然后再放一张商户城市关系表
商户,城市
1 1
1 2
1 北京
2 上海
3 南京
4 深圳
5
..商户表
ID,名称,。。,城市
1 'AAA' '1,2'
2 'BBB' '1,2,3,4'这种用分隔符把所有城市的ID合并存放在一个字段中。
但这种方法不符合数据设计范式的要求。在某些特定情况下可用。
看来还是得抽象出一层关系映射来。
本来想直接把关系和实体聚合起来的,结果看来还得把关系和实体分离出来。