MySQL 附加产品

MySQL product extra's

我正在使用 MySQL 数据库构建 Web 应用程序。用户可以订购产品,但是对于这些产品,可以将许多额外的功能添加到用户想要的产品中。示例:user1 => order: product1 + extra 1,2,3。 User2 => order: product1 + extra 1. User3 => order: product1 + no extras.

我目前正在努力在 MySQL 中正确地获得它...

有任何评论或提示可以正确完成此操作吗?

您可以尝试在所有表之间加入,例如:

SELECT *
FROM Order o LEFT JOIN Orderdetail od
ON o.orderID = od.oderID
LEFT JOIN products p
ON od.productID = p.productID
LEFT JOIN extra e
ON e.extraID = p.productsExtra

N.B。您的字段 productsExtra 是 smallint,大小为 10,而 extraID 是 smallInt 5。您应该重新考虑它们是否共享 primar/foreign 键关系。

为了使其面向未来并遵循 Boyce–Codd 范式 (BCNF),我会像您所做的那样将额外内容放在自己的 table 中,然后使用多对多 table 将 productID 链接到 extraID。这样以后如果你想要更多的附加功能,或者某些产品可以有不同的附加功能,就不会有问题了。

然后您还可以创建另一个多对多 table 连接 orderdetailID 与 extraID 以了解已添加到每个产品的内容。