mysql订单表如何设计?_mysql创建表字段说明,订单号,销售时间,交货时间,交货状况,货物类别,货品用户-程序员宅基地

技术标签: Mysql开发  

mysql订单表设计:

一些基础说法:


1、

订单表:订单编号、下单时间、提交人、订单类型、收货人信息、订单状态[待发货-已发货等]、订单审核人、订单金额、收货人ID[来至客户信息表]、
订单商品信息记录表:订单编号、商品ID、

其实你应该是有一个顺序生成不同的单据,并不是一个订单这么简单,
客户下好单可以叫一个基本订单、确认后,生成一个付款单、再后来就是发货单、最后收到钱了还有一个收款单、这是最基本的几个单据!


商品表和订单表 。

通过一个表来关联。

那删除了商品,相关联的订单表如何显示出这个已经删除的商品?


订单表需要冗余商品名、商品编号、价格等基本信息。


不能只保存一个商品主键,这个是订单表的基本原则,同时生成了订单的商品是不能删除的。


订单表中引用商品表主键,删除使用状态假删。

同时引入商品的状态,总之就是反范式设计,保证一次可以获得全部要的状态,不要进行多表jion。


2、

订单:  分为以下几种
        订单凭证(接到客户的订单表),采购订单, 销售订单,委外订单

我的数据库 该怎样设计

  订单类型表: 分 订购,采购,销售,委外
       订单表: 
      订单详情表:

 订单凭证表 - 订单凭证表详情
       采购订单

采购订单详情表
      一次类推

他们之间可以相互切换,  就是   订单凭证 (产品产线做完以后),可以转换成 销售订单



在记录订单凭证那张表里面加个状态 是否完成 如果完成了就可以打了标记 然后记录到销售订单 

不需要订单类型表,在订单表中加个订单类型的字段来记录就是了,如果防止误输入错误的订单类型,在这个字段上加约束就行了。

两个表就够了。

订单表 用一个类型字段进行区分,需要转换时直接改订单类型。
订单详情表 订单的明细记录。


相互切换 也不要 对 同一个记录进行 改标志,而是应该 完成原单,新增新单

所有单据都用一套主从表:
一个主表,有单据类型字段
一个从表


要看业务需求的。
如果一个订单按流程走下去,不同的步骤被称为不同的名称,改标志就够了。
最多加上几个时间字段,用来记录转换类型的时间点。

要是内容没变化,同样的明细复制几份没有意义,反而平白增加了数据量。

订单凭证,采购订单,销售订单,委外订单各建一个表存储(主表), 必要时建各自对应的明细表.
各种订单的主表之间可通过各自的内码(InterID)关联.

买家购买商品后,产生一个订单,那么订单进行的每个步骤的数据如付款、付款时间,发货、发货时单,确认收货等信息应该如何设计,都放在订单表中吗?

每个步骤的数据如付款、付款时间,发货、发货时单,确认收货等信息应该如何设计,都放在订单表中吗?

一个订单需要包含以下信息:客户信息、商家信息、产品信息、订单自定义信息(订单状态、编号等)。数据库里面与之关联的有以下表:客户表、商家表、产品表、订单表
  
  所遇到的问题:
   一个订单不只包含一个产品,如果一个订单包含2个或者两个以上的产品时,如何解决?
  
  当前解决方案:
   另外建立一张关系表、一张历史记录表。将每个订单的产品信息存入关系表里面,在查询订单明细的时候,从关系表里读出该订单的产品信息。因为关系表的增长速度非常快,为了提高查询速度,将很久以前的数据移入历史记录表里面。


你可以将定单表中唯一标识定单的字段与产品定单表中唯一标识产品的字段,重新定义一个表,在此表中,将这两个字段作为联合主键就可以了
  你上面的解决方案,当运行到一定程度时,历史记录表会很大.查询会很麻烦
  你可以在定单表中,增加这两个字段,并将订单状态设置成标志位,在业务逻辑中进行判断,那么此订单中,只要客有想买的商品,即可以成交.
  谢谢您的解答,我似乎明白您的意思了.但是需要查询订单详情的时候,是不是也从新定义的这个表里获取产品的ID ,然后再从产品表里获取资料呢? 这样是不是也算是定义了一个关系表? 如果有多个产品的话,怎么解决呢?这点我还是没有搞懂,请明示. 谢谢.
