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对多关系。我的答案是找出哪一个是主要的。而不是如何管理所有的配置文件。你已经这么做了。