【问题标题】:MySQL foreign key constraints not working with my database designMySQL 外键约束不适用于我的数据库设计
【发布时间】:2020-04-04 23:49:07
【问题描述】:

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

产品包含:
- 身份证
- SKU(产品代码)
- 网址
- 店铺名称
- 价钱

我有另一张桌子叫做“productshop”。此处,该表包含以下值:
- 身份(PK)
- SKU(“产品”表中产品的外键)
- 店铺显示名称

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

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

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

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

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

【问题讨论】:

    标签: mysql hibernate jpa orm


    【解决方案1】:

    您正在读取 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

    希望这会有所帮助!

    【讨论】:

    • 感谢您的评论,我在产品表中添加了一行“可用”。当产品不再在 XML 文件中时,available 设置为 false,直到它稍后重新出现在 XML 文件中。我认为这就是您对版本行的意思吗? :)
    • 正确!很高兴我能帮助你! :)
    猜你喜欢
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    相关资源
    最近更新 更多