Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL-文件名的字段类型?_Php_Mysql_Database_Database Design - Fatal编程技术网

Php MYSQL-文件名的字段类型?

Php MYSQL-文件名的字段类型?,php,mysql,database,database-design,Php,Mysql,Database,Database Design,为了了解我的数据库,在我的应用程序中的某个点上,用户可以上传一张(或多张)照片。我的朋友告诉我,使用文件名比使用一堆文本要好。我应该使用varchar还是varbinary 此外,如果用户要上传更多图片(假设最大值为10),那么为图片创建一个表和一个连接表(如userspictures)会更好吗?还是最好将所有图片存储在一个字符串中,并用逗号或类似的符号分隔 非常感谢您的帮助。正如您的朋友所说,最好只在数据库中存储文件名。 我建议VARCHAR(255) 我建议您为多个文件创建另一个表: 创建表

为了了解我的数据库,在我的应用程序中的某个点上,用户可以上传一张(或多张)照片。我的朋友告诉我,使用文件名比使用一堆文本要好。我应该使用varchar还是varbinary

此外,如果用户要上传更多图片(假设最大值为10),那么为图片创建一个表和一个连接表(如userspictures)会更好吗?还是最好将所有图片存储在一个字符串中,并用逗号或类似的符号分隔


非常感谢您的帮助。

正如您的朋友所说,最好只在数据库中存储文件名。 我建议
VARCHAR(255)

我建议您为多个文件创建另一个表:

创建表格照片(
id整数无符号自动递增,
用户id为无符号整数,
filename VARCHAR(255)UNIQUE不为空,
主键(id)
);
从照片中选择id,filename,其中user\u id=[user\u id]

将所有图片存储在逗号分隔的字符串中会违反第一个标准格式,这会导致查询效率低下。您必须将数据简化为原子形式,因此在这种情况下,始终形成一个单独的表来存储单个数据项。

您应该在数据库中使用图像文件名和
varchar
数据类型,而不是
blob
,因为
blob
(二进制大对象)数据类型用于存储大量二进制数据。将图像保存在服务器上,并将图像名称传递给数据库。您可以为多个文件创建另一个表,这很好。

谢谢您,我非常感谢您的快速回答!顺便说一句,我还在主键中添加了未签名和自动增量。不客气。如果你觉得我的答案有用,你可以把它标为接受。更多信息请参见这里:是的,谢谢你的回答。我想我需要重读规范化。谢谢你,我感谢你的快速回复:)@cupidvogel:我想对你说一句话。可能是重复的