2016-09-15 78 views
0

我有一個網頁,用戶可以在上面上傳帶有圖像的文章。用戶可以用他們的文章上傳圖片的數量沒有限制。 MySQL數據庫中的每一行代表許多文章中的一篇。什麼是存儲所有這些圖像的最佳方式。我知道我會使用BLOBS/LONGBLOBS,但是如果我無法控制用戶上傳的圖片數量,我不能只爲不同的圖片插入50列,並希望他們上傳的圖片少於50個。最佳方式是什麼?MYSQL存儲多個圖像

回答

2

要做到這一點,最好的方法是創建圖像的表引用的文章,因此你會留下這樣的數據庫:

Database Diagram

Images表創建腳本會像這樣的:

CREATE TABLE `Images` (
    `ImageID` bigint NOT NULL AUTO_INCREMENT, 
    `ArticleID` bigint NOT NULL, 
    `Image` longblob NOT NULL, 
    PRIMARY KEY (`ImageID`) 
); 
ALTER TABLE `Images` ADD CONSTRAINT `FK_Images` FOREIGN KEY (`ArticleID`) REFERENCES `Articles`(`ArticleID`); 

現在,所有你需要做的就是用它屬於ArticleID圖像插入Images在一起。

+0

很好的答案。雖然我想指出,爲了OP的緣故,將圖像存儲爲blob不如將相對路徑存儲到文件系統上存在的位置那樣高效。對於查詢數百或數千千字節的數據庫是一種效率低下的結構原始圖像數據在n個圖像上,並且與僅獲取所述圖像的路徑列表相比非常慢。 – skrilled