【发布时间】: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”,但它只出现在您的评论中。
标签: mysql key normalization