首页 > 解决方案 > MySQL 外键约束不适用于我的数据库设计

问题描述

我正在使用从其他网站导入的 XML 来制作产品价格比较网站。导入的产品进入名为“产品”的表中。

产品包含:
- id
- SKU(产品代码)
- url
- shopName
- price

我还有另一个名为“productshop”的表。此处,该表包含以下值:
- id (PK)
- SKU(“产品”表中产品的外键)
- 商店显示名称

工作原理:管理员手动添加productShop 条目。管理员输入商店的显示名称以及该商店使用的 SKU 代码。这样,该产品就被添加到网站上。

这一切都很好,但我遇到了以下问题:

当产品表更新时,商店可能会暂时缺货。这意味着它不再出现在我从他们那里收到的 XML 文件中。我也不想立即删除“productshop”条目,因为该项目可能再次可用,然后我必须手动再次添加它。

所以基本上:我希望产品商店能够引用可能不存在的产品。当 productShop 引用产品时,现在无法删除该产品。

这是糟糕的数据库设计吗?我应该禁用外键约束还是这只是一个非常糟糕的主意?

标签: mysqlhibernatejpaorm

解决方案


您正在阅读 XML 文件,将它们添加到表中,然后当客户进行购买过程时,产品可能不再在网站上可用,因此也无法在 XML 上使用?

如果是这样,我相信您需要使用多线程在网站上工作,以检查该项目是否仍然可用,如果是,则继续销售。

另一种情况,不确定您使用 XML 更新数据库表的频率,但您可以向数据库添加行版本并检查是否发生更改,如果发生更改,则需要检查您是否仍然有可用的产品。

行版本 MySQL: https ://forums.mysql.com/read.php?60,367176,367176

行版本 SQL: https ://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-ver15

希望这可以帮助!


推荐阅读