iT邦幫忙

1

[已解決] 請益,每一筆商品資料內的圖片,儲存在資料庫內方式

  • 分享至 

  • xImage

練習寫後端,想問
一筆商品紀錄裡可能會有多張照片,照片會由後端存在指定目錄中,再分類儲存
在思考DB怎麼設計好?
商品照片只會出現在該商品內,不會有不同商品用同一張照片,或其他地方用到

  1. 在商品資料表,該商品的photo欄位內就存多筆連結

product_table

id photo_path
1 image\1.jpg,image\2.jpg
這樣寫,在新增商品時是比較簡單
  1. 另外建一個表,存id及檔案路徑。該筆商品的photo欄位就紀錄那些id陣列

photo_table

id path
1 image\1.jpg
2 image\2.jpg

product_table

id photo_id
1 1,2

還是有其他更好的方式?沒什麼經驗

謝謝,看了大家建議,我再思考一下怎麼做對我案例比較合適

fillano iT邦超人 1 級 ‧ 2021-11-14 10:43:18 檢舉
product對photo是1:n,所以你應該把photo_table改成path與product的關連(path透過外鍵關連到product),這樣你用join就很好處理。
如果商品圖片不需要做 SEO,弄資料表沒有意義,你在後端要寫的是當建立商品時上傳圖片的命名規則以及存放路徑,例如 A001 商品,就把圖片放到 商品\A001,而命名規則就是 商品號-循序編號,那到了前抬,只要去搜索這個目錄的所有圖片,依序列出就好,根本不需要在資料庫寫一堆有的沒的程序或資料表
vicentli iT邦研究生 4 級 ‧ 2021-11-17 00:35:28 檢舉
謝謝,看了大家建議,我再思考一下怎麼做對我案例及未來維護比較合適,感謝各位
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
Felix
iT邦研究生 2 級 ‧ 2021-11-14 01:53:04

如果能達到相同目的,資料越少絕對比較好,畢竟時間真的很寶貴。

如果您認同,第一個就是最適合的方式,因為解析字串不會比查詢資料庫來得久。

當然,必須要能達到相同目的才適用。

2
dawei530
iT邦新手 5 級 ‧ 2021-11-14 22:29:55

第一種寫法比較死,基本上沒彈性,可是很直覺。基本上,不想太複雜就這樣簡單做。但是,碰到數量的問題,例如:這個位置的圖要輪播,可能會有數張圖。這時候,這樣寫會很困擾,欄位得增加,數量還要先設上限。

如果要彈性的話,就要用你的第二種方法。不過,你列出來的少了一點東西:分類。因為你的產品圖不會只有一個地方有,會有列表的縮圖、內文的大圖(可能好幾張)。也許你會有行銷頁,圖檔尺寸又不同。這時候,應該再加上分類的表格。

photo_category
category_id(PK), path, width, height, quantity

photos
photo_id(PK), category_id(FK), file_name, product_id(FK)

product
product_id(PK), product_name
說明:PK=primary key, FK=foreign key

這種方式你可以把每個位置定義好,做個介面專門管理圖檔。

再延伸,如果你要把整個網站的圖都用這個表格處理的話,要怎麼做?像是:文章的圖。可以思考看看。

1
純真的人
iT邦大師 1 級 ‧ 2021-11-15 09:58:33

我是選第二種方儲存~
畢竟有些產品圖片有優先排序的觀看問題@@..

1.有時候要調整順序~方便改
2.或者該張圖片有問題~要更換
3.或者圖片授權有問題先暫時或指定會員才能看
4.或者限定期間才顯示出來

我要發表回答

立即登入回答