你用一个新表来定义新购的产品就可以了,完全可以使用定单信息这一个表就可以了.

首先,需要表产品订单库存出库这4个表,根据你的需求来说。

产品记录产品名称产品价格等等产品信息。
订单记录订单号订单创建人等等
库存记录产品的ID产品总量等等
出库记录产品的ID订单的ID产品数量打单员等等

这样可以通过查找出库记录的时候,根据订单的ID可以看到这个订单一共有什么产品。
其实我觉得如果你这里不涉及一个出库的需求,单纯需要知道每个订单的产品,应该有更加简洁的设计方案。



存在这样一个关系:商品,客户,订单。

每个客户对应多个订单
每个订单对应多个商品

请问如何设计订单表?

还有,所有客户的订单都存在一张表中,还是为每个客户都创建一个订单表?



商品:ID,名称,价格,。。。。
客户:ID,名称,。。。。。
订单主表:流水号,订单日期,客户ID。。。(一个订单一条)
订单辅表:流水号,主表流水号,商品ID。。。(同一主表的流水下对应多个商品 )


 典型的购物车案例,  用户在商城购买商品, 同一个商品可以购买多次。 最后形成一个订单。我的数据库是这样设计的:

     因为一个订单可以包含很多商品条目, 而一个商品也可以由很多订单订购。所以2者是多对多的关系。  另外还有需求,用户可以修改订单中商品的数量, 就是说,用户可以买10个或者更多个商品。

     表设计如下

     Order(订单表):
     ............ id, int
     ............ name,string


     Product(商品表)
     ............ id, int
     ............ name,int

    
     Ref_OP(订单商品关联表)
     ............ order_id, int
     ............ product_id, int
     ............ quantity, int   /**  一个订单同一个商品的数量 */
     
     请注意,最后的关联表 中有个 quantity , 我想和各位探讨的是, 这样的设计是否合理?


很不合理。
订单表管理的订单,商品表管理的是库存。他们没有关系的。

需要有订单表,订单明细表和商品表,其中商品表和订单明细没有关联,记入明细时需要复制全部商品信息。



很不合理。
订单表管理的订单,商品表管理的是库存。他们没有关系的。

需要有订单表,订单明细表和商品表,其中商品表和订单明细没有关联,记入明细时需要复制全部商品信息。



拿京东网来举个例子:

如果没有关联,就是说,我在查看订单时,在订单里看到的商品信息都是订单详细表自已存储的吗?

那商品性能,描述等很多信息全存一份在订单里,太可怕了吧。

不知道我的理解是否正确:-)

为什么要这样设计?



拿京东网来举个例子:

如果没有关联,就是说,我在查看订单时,在订单里看到的商品信息都是订单详细表自已存储的吗?

那商品性能,描述等很多信息全存一份在订单里,太可怕了吧。

不知道我的理解是否正确:-)

为什么要这样设计?


考虑一下两份定单的情形,假定它们是在不同时间作成的,在这段时间里同种商品的价格单位或者描述都是可以变化的,而定单上则应记录下作成时的产品信息。因此,两份定单上对同种商品的记录可以是不同的,所以不能使用商品表里的信息。


Ref_OP(订单商品关联表)

这个名称取得不好,其实就是 LineItem(销售项/订单项)。


考虑一下两份定单的情形,假定它们是在不同时间作成的,在这段时间里同种商品的价格单位或者描述都是可以变化的,而定单上则应记录下作成时的产品信息。因此,两份定单上对同种商品的记录可以是不同的,所以不能使用商品表里的信息。



有道理。商品的价格、描述等信息是动态变化的。

商品表信息,可以分成可变,不变的(比如序列号)。

ProductSpec 中可以只放不变信息,并暂存动态数据(如最新价格)。

预期动态变化的信息,应该拷贝到 LineItem 中。


lodge >> 其中商品表和订单明细没有关联,记入明细时需要复制全部商品信息。

二者可以(最好)有关联。

不变信息或辅助信息,可以不用复制,如产品说明、厂家等。

全部复制会造成信息冗余。




lodge >> 其中商品表和订单明细没有关联,记入明细时需要复制全部商品信息。

二者可以(最好)有关联。

不变信息或辅助信息,可以不用复制,如产品说明、厂家等。

全部复制会造成信息冗余。

