了解我的数据库后,在我的应用程序中的某个时刻,用户将能够上传一张(或多张照片)。我的朋友告诉我,使用文件名比使用一团文本更好。我应该为此使用 varchar 还是 varbinary?
此外,如果用户要上传更多图片(假设最大值为 10),最好为图片创建一个表并创建一个连接表,例如 userspictures,还是将所有图片存储在一个字符串中会更好用逗号或类似的东西分隔?
非常感谢您的帮助。
了解我的数据库后,在我的应用程序中的某个时刻,用户将能够上传一张(或多张照片)。我的朋友告诉我,使用文件名比使用一团文本更好。我应该为此使用 varchar 还是 varbinary?
此外,如果用户要上传更多图片(假设最大值为 10),最好为图片创建一个表并创建一个连接表,例如 userspictures,还是将所有图片存储在一个字符串中会更好用逗号或类似的东西分隔?
非常感谢您的帮助。
正如您的朋友所说,最好只将文件名存储在数据库中。我会建议VARCHAR(255)
。
我真的建议您为多个文件创建另一个表:
CREATE TABLE photos (
id INTEGER UNSIGNED AUTO_INCREMENT,
user_id INTEGER UNSIGNED,
filename VARCHAR(255) UNIQUE NOT NULL,
PRIMARY KEY(id)
);
SELECT id, filename FROM photos WHERE user_id = [user_id]
将所有图片存储在逗号分隔的字符串中将违反第一范式,这可能导致查询效率低下。您必须将数据简化为原子形式,因此在这种情况下,请始终形成一个单独的表来存储各个数据项。
您应该将数据库中的图像文件名与varchar
数据类型一起使用,而不是blob
因为blob
(二进制大对象)数据类型用于存储大量二进制数据。将图像保存在服务器上并将图像名称传递给数据库。您为多个文件创建另一个表,这很好。