Mysql IMAGE表设计

标签 mysql database image

我是设计数据库的新手,我需要有关图片表的帮助。

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;

我应该保留图像的某些尺寸,然后在我的应用程序或网站中调整图像大小吗?

最佳答案

我建议您不要将图像放入数据库,而只存储文件路径。我不会详细解释它,因为之前已经说过的比我在这里所能说的要好。

我希望您考虑这个答案: Storing Images in DB - Yea or Nay?

并且可能会阅读詹姆斯·汉密尔顿的这篇可爱的文章:https://perspectives.mvdirona.com/2008/06/facebook-needle-in-a-haystack-efficient-storage-of-billions-of-photos/

此外,这篇文章对我很有帮助,因为它解释了 flickr.com 是如何扩展的。 http://highscalability.com/flickr-architecture

我知道在没有捕获链接本质的情况下抛出链接不是一个好习惯。但本质可以归结为:不要将图像存储在数据库中。

您可以考虑将其用于图像表:

CREATE TABLE IMAGE(
    id int(10) unsigned not null auto_increment,
    image_location varchar(255),
    //some more
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我将其保留为 varchar,但如果您的路径长度超过 255,或者路径中的字符将被多字节编码,则您可能需要将其更改为某种形式的文本格式,因为这将也从 255 中减去。

关于Mysql IMAGE表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380729/

相关文章:

php - 在php中从头开始创建带有文本的透明png

mysql - 安装 OTRS5 时出现 SQL 错误

MySQL:从给定的 `Date`对象查找一年中的第一个和最后一个日期

mysql - 固定的! JTable 仅显示 409 行中的 7 行

java - 查找图像中的隐藏文件(视频文件)

python - Numpy 数组作为图像、图像 channel

mysql - 按上午和下午时间订购

database - Oracle 执行计划改变

php - 将数据从一列移动到另一列 mysql

php - MYSQL排序和限制使用某一行并选择上一行和下一行