2016-09-15 77 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