我是一个新手设计一个数据库,我需要一个关于图片表的帮助。
CREATE TABLE LANGUAGE (
id int(10) unsigned not null auto_increment,
LANGUAGE VARCHAR(45),
IMAGE_id INT(10) UNSIGNED NOT NULL,
// some more
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE PRODUCT(
id int(10) unsigned not null auto_increment,
// some more
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE PRODUCT_IMAGE(
PRODUCT_id INT(10) UNSIGNED NOT NULL,
IMAGE_id INT(10) UNSIGNED NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE CATEGORY(
id int(10) unsigned not null auto_increment,
IMAGE_id INT(10) UNSIGNED NOT NULL,
// some more
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
我想创建一个图像表,但我还没有找到正确的方法。
一个产品可能有不止一个图像
每个类别和语言都有一个图像
我想要一个弹性图像表,我可以在网站和应用程序中使用它
我可能需要不同尺寸的图像
所以我设计了这样的东西
CREATE TABLE IMAGE(
id int(10) unsigned not null auto_increment,
extension varchar(5),
file_name varchar(45),
file LONGBLOB,
//some more
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
我是否应该保留一定大小的图像,然后在我的应用程序或网站中调整图像的大小?
2条答案
按热度按时间nbysray51#
把图片放到数据库里不太安全,我不明白你为什么要这么做。。。
c86crjj02#
我建议您不要将图像放入数据库,而是只存储文件路径。我不会详细解释的,因为这一切都说得比我在这里可能更好。
我想让你考虑一下这个答案:用db存储图像-是还是不是?
也可能读到詹姆斯·汉密尔顿的这篇可爱的文章:https://perspectives.mvdirona.com/2008/06/facebook-needle-in-a-haystack-efficient-storage-of-billions-of-photos/
此外,这篇文章在解释flickr.com是如何扩展的过程中对我很有帮助。http://highscalability.com/flickr-architecture
我知道这是不好的做法抛出链接,而不捕捉的本质联系在这里。但其本质归结为:不要在数据库中存储图像。
您可以在图像表中考虑以下内容:
我把它留作varchar,但是如果您的路径长度超过255,或者如果您的路径中有多字节编码的字符,那么您可能需要将其更改为某种形式的文本格式,因为这也会从255中减去。