【问题标题】:Best approach to our database design我们数据库设计的最佳方法
【发布时间】:2011-02-27 11:53:20
【问题描述】:

我们有一个电子商务应用程序的数据库,我们正在使用 JPA 2.0。

我们有这三个表:products(id, code, name, description, price);已售产品(id,数量,product_id);订单(id、日期、状态、评论)。

这是我们的问题:当我们从 products 表中删除一个产品时,我们在 soldproducts 中遇到了一个约束问题,因为 product_id 列引用了一个产品。我们想删除产品,但我们想访问产品详细信息。

我们想在产品表中添加一个额外的列,比如可用性,它告诉我们产品是否可用。使用这种方法,如果我们从应用程序中删除一个产品并且该产品不是从已售产品中引用的,我们只是将这个额外的列更新为不可用,我们不会删除它。否则,我们从表中删除产品。但我们不确定这是否是最好的方法。

您认为,对于这种特定情况,最好的设计方法是什么?

【问题讨论】:

    标签: java database database-design jpa-2.0


    【解决方案1】:

    在我看来,最好的设计方法是不删除产品行,而是将其标记为已删除。您需要在表中添加 deletedactive 布尔列。

    这是我看到/使用过的大多数系统在这种情况下通常会做的事情。当然,您每次都需要通过active(不是deleted)产品过滤您的products 查询。但这是不丢失历史数据引用的唯一方法。

    【讨论】:

    • 同意。同样这样,您的销售报告也不会乱七八糟。
    • 有一个额外的列(ACTIVE)有标志 Y/N 是否考虑报告的行 +1。
    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2016-10-10
    • 2010-12-08
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多