2010-11-09 39 views
1

假設兩個人擁有相同的圖像名稱,或者同一用戶兩次上傳同一圖像,在數據庫中唯一存儲和圖像名稱的最佳方式是什麼?我如何管理這樣的scenerios,以便當我想執行更新,刪除等操作時,我不會最終刪除這兩個圖像或全部。我的數據庫是MySQL。將圖像存儲在mysql數據庫中

編輯 - 好了,現在由於某種原因,我會產生所有的圖像都獨特的時間戳在本地主機上運行,​​但是當我把它在線這是行不通的,我不能刪除它,但它脫機運行良好。

謝謝 @cybeormin

回答

1

任何表中的我會建議一個ID列是自動增量,並設置爲一次場。這樣所有行都是唯一的,儘管用戶有兩個同名的圖像。

0

在圖像上添加一個refcount。當你想刪除圖像時,只需減少refcount。當引用計數達到0時,您將刪除真實的行(或者使用cron作業將其刪除)。

0

我會放棄原始圖像名稱,爲每個圖像提供一個唯一的ID並將原始名稱存儲在數據庫中。

+0

我該怎麼辦? – Cyberomin 2010-11-09 12:32:19

+0

上傳文件到一個臨時目錄,用「file_id,user_id,文件名」在數據庫中插入一行,移動文件到yourFolder/$ file_id.jpg 不知何故...... – Simon 2010-11-09 12:35:04

+0

好吧,現在由於某種原因,我產生了一個獨特的時間戳所有圖像的一切工作本地主機,但是當我把它聯機它不工作,我不能刪除它,但它脫機工作很好。 – Cyberomin 2010-11-09 12:38:57

0

在你的MySQL數據庫,創建一個表圖像上載,創建一個ID列設置爲AUTO_INCREMENTINT(整數),並使其成爲PKEY(主密鑰)。

這意味着您的ID始終會在添加新內容時自動創建並生成,並且始終是唯一的,無論相同圖像是否添加了任何次數。

其他字段可以捕獲其他圖像信息(文件名,'給定'名稱,文件大小,文件類型和圖像本身的BLOB字段),然後你甚至可以添加一個僞裝ID,綜合因素......你應該認爲合適。

0

將唯一密鑰(主鍵)與每個條目相關聯。例如:

fileId | file_name | file 

並將fileId設置爲自動遞增和主鍵。然後你可以在你的「用戶」表上(如果你有類似的東西),只需將fileId引用爲外鍵即可。

userId | ... | fileId | ... 

然後,如果您需要刪除文件,只需使用fileId找到要刪除的文件即可。