产品图片的数据库结构
Posted
技术标签:
【中文标题】产品图片的数据库结构【英文标题】: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。 【参考方案1】:实体关系考虑
如果您不在产品之间共享图像(切勿将一张图像用于超过 1 个产品),那么您的关系实际上是一对多的,并且不需要 products_images
联结表。这会将您的模型简化为:
而Images
表中的id_product
将有一个指向Products(id_product)
的外键。这样,当您想从产品中分离所有图像时,您只需运行更新语句:
UPDATE images SET id_product = NULL WHERE id_product = ?
排序考虑
由于您需要保存图像在数据库中的存储顺序,具体取决于您在 Images
表中的列,您可以使用例如 id_image
,如果它被声明为 SERIAL
(自动递增整数值)。作为 PostgreSQL 中的经验法则(没有聚集索引),请记住,如果您需要对输出进行排序,则需要自己在末尾进行(例如:添加 ORDER BY id_image
)。
【讨论】:
以上是关于产品图片的数据库结构的主要内容,如果未能解决你的问题,请参考以下文章