【问题标题】:Database structure of product images产品图片的数据库结构
【发布时间】:2019-01-02 08:17:06
【问题描述】:

目前我有 3 个表:产品、图像、products_images。 所以,基本上我将产品的图像存储在“products_images”表中。 更新产品时,我从“products_images”表中删除与该产品相关的所有行,并添加新行。 另外,我需要保存订单,现在订单是它们在数据库中的存储方式。

这是正确的方法吗?或者也许有更好的数据库结构来存储产品的图像?

【问题讨论】:

  • 您可以在 product_images 表中保留一列,一旦您添加或删除任何内容,请检查表中是否存在产品和图像之间的链接,然后根据需要将该位更新为 0 或 1。对于新记录,添加一行默认位为 isDeleted 0。
  • 阅读GBN的answer here

标签: postgresql


【解决方案1】:

实体关系考虑

如果您不在产品之间共享图像(切勿将一张图像用于超过 1 个产品),那么您的关系实际上是一对多的,并且不需要 products_images 联结表。这会将您的模型简化为:

  • 产品(id_product,...)
  • 图片(id_image, ..., id_product)

Images 表中的id_product 将有一个指向Products(id_product) 的外键。这样,当您想从产品中分离所有图像时,您只需运行更新语句:

UPDATE images SET id_product = NULL WHERE id_product = ?

排序考虑

由于您需要保存图像在数据库中的存储顺序,具体取决于您在 Images 表中的列,您可以使用例如 id_image,如果它被声明为 SERIAL(自动递增整数值)。作为 PostgreSQL 中的经验法则(没有聚集索引),请记住,如果您需要对输出进行排序,则需要自己在末尾进行(例如:添加 ORDER BY id_image)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多