Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 如何将照片标记为用户的“个人资料图片”?_Php_Mysql_Database Design - Fatal编程技术网

Php 如何将照片标记为用户的“个人资料图片”?

Php 如何将照片标记为用户的“个人资料图片”?,php,mysql,database-design,Php,Mysql,Database Design,我正在构建一个应用程序,每个用户都可以拥有多个配置文件。用户可以为每个配置文件上传多张照片等 文件夹结构类似于 public_html/ upload/ user-123/ profile-199/ profile-321/ images/ 123423.png 我将在每个个人资料和每张照片之间建立一对多的关系,但我试图了解如何将照片标记为特殊照片和用户个人资料照片 我提议的表结构是这样的 id p

我正在构建一个应用程序,每个用户都可以拥有多个配置文件。用户可以为每个配置文件上传多张照片等

文件夹结构类似于

public_html/
upload/
    user-123/
        profile-199/
        profile-321/
            images/
                123423.png
我将在每个个人资料和每张照片之间建立一对多的关系,但我试图了解如何将照片标记为特殊照片和用户个人资料照片

我提议的表结构是这样的

id
profile_id
filename  (or maybe extension only, since filename will most likely just be the primary id for that photo)
profile (boolean field of whether this a profile pic or not)
date_added
我应该如何处理特殊图像,如个人资料图片


编辑:对不起,我不清楚。我希望每个用户能够有多个配置文件,每个配置文件有许多照片。就像Facebook一样,你可以有很多照片,但在任何时候都只能有一张个人资料照片。

这会起作用,但会有一个问题,即多张照片可能会被标记为个人资料照片,除非你特别注意防止


另一种设计是使用一个表,其中包含user_id和special_photo_id列,其中photo_id是photos表中的外键。这有一个稍微不同的问题:现在有可能有一张不属于用户的特殊照片。

您可以在用户表中有一个字段,其中存储了用户名和其他信息,并且有一个profile_id字段init指向profiles表。这样,你就有了一种可能的配置文件,并离开去识别它


想想看,只有当您有一个用户表和一个单独的配置文件表时,它才会起作用。

图像表的外观如何:

id
profile_id
filename    
date_added
并在配置文件表中添加列“profile\u image\u id”?这将是您的特殊图像的id

我想你会有更多的非特殊图像,而不是特殊图像。因此,您建议的字段“profileboolean”在大多数情况下都是0


编辑:我相信@Iznogood也在说同样的话。

在你写这篇文章的时候,我修改了我的答案,并说我可能应该在profile_id和profile上放置一个唯一的索引:@BDuelz:那么对于同一个用户,不能有多个profile=false的行。如果您使用TRUE和NULL,它将起作用,因为即使在具有唯一索引的列中,您也可以有多个NULL。目前,我有它,所以每个配置文件都可以有许多照片,如果我在profiles表中添加了photo_id列,那么这意味着每个配置文件只能有1@Mark. 哎呀。事情发展得很快,当你把照片写为特别照片,用户档案照片也暗示只有一张这样的特别照片时,我完全忘记了这一点。有多少张特别的照片?对不起,我不明白。你是说在用户表中添加一个profile_id吗?如果是这样的话,那么这不意味着每个用户只能有一个配置文件吗?是和否。我的想法是把配置文件放在用户表中,其中一个是正确的。您仍然保持与其他配置文件的1对多关系。我的答案是找出哪一个是主要的。而不是如何管理所有的配置文件。你已经这么做了。