您的位置: 主页 > 成功案例 >

数据结构设计浅谈

发布日期: 2019-03-16 02:35

  相信无论是产品经理还是项目经理,都遇到过项目数据结构的设计相关的事情,说说个人对于数据结构设计的理解。

  使用很方便,方便进行表结构设计,重要的是可以直接导出数据字典。建表的时候中英文直接对照在一起。个人推荐表结构设计用这个工具,后面例子的截图都是使用这个工具做的。

  消费者通过购买商品,填写订单信息,选择优惠信息,提交订单,付款。商家进行发货,消费者收货,评价,完成订单交易。

  京东上一个消费者可以购买多个商家的多个商品,一个商品当前只会属于一个订单,可以同时对多个商家的商品合并结算,生成一个主订单,多个子订单。

  本文订单表结构逻辑参考淘宝,即消费者一次购买过程中,按商家生成订单,一个订单可以购买多件商品,即订单有子表订单项,一个订单可以有多个订单项。

  *此流程中没有多对多关系,若两个对象之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个对象。这样,实现一个多对多的关系,变为两个一对多的关系。

  举个例子,在购买商品的详情页上显示文章,一个文章可以涉及多个商品,一个商品可能和多篇文章有关。这时候我们就需要去消除多对多的关系。

  表里设计每个字段的时候一定要想清楚,这个字段什么时候插入,是否会更新,是否必须字段,整个表的数据是否可以删除。是否要建立主外键关系。(结合页面原型模拟用户行为进行判断)

  可以计算得出的字段,前期建议不要插入。例如:订单里的应付总额,可以通过购买商品的单价和数量算出,这个总额不必存储。

  基本结构里不需要维护的字段建议做成枚举类型,不建议存储。例如订单状态。比如订单状态,已下单,已付款,已发货,已收货,已评价,已完成。

  Order表里的Enable字段,控制数据有效性,这样便于以后数据分析。

  订单业务流程里还有退款和退货,本流程里退款和退货有另外的表进行设计,再此不做阐述。

  继承关系的数据结构,当父对象抽象出来的字段,子对象不要再去创建,尽量保持父子键GUID相同。例如:user表有UserID,UserName,Customer继承User表,Customer表的CustomerID要存储为UserID的值。当生成订单时,存储UserID来获得UserName即可,无需去调用Customer表。

  冗余数据何时填入,可以依据业务经验或者顾客提出的业务需求及项目维护时的数据监测结果进行调整。

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、招聘、社群为一体,全方位服务产品人和运营人,成立8年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里分享知识、招聘人才,与你一起成长。

咨询热线

400-690-123455