嵌入图像顺序

时间:2018-02-22 13:37:40

标签: sql postgresql

让我们考虑一些电子商务网站产品的简单表格

product (id SERIAL PRIMARY KEY, title TEXT, description TEXT, price REAL)

和嵌入图像的单独表格

product_images (id SERIAL PRIMARY KEY, product_id INTEGER, image_url VARCHAR(256))

我想设置在网站上显示这些图片的具体顺序。我想出的第一件事是:添加数字列"位置"到" product_images"它表示该顺序的位置(例如,position = 2表示图像显示第二个)。但在这种情况下,删除某些图像时可能会丢失数据完整性。还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

如上所述,您可以在 product_images 表中添加位置列。

然后你有多个解决方案:

  1. 您始终在此列中选择an order by子句,因此即使位置之间存在间隙,图像也会在前端进行良好排序。在你的后台,让用户设置他想要的任何整数。

  2. 您希望始终拥有连续的位置编号,因此您必须创建一个trigger,将所有位置降低1,以便删除图像的所有上级位置。这种情况将迫使您考虑现有位置的更新,删除和新图像。

答案 1 :(得分:0)

您可以形成图像的层次结构而不是位置,例如添加parent_image_id的附加列(对于第一个位置它将为null),对于每个产品,将存在不同的图像层次结构。 在呈现时,按照父子层次结构调用,这将解决您的数据完整性问题。 ref this