数据库设计模式:多个图片怎么和商品关联

kaipizhe
  • 1.2k

比如发布商品,标题,单价,属性... 还有一个产品图片,而产品图片一般是选择图片后就上传了图片,这时候产品应该入库啦,这时候还不知道这个商品ID,这样怎么关联商品?

如果是提交后修改,这时候知道了商品ID。在上传图片的时候就能关联商品ID

多图,不知道怎么做

回复
阅读 5.7k
5 个回答

1.将上传图片服务独立出来,与具体业务无关,只返回图片的URL
2.上传完图片后,将图片的URL写入input hidden域,和创建或更新表单一起提交,在此做保存或更新操作
3.数据库表结构设计参考楼上的

关于“多个图片”这一点,我想问两个问题:

(1)图片数量是不是不多?
(2)是否需要一起得到所有图片的文件名?

注意第二点不是说非得把所有图片立刻全部显示出来。(例如网上商城的APP,商品一点开必然只下载显示第一张图片,左右划动时其他图片要转圈圈等下载。但所有图片的URL肯定是立刻全都知道的,不可能划动时先去查询其他图片的网址,再去下载图片内容,白白浪费一次http请求)

如果这两个问题的答案都是“是”,则建议根本不要建立关联表,而是用一个json格式*字段,把所有图片的文件名做成个数组塞在一起就行,非常的简单有效。同时通过数组格式还可以实现最为简便可行,无需任何代码的排序功能。

*:pgsql等有原生json字段的可以用,mysql等无原生json字段的用text等效之。当然也可不用json,例如用|等特殊符号分开也很简单易行。

图片上传后把图片的地址和ID存入一个表

然后把ID和产品的ID关联起来

表结构大概如下:
商品表
ID | ...

关联表
goods_id | image_id

图片表
id | image_url

或者减少一个表直接在关联表里面存图片 url。那样灵活性会差一些。

1、将准备加图的商品id,商品名称导出。
2、将图片命名 商品id.jpg这种格式。
3、图片上传之后的存储到它表,字段为 id,商品id,图片地址;
其中商品id明显可以从图片名字中获取到。

类似与这种简单的sql就能关联上咯。

select ... from t_product as A,t_pic as B where A.product_id = B.product_id
你知道吗?

宣传栏