新手问题 这样的需求该怎么设计表结构?

xiaobai2 · 2017年02月15日 · 最后由 xiaobai2 回复于 2017年02月17日 · 2413 次阅读

有一个配送方式表,关联了一个地区的 id,当我选择配送区域的时候,可以多选入下图 选择完之后如下: 我的地区相关的表有省份,城市,地区三个表,可是我怎么设计与配送方式表之间的关系才可以实现如上效果,求大神指点

create table delivery_plans (
  id,
  首件,
  运费,
  续件,
  续费
);

create table delivery_plan_areas (
  plan_id,
  area_id,
  area_type
);

create table areas (
  id,
  name,
  type,
  parent_id
);

抱歉有些字段没查用英文怎么讲,就中英混合了。

提供两种,不知道能不能满足:

  • 第一种配送方式表中建一个字段 string 类型 记录如下 2-39-456,2,2-23(数字代表省份、市、县 ID)多个区域就用逗号隔开;
  • 第二种再建一个关系表 记录配送方式表 ID,省、市、县 ID(市县为 0 时表示全省配送)

电商业务中运费模板(Entity)与 区域(Entity)之间的多对多关系

把省份、城市、区以树结构的形式放在一张表上,就可与运费模板相关联了

以树结构形式放一张表上方便以后扩展,比如在区后面再加村、街道

我记得中国的区域好像有国家标准的编号的,类似于身份证号的东西

不建议把这种信息存到数据库,不会经常变动

zones 把省份,城市,地区放到一张表,代码两位的是省级,4 位是市级,6 位是区/县级,部分数据如下:

id 名称 代码
1 北京 11
2 河北 13
3 太原 1401
4 小店区 140105
5 迎泽区 140106

配送区域数据放一张表:

id 配送 id 区域代码
1 1 11
2 1 13
3 1 140105

这样还能找到某区域的全部上级 (postgresql 可支持这种 sql)

select * from zones where '140105' ~ code

希望能对你有点启发

9 楼 已删除

#10 楼 @jasl 之前弄个东西,也需要省市区,直接拿的上面那个链接里的数据和关系

wootaw 一个地区字段的小工具类 提及了此话题。 02月17日 15:46

不知道表结构是否可行?勿喷

  • delivery_table 配送方式表

    • ID
    • delivery_area_id 可配送区域
    • 首件
    • 运费
    • 续件
    • 续费
  • delivery_area_table 可配送区域表

    • ID
    • area_id 区域
    • city_id 城市
    • province_id 省份

感谢大家的建议

需要 登录 后方可回复, 如果你还没有账号请 注册新账号