在数据库中保留产品“库存水平”信息的最佳方式是啥?

Posted

技术标签:

【中文标题】在数据库中保留产品“库存水平”信息的最佳方式是啥?【英文标题】:What is the best way to keep info on 'stock levels' for a product in a database?在数据库中保留产品“库存水平”信息的最佳方式是什么? 【发布时间】:2020-01-22 06:07:23 【问题描述】:

我的数据库名为“购物”,它包含以下表格:

products (product_id, product_name, price, category_id)
product_category (category_id, cagtegory_name)
customers (customer_id, username, pass, fname, lname, email)
orders (order_id, order_date, product_id, customer_id)

现在我想考虑记录每种产品的库存水平。

即 product_id = 1 product_name = MICROSOFT 限量版 Gears 5 Xbox One X、铁拳 7 和 Project Cars 2 捆绑包 价格 = 449.99 类别 ID = 2 stock _id = 1(在 product_stock 表中引用 stock_id):-/ ?

我考虑了三种在产品上存储“库存信息”的方法。

方法 a) 在 products 表中添加一个名为“stock_level”的新列,简单且有效,因为在这种情况下,库存水平完全取决于其主键。

方法 b) 创建一个名为“product_stock”的新表,其中包含“stock_id 和 stock_level”列。

这里的逻辑出现了混乱。

由于某种原因,使用方法 b 后,我将 product_stock 表 (stock_id) 的主键也设为外键,引用 products 表为:

product_stock.stock_id = products.product_id

product_stock.stock_id 1 REFERENCES BACK TO products.product_id 1
product_stock.stock_id 2 REFERENCES BACK TO products.product_id 2 

等等等等

我想到的第三种方法是将 stock_id 键保留为主键,并将链接切断回 Products 表。然后在 products 中,创建一个名为 stock_id 的列,它是一个引用 product_stock 表中 stock_id 的 FK。

这三种方法中哪一种看起来最好?出于某种原因,我很遗憾删除了列和设置的关系,这给了我在方法 b 中讨论的行为。

我喜欢方法 b 的原因是,如果您将鼠标悬停在 product_stock 中的每个 stock_id 键上,您可以立即在 products 表 (phpmyadmin) 中看到它与什么产品相关。

对这些人有什么看法?

参考问题并阅读。

不需要,全部在 phpmyadmin 上,在这种情况下不需要。

参考问题。

【问题讨论】:

LOL @ product_stock 表具有 MYISAM 引擎... 我在页面上搜索了“MYISAM”,但它只出现在您的评论中。 【参考方案1】:

据您解释,每种产品只有且只有一个库存价值。最简单的方法是将该信息直接存储在产品表中:选项 a) 在您的问题中。

例如,如果您有多家商店并且需要跟踪每家商店中每种产品的库存水平,则使用单独的表格会很有用。然后,您将创建一个单独的表,其中一列存储产品 ID,另一列存储商店 ID,第三列存储该特定库存中该特定产品的级别。

【讨论】:

以上是关于在数据库中保留产品“库存水平”信息的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Shop 中的 Woocommerce 产品循环中放置自定义徽章的最佳方式是啥

为 Windows 服务保留用户可编辑设置的最佳方式是啥?

智能|跟着美的集团学习VMI正确的打开方式

为 ASP.NET MVC 项目设置数据访问的最佳方式是啥?

在我们的应用程序中保留/验证用户登录凭据的最佳方法是啥

在线程之间传递信息的最佳方式是啥?