让我们考虑一些电子商务网站产品的简单表格
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表示图像显示第二个)。但在这种情况下,删除某些图像时可能会丢失数据完整性。还有其他选择吗?
答案 0 :(得分:1)
如上所述,您可以在 product_images 表中添加位置列。
然后你有多个解决方案:
您始终在此列中选择an order by
子句,因此即使位置之间存在间隙,图像也会在前端进行良好排序。在你的后台,让用户设置他想要的任何整数。
您希望始终拥有连续的位置编号,因此您必须创建一个trigger
,将所有位置降低1,以便删除图像的所有上级位置。这种情况将迫使您考虑现有位置的更新,删除和新图像。
答案 1 :(得分:0)
您可以形成图像的层次结构而不是位置,例如添加parent_image_id的附加列(对于第一个位置它将为null),对于每个产品,将存在不同的图像层次结构。 在呈现时,按照父子层次结构调用,这将解决您的数据完整性问题。 ref this