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

智能推荐

单源点最短路径算法:Bellman-Ford算法_bellman-ford算法是多边dp吗-程序员宅基地

文章浏览阅读1.5k次。背景知识图简介图由节点和边组成,边有方向的图称为有向图,边没有方向的图称为无向图,最短路径算法里可以把无向图视为双向连接的有向图。 边有权重的图称为有权图,边没有权重的图称为无权图,无权图可以视为边的权重均为1的图。单源点最短路径给定图中的一个节点,求该节点到其他所有节点的最短路径。Bellman-Ford算法概述Bellman-Ford属于DP算法,_bellman-ford算法是多边dp吗

利用“PECL”安装PHP扩展,比如“xlswriter”_pecl install xlswriter-程序员宅基地

文章浏览阅读248次。​​​​​​​安装php扩展。_pecl install xlswriter

如何使用SQL Server配置管理器-程序员宅基地

文章浏览阅读8.4k次,点赞6次,收藏21次。SQL Server configuration manager is a tool provided by Microsoft SQL Server. When we install SQL Server, it is installed automatically. It is used for the following purposes. SQL Server配置管理器是Mic..._sql native client 11.0 配置客户端协议

微软官方推出的四款工具,太实用了,值得收藏_微软资源库-程序员宅基地

文章浏览阅读1.1k次。所以今天小编给大家分享4个微软官方推出的实用工具,每一个都非常好用,对于大家日常办公,非常有必要,感兴趣的朋友可以下载试试!_微软资源库

android 平台上使用opencl 调用gpu 进行加速_cl社区1024地址-程序员宅基地

文章浏览阅读1.6k次。其实去年就已经把Android上OpenCL的demo做出来了,但是由于种种原因一直没有开源–嗯现在就不吝啬了~奉献给大家~后面在Android上还实现了很多种并行化的算法,比如SHA-1、HDR、K-means、NL-means、SRAD等等,会在近期整理好之后开源的。原文发表在了异构开发技术社区整理成教程是队友做的,十分感谢~原博文地址: 原文链接已经失效,无法查看了,好遗憾队友的博客项目github地址代码CSDN地址下面是干货:Android平台利用OpenCL框架实现并行._cl社区1024地址

scratch列表移位 电子学会图形化编程scratch等级考试四级真题和答案解析2019_scratch四级19年3月-程序员宅基地

文章浏览阅读2.1k次,点赞14次,收藏21次。27、列表移位1、准备工作(1)选择Baseball 1背景;(2)选择Batter角色和Tennis Ball角色;2、功能实现(1)按下空格键,Batter和Tennis Ball移到适当的位置,准备击球(2)按下空格键,Batter挥动球杆后,Tennis Ball向右移动,直到碰到舞台边缘后消失;(3)再次按下空格键,可以再次挥动球杆,Tennis Ball再次从Batter旁边向右飞出..._scratch四级19年3月

随便推点

v-cloak 指令作用及适用场景_v-cloak作用-程序员宅基地

文章浏览阅读747次,点赞35次,收藏45次。v-cloak 是一个实用的 Vue 指令,它可以在页面加载期间防止用户看到未编译的 Vue 代码。当使用 v-cloak 时,通常会结合 CSS 规则来确保在 Vue 编译过程完成之前,用户看不到任何预编译的内容。这包括防止大括号 {{ }} 和其他模板语法在页面上闪烁。_v-cloak作用

解决 IDEA tomcat启动时的错误:idea Error:java: Compilation failed: internal java compiler_tomcat compilation failed internal java compiler e-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏3次。最近使用idea后台开发功能,启动tomcat时报错,具体错误如下:Error:java: Compilation failed: internal java compiler error百度了一些文章,不过都不管用!!!!!!我的解决方案如下:在setting-->Build,Execution,Deployment-->Compiler 中找到build process hea..._tomcat compilation failed internal java compiler error

Ubuntu16.04安装CodeChecker及CodeChecker服务器的配置_ubuntu codechecker-程序员宅基地

文章浏览阅读1.3k次。Ubuntu安装CodeChecker首先环境使用的是Ubuntu16.04发行版其自带的python版本为3.5,gcc版本为5CodeChecker需要python版本>=3.6经过实验,发现Ubuntu版本过低时,如果不能按照如下方法使用apt直接安装python,那么需要使用gcc对python源码进行进行编译安装。此时gcc版本应至少>=5。否则无法对python进行编译安装(至少gcc4.8.1不行)因此如果需要gcc降级,那么务必在安装CodeChecker安装结束后再_ubuntu codechecker

3.Mapper.xml 详解-程序员宅基地

文章浏览阅读1.6w次,点赞12次,收藏108次。文章目录Mapper.xml 详解1. parameterType2. resultType3. 级联查询3.1 一对多3.2 多对多Mapper.xml 详解MyBatis 主要有两个的配置文件:config.xml 和 Mapper.xml,这两个配置文件可以自定义文件名。config.xml 是全局配置文件,主要配置 MyBatis 的数据源(DataSource),事务管理(TransactionManager)以及打印 SQL 语句,开启二级缓存,注册 Mapper.xml 等。Map_mapper.xml

ensp提示抓包工具wireshark配置路径不正确_ensp抓包工具wireshark配置路径不正确-程序员宅基地

文章浏览阅读2.4w次,点赞30次,收藏61次。太久没有使用模拟器,今天突然打不开抓包工具了,莫慌,马上上解决方法。出现这个问题的原因可能是因为各位老铁们在升级软件的时候位置变了,或者是先安装了ensp后面才安装的wireshark。解决方法:单击 eNSP的菜单 - 工具 - 选项 - 工具设置,在引用工具里面 设置你安装的 wireshark 路径。有的老铁可能已经忘记了安装路径,这边告知大家如何找到安装路径,先找到电脑里面的wireshark请注意看一下是不是真实的安装路径如果不是请同理选中快捷方式右键选中打开文件所在位置下_ensp抓包工具wireshark配置路径不正确

全网疯传,阿里 P8 技术官的架构笔记外泄:微服务分布式架构实践手册_阿里p8分布式架构笔记-程序员宅基地

文章浏览阅读132次。阿里 P8 大佬的架构笔记:微服务分布式架构实践手册从企业的真实需求出发,理论结合实际,深入讲解 Spring Cloud 微服务和分布式系统的知识。_阿里p8分布式架构笔记