在数据库中保留产品“库存水平”信息的最佳方式是啥?
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 产品循环中放置自定义徽章的最佳方式是啥