产品图片的数据库结构

时间:2019-01-02 08:17:07

标签: postgresql

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

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

1 个答案:

答案 0 :(得分:0)

考虑实体关系

如果您不共享产品之间的图像(不要将一个图像用于一种以上的产品),那么您的关系实际上是一对多的,则不需要products_images连接表。这样可以将您的模型简化为:

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

并且id_product表中的Images将具有指向Products(id_product)的外键。这样,当您要从产品中分离所有图像时,只需运行一条update语句:

UPDATE images SET id_product = NULL WHERE id_product = ?

排序注意事项

由于您需要保存图像在数据库中的存储顺序,因此取决于Images表中的列,例如,如果声明为{{1 }}(自动递增的整数值)。作为PostgreSQL(没有聚簇索引)的经验法则,请记住,如果您需要对输出进行排序,则需要自己完成(例如:添加id_image)。