【问题标题】:How to plan database for products with different update frequencies如何为不同更新频率的产品规划数据库
【发布时间】:2014-04-04 07:23:20
【问题描述】:

我们正在建立一个电子商务网站。我们有 10-50 种产品要出售,但我们的用户也可以出售他们自己的东西。并且要求我们所有自己的产品和我们用户的产品都来自相同的买家购买流程。

我的问题是我们的产品有无限库存,但用户的产品可能会有限制。

所以问题是我如何才能摆脱将所有这些产品存放在同一张桌子上的痛苦。 我的意思是,用户可能有一个库存数量为 1 的产品,并且该产品记录在 1 次销售后将无用。

这是我到目前为止的设计的简要说明

地址(AddressId[PK]) 订单(OrderId[PK], AddressId[FK]) OrderLines(OrderLineId[PK ], OrderId[FK], ProductId[FK]) > Products(ProductId[PK]) ProductPrices(ProductPriceId[PK], CurrencyId[FK], ProductId[FK] ]) > 货币(CurrencyId[PK])

根据销售地点的不同,产品可能有多种价格。

所以我应该为不同的目的划分产品表。比如说;

  • 二手产品,
  • 产品,
  • 企业产品。

(如果是这样,我怎样才能做到这一点?)

所以不断增长的二手产品表不会影响我的核心产品表(Products)。

或者我是不是想多了,应该把所有产品都存储到同一张表中。

附言。这些产品产品没有任何区别

【问题讨论】:

    标签: database-design


    【解决方案1】:

    因为正如您所说,产品之间没有区别,因此无需单独建模。有一个 Product 表将包含您的所有产品,但有一个名为 ProductCategory 的单独表,它将告诉您在 Product 表中拥有哪种类型的产品。我将建模如下:

    CREATE TABLE Products
    (
        ProductId int PRIMARY KEY,
        ProductCategoryId int, //FK
    
        // Other product attributes
    )
    
    CREATE TABLE ProductCategory
    (
        ProductCategoryId int PRIMARY KEY,
        ProductType,  <choose your own data type>
        ProductCategoryDescription, <choose type>
        // Other product category attributes
    )
    

    【讨论】:

    • 是的,但是大量的二手产品行数不是会不必要地减少我的主要产品的查询时间吗?我们不会创造太多的主要产品,我们期待大量的其他产品。因此,当我尝试查询有关主要产品的信息时,如果将其他产品分开,会不会更快?
    • 并非如此。例如,如果您有一个名为“Main”的类别,并且您在 ProductCategoryId 列上有一个 Products 索引,那么您将以最佳方式获得结果。
    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多