如何为特定类别的产品或特定产品建模 Sale/Discount 价格?
How to model a Sale/Discount price for a Specific Category of a Product or a Specific Product?
这是我的产品、类别和销售(或折扣)的数据库模型
我正在建立一个电子商务网站。我卖手机phone、电视、衣服、鞋子等不同的产品,几乎和亚马逊一样。
我对销售的建模是否正确 table?我想让一切都充满活力。我有四个问题。
第一个问题:
首先,我想为特定产品进行销售(我想 select 它就像前端的复选框一样)一种或多种产品,并且具有特定的日期时间段,例如 10 月 1 日到 9 月 1 日(我会设置折扣百分比的人)。例如:我有一个2020版新发布的phone,电视,鞋子,衣服,帽子。以及 2020 年的第一个产品或任何随机产品,但仅限于每个类别。我该怎么做?
第二个问题:如何销售特定类别的所有产品,日期范围为该类别,例如 10 月 1 日至
9 月 1 日? (又是我设定打折多少的百分比?)
第三个问题:我如何销售所有products/category?就像 2020 年底前至少两周的年终促销
第四题:
我如何模拟我所有的问题?我的任何问题是否做出了正确的数据库设计?根据图片
顺便说一句,我正在使用 mongo db、Node.js、Express 和 React,简称 MERN Stack。
词汇:
- TABLE(#column) <-- 列是 TABLE
的外键
- TABLE(列) <-- 列是主键
有很多问题,还有很多东西需要复习,所以我会一步一步来:
1.给定的模型在很多方面看起来都是错误的:
- 每个实体都必须以单数形式命名为:PRODUCT(而不是 PRODUCTS)、SALE(而不是 SALES)。这是因为您代表每个 table 行的一个实体。
- SALE(id, #CATEGORY, #PRODUCT) 如果您可以对整个类别的产品进行销售,或者单一产品。那么你应该有以下 table : SALE_CATEGORY(#id_sale, #CATEGORY);SALE_PRODUCT( #id_sale, #PRODUCT);促销(id,金额,start_date,end_date)。事实上 SALE(id, #CATEGORY, #PRODUCT) 并没有错,多亏了 surrogate key (id)。但如果这样做,您将拥有两列(#CATEGORY 或#PRODUCT)之一,这对每个实体都是空的。即使您使用的是 NoSql,维护起来也会很麻烦。
- 如果一种产品一次依赖于一个库存,那么您在 PRODUCT 实体上使用外键的方法是正确的。但是您是否考虑过同一产品可以存储在多个库存中这一事实?就像您在一个库存中获得了一定数量的产品,而在另一个库存中获得了一定数量的产品?如果这可能发生,那么你应该有一个 PRODUCT_INVENTORY(#id_product, #id_inventory, qte).
- 我认为这只是一个错误,但是 PRODUCT table
中有两个 price
属性
2。你的第一个问题
- 我想我之前在 1.2 中已经回答过这个问题。
3。你的第二个问题
- 同上,1.2已经给出答案
4。你的第三个问题
- 我想您已经猜到这总是一样的,因为您可以为每次销售创建一个新条目,然后您决定开始日期和结束日期...
5.你的第四个问题
- 我建议您应用我建议的更改,然后编辑您的 post 以查看新模型。
编辑
不再需要 Product table 上的外键 inventory
,因为此关系已由 product
外键表示Inventory
table 内。
但是你的实体 Inventory
对我来说不是很清楚。
什么是库存?它是仓库中的特定位置吗?这在 e-commerce 中是有意义的,您通常将产品存储在仓库中,然后,当客户订购产品时,您从这个地方撤回订购的产品数量。
向您展示我在标准图表 ERD (https://en.wikipedia.org/wiki/Entity–relationship_model) 上的想法:
这是我的产品、类别和销售(或折扣)的数据库模型
我正在建立一个电子商务网站。我卖手机phone、电视、衣服、鞋子等不同的产品,几乎和亚马逊一样。
我对销售的建模是否正确 table?我想让一切都充满活力。我有四个问题。
第一个问题: 首先,我想为特定产品进行销售(我想 select 它就像前端的复选框一样)一种或多种产品,并且具有特定的日期时间段,例如 10 月 1 日到 9 月 1 日(我会设置折扣百分比的人)。例如:我有一个2020版新发布的phone,电视,鞋子,衣服,帽子。以及 2020 年的第一个产品或任何随机产品,但仅限于每个类别。我该怎么做?
第二个问题:如何销售特定类别的所有产品,日期范围为该类别,例如 10 月 1 日至 9 月 1 日? (又是我设定打折多少的百分比?)
第三个问题:我如何销售所有products/category?就像 2020 年底前至少两周的年终促销
第四题: 我如何模拟我所有的问题?我的任何问题是否做出了正确的数据库设计?根据图片
顺便说一句,我正在使用 mongo db、Node.js、Express 和 React,简称 MERN Stack。
词汇:
- TABLE(#column) <-- 列是 TABLE 的外键
- TABLE(列) <-- 列是主键
有很多问题,还有很多东西需要复习,所以我会一步一步来:
1.给定的模型在很多方面看起来都是错误的:
- 每个实体都必须以单数形式命名为:PRODUCT(而不是 PRODUCTS)、SALE(而不是 SALES)。这是因为您代表每个 table 行的一个实体。
- SALE(id, #CATEGORY, #PRODUCT) 如果您可以对整个类别的产品进行销售,或者单一产品。那么你应该有以下 table : SALE_CATEGORY(#id_sale, #CATEGORY);SALE_PRODUCT( #id_sale, #PRODUCT);促销(id,金额,start_date,end_date)。事实上 SALE(id, #CATEGORY, #PRODUCT) 并没有错,多亏了 surrogate key (id)。但如果这样做,您将拥有两列(#CATEGORY 或#PRODUCT)之一,这对每个实体都是空的。即使您使用的是 NoSql,维护起来也会很麻烦。
- 如果一种产品一次依赖于一个库存,那么您在 PRODUCT 实体上使用外键的方法是正确的。但是您是否考虑过同一产品可以存储在多个库存中这一事实?就像您在一个库存中获得了一定数量的产品,而在另一个库存中获得了一定数量的产品?如果这可能发生,那么你应该有一个 PRODUCT_INVENTORY(#id_product, #id_inventory, qte).
- 我认为这只是一个错误,但是 PRODUCT table 中有两个
price
属性
2。你的第一个问题
- 我想我之前在 1.2 中已经回答过这个问题。
3。你的第二个问题
- 同上,1.2已经给出答案
4。你的第三个问题
- 我想您已经猜到这总是一样的,因为您可以为每次销售创建一个新条目,然后您决定开始日期和结束日期...
5.你的第四个问题
- 我建议您应用我建议的更改,然后编辑您的 post 以查看新模型。
编辑
不再需要 Product table 上的外键 inventory
,因为此关系已由 product
外键表示Inventory
table 内。
但是你的实体 Inventory
对我来说不是很清楚。
什么是库存?它是仓库中的特定位置吗?这在 e-commerce 中是有意义的,您通常将产品存储在仓库中,然后,当客户订购产品时,您从这个地方撤回订购的产品数量。
向您展示我在标准图表 ERD (https://en.wikipedia.org/wiki/Entity–relationship_model) 上的想法: