gpt4 book ai didi

mysql - 存储订单项目和项目可以有子项目的不同方式是什么?

转载 作者:行者123 更新时间:2023-11-29 03:16:36 24 4
gpt4 key购买 nike

应用程序有订单,订单可以有项目。为此,我们有如下数据库表。

Table 1 - T_ORDER(pk_order_id, order_no, date)
Table 2 - T_ORDER_ITEM (pk_order_itemid, fk_order_id, ean, quantity, price)

现在我们必须支持订单可以有捆绑商品的情况,这意味着一个捆绑商品包含多个真实商品。捆绑商品将拥有普通商品可以拥有的所有属性,如 ean、数量、价格。

基本上, bundle 是一个或多个真实商品的虚拟组,但它可以像真实商品一样具有数量等属性 - 因此用户可以下订单多个这样的捆绑商品,ean - 用于识别,价格 - 它可以包含所有价格 bundle 中的真实元素。

我想知道支持这种情况的最佳数据库表设计?与另一个相比有哪些优势和劣势?在选择其中一个时我应该考虑哪些要点?

Option 1 - New tables for bundle and bundle item
In addition of above two tables , we add two new tables like
T_ORDER_BUNDLE(pk_order_bundle_id, fk_order_id, ean, quantity, price
T_ORDER_BUNDLE_ITEM (pk_order_bundle_itemid, fk_order_bundle_id, ean, quantity, price)

Option 2 - New table to store bundle and use existing table for item
T_ORDER_BUNDLE(pk_order_bundle_id, fk_order_id, ean, quantity, price
Just add new column like fk_order_bundle_id in T_ORDER_ITEM table.

Option 3 - New table to store sub items of an item
Bundle item can be stored in existing T_ORDER_ITEM table.
New table - T_ORDER_ITEM_SUBITEM(pk_order_item_subitem, fk_order_itemid, ean, quantity, price)

注意:-我们没有任何项目的主表。表 T_ORDER_ITEM 包含所有项目数据和与订单的关系。由于任何商品都可以接受订单,而且我们没有任何固定的待售商品 list 。

最佳答案

您正在处理元素 bundle ,例如, bundle 是一套网 Racket ,由三件元素组成:两个 Racket 和一个球。您已经考虑了三种关于如何在您的数据库中对其进行建模的方法。我提出第四种方法。

你目前拥有的:

  • 项目(item_id, ean, description, list_price)
  • 订单(order_id、order_no、日期)
  • order_item(order_item_id,order_id,item_id,数量,价格)

这是项目表的样子:

item_id | ean     | description      | list_price--------+---------+------------------+-----------1       | 1234567 | tennis racket    |      50.002       | 2345678 | tennis ball      |       4.00

现在我们需要两件事:网球套装的捆绑元素和元素属于套装的分配。

首先让我们将捆绑项目添加到项目表中:

item_id | ean     | description      | list_price--------+---------+------------------+-----------1       | 1234567 | tennis racket    |      50.002       | 2345678 | tennis ball      |       4.003       | 3456789 | tennis set       |      98.00

套装价格98比套装内容50+50+4=104的总和便宜,这往往是买套装的原因。

现在,我们为关联创建一个关联表,我们可以调用 bundles 或类似的名称。它显示哪个项目包含哪些其他项目以及这些项目的数量。

  • bundle (bundle_item_id、bundle_item_id、数量)

然后让我们用我们的数据填充它:

bundle_item_id | bundled_item_id | amount---------------+-----------------+-------3              | 1               |      23              | 2               |      1

关于mysql - 存储订单项目和项目可以有子项目的不同方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55241598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com