每份定单上的信息都是定单作成时被记录下来的,每份定单都是独立存在的,它们之间没有相互参照的关系,即便是同种商品的信息不一致,也不会破坏数据的一致性,因此这只是重复而并非冗余。
减少重复数据个人认为意义不大,这么作只能缩小数据库的大小,由于存在多对多的复杂关系容易影响检索效率。


事实上我认为还要考虑一下客户退货、修改订货时的数量,或者订单中某一用户的优惠(包括大客户的优惠、某节假日促销的优惠等信息),当然也可以不放在同一张表内,不过那就需要关联一些表了,如取舍要设计者根据实际情况自行把握!


这些都和 Use Case 有关。

脱离了系统需求来讨论表设计,等于白讨论。


事实上我认为还要考虑一下客户退货、修改订货时的数量,或者订单中某一用户的优惠(包括大客户的优惠、某节假日促销的优惠等信息),当然也可以不放在同一张表内,不过那就需要关联一些表了,如取舍要设计者根据实际情况自行把握!

这样考虑才全面啊


我有个问题,就是我现在有一张订单关联表,和一张订单主表,还有一张商品表。
订单关联表:
           ID 自动增长 主键
           orderId 订单编号
           productId 商品编号
           price  价格
           number  数量
----------------------------
主表:orderId订单编号
     用户名、电话、地址...

商品表:id,name...

怎么才能做到一张订单对应多个商品呢,我买东西的时候,一张单子可能会有很多商品的。 插入数据库的时候如何实现,我现在脑子里感觉只能一张订单对应一个商品呀


买家购买商品后,产生一个订单,那么订单进行的每个步骤的数据如付款、付款时间,发货、发货时单,确认收货等信息应该如何设计,都放在订单表中吗?

看你其他表的关联,建议建立主子表,将付款金额等消息,放入子表中,将发货等信息,使用ID和其他表关联


每个步骤的数据如付款、付款时间,发货、发货时单,确认收货等信息应该如何设计,都放在订单表中吗?

订单表:订单编号、下单时间、提交人、订单类型、收货人信息、订单状态[待发货-已发货等]、订单审核人、订单金额、收货人ID[来至客户信息表]、
订单商品信息记录表:订单编号、商品ID、

其实你应该是有一个顺序生成不同的单据,并不是一个订单这么简单,
客户下好单可以叫一个基本订单、确认后,生成一个付款单、再后来就是发货单、最后收到钱了还有一个
收款单、这是最基本的几个单据!


请各位牛人指教,一个困扰我很久的订单表设计问题


旅游电商订单表设计问题问题描述:网站提供酒店,机票,旅游线路等等...多种产品的预定。用户可以同时预定多个产品,怎么把这么多不同类型的产品糅合到一个订单记录中也就是一个订单号。??????????????因为这些产品的每个订单属性都不一样。一个订单记录怎么去做这么多种订单的订单详情关联,,????????????例如:订单号是DK3453545,那这个订单号里用户是预定了机票,门票,酒店,以及旅游车的那这个订单记录中该怎么把这些订单详情关联到这个订单记录中,而且这些用户需要预定的产品是不固定的。??????????????我也想过把每个产品类型的订单记作为一个单独产品类型订单记录,那么就会存在很多个订单表,当系统需要查询当前用户的订单时,就需要把所有的类型订单表都遍历一遍。这样效率太慢。而且感觉很不好维护,?麻烦各位做过订单电商的牛人给点经验。



最满意答案



1、商品基础属性及库存(SKU)
2、订单以及订单详情(Order&OrderItems),OrderItems里面的record肯定与某个SKU关联上。同时你们的这种订单,一定包含个性化定制信息,一般都可以用一个字段将个性化信息保存起来(比如订酒店,可能包含日期、住几晚、单间还是标间、其他特殊要求等)
3、Shipment,订单只是与客户签订的一个意向合同,那么shipment就是你们如何去履约这个合同的载体。这种情况下,一类商品就可以设计成一种shipment,具体的履约方式、过程和状态,都可以放到这个模型里。

总结:订单是面向用户的模型,代表着一个销售或者销售意向合同。shipment是面向内部实际操作环节的模型,代表系统如何去跟踪和记录订单的每个不同类型的商品是如何履约的。






版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010098331/article/details/51376077

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue