mysql订单表如何设计?

mysql订单表如何设计?

商品表和订单表

通过一个表来关联。

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

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

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

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

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

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

我的数据库 该怎样设计

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

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

采购订单详情表
      
一次类推

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

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

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

两个表就够了。

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

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

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

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

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

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

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

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

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

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

一个订单需要包含以下信息:客户信息、商家信息、产品信息、订单自定义信息(订单状态、编号等)。数据库里面与之关联的有以下表:客户表、商家表、产品表、订单表
  
  所遇到的问题:
   一个订单不只包含一个产品,如果一个订单包含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是面向内部实际操作环节的模型,代表系统如何去跟踪和记录订单的每个不同类型的商品是如何履约的。

时间: 2025-01-24 08:58:45

mysql订单表如何设计?的相关文章

app-mysql 订单表 的设计

问题描述 mysql 订单表 的设计 小弟最近做一个android商城类App,我想问一下 用来保存订单的表应该怎么设计 解决方案 根据你的业务,一般来说,需要订单号id,用户id,订单状态,创建日期. 同时需要一个订单产品表,包含产品id,产品数量,折扣等. 解决方案二: MySQL 表设计:垂直分割

关系型数据库设计-用户表和订单表 怎么设计

问题描述 关系型数据库设计-用户表和订单表 怎么设计 如果一个电商用关系型数据库, 假设有一个用户表,有一个订单表,订单表中有一个用户ID 的字段, 那查询某个用户的所有订单时岂不是要遍历整个订单表?没有在互联网公司工作过,不知道是怎么设计的,求解答. 解决方案 数据库可以使用索引,对userid列做了索引,再查询的时候就不需要全表遍历.这和互联网公司没有关系,基本的数据库常识你都没学会.

sql-购物网站数据库订单表的设计问题

问题描述 购物网站数据库订单表的设计问题 学生党在做毕业设计,sql语句不会写了,求各位大神帮帮忙 数据库是个B2C数据库购物车表CarcartNo(编号),proNo(商品编号),proName,proPrice,proNum(购买数量),cusNo(顾客id) 现在要做的是把购物车的内容写入订单表,要求订单表至少要有编号,商品总额,订单内容(商品编号.名称和数量))顾客ID,下单时间(当前时间) 求订单表的设计方案和存储过程.主要是存储过程啊!不会写sql语句有木有TAT 或者是.net后台

有关于订单表的设计

问题描述 现在有三张表一个用户表一个商品表一个订单表商品的类型的话就像迅雷会员那样的就只有一个时间(有效期)属性.现在需要订单表里面的支付状态,支付时间,支付金额属性以及购买商品里面的商品信息.怎么控制有没有到期,这个到期时间的属性,以及购买成功次数的属性应该创建在用户表里面吗.还是创建其他关联表的.说的有点乱,一直在哪里不太理解在线回答

表设计-mysql关于数据表的设计

问题描述 mysql关于数据表的设计 我现在有一个member(用户表)里面存放了一个用户的所有信息.还有一个hobby(爱好表)里面存放所有的爱好.现在我需要给用户存放hobby表里面的爱好.我是应该直接在member表里面加一个hobby字段,然后存放爱好表里面的ID如(123),还是应该再一个表来存放用户跟爱好的关系呢?或者还有没有其它更好的可能,**注意:一个用户可以有多个爱好,而以后我只需要查询某一个爱好的人有那些.** 解决方案 这个还是要根据你的需要来定, 如果说以后都是以用户来查

一个购物系统的数据库订单表该如何设计

问题描述 一个购物系统的数据库订单表该如何设计 订单中要显示购买者信息,购买者配送地址,商品名,价格,数量其中商品可能是多个. 解决方案 这个最好是设计2个表,,一个订单,,一个订单详情,,订单中是用户的信息与购买的商品名,,订单详情中是商品的具体价格,数量,介绍等信息 解决方案二: 一张用户信息表,一张订单详情表,用户信息表唯一,主键是订单详情表的外键

mysql数据库优化之表的设计和慢查询定位

一.数据库优化包括的方面数据库优化是一种综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库性能提高. 主要包括: 1.表的设计合理化(3范式) 2.给表添加合适的索引,如何使用索引 3.分表技术(水平分割.垂直分割) 4.定时清除数据垃圾,定时碎片整理 5.多用存储过程和触发器 6.对mysql配置进行优化 7.读写分离 8.mysql服务器硬件升级. 二.数据库的设计 步骤: 1.收集信息:与该系统有关人员进行交流,充分了解数据库需要完成的任务   2

mysql根据多个数据库的订单表统计用户数量

问题描述 mysql根据多个数据库的订单表统计用户数量 假设db_amazon.tbl_order,db_jd.tbl_order,db_taobao.tbl_order这三张表中都存在(date, user_id)这两个字段. 同一个用户在各个表中的user_id相同 每个用户每天下单数量不限,amazon.jd.taobao也任选 amazon.jd.taobao的日下单量假设在1000W级别 求教:从执行效率的角度,如何计算出今天下过单的用户一共有多少

会员有个人会员和企业会员,还有游客,三类人;现要建一数据库表,要怎么样实现订单表,会员表的设计????注:游客提交的订单也要记录入库中的

问题描述 如题 解决方案 解决方案二:11111111111,没人啊,帮我啊,大哥,大师,大虾们.....解决方案三:如果会员类别相对稳定,用一个字段表示...如果会员类别需要经常维护,再建一个会员类别表,外键关联...解决方案四:游客的话随机分配一个id,记入临时订单表...解决方案五:会员表单独建一个字段,以示区别会员类型.