繁体   English   中英

PHP / MySQL构建用于配置文件使用的表/数据库

[英]PHP/MySQL Structuring a Table/Database for Profile Usage

我正在寻找有关如何最有效地为网站上的用户构建数据库的方式的指导。

本质上,我已经有一个“ tblusers”数据库,其中包含基本的传记信息,例如:tblusers:UsrID,First,Last,DOB,电话号码等。

但是,我网站的一个方面包括(将包括)一个区域,用户可以在其中上传自己的多张图片,他们可以从这些图片中选择一张作为默认的“个人资料”图片。 此外,他们还可以“裁剪”他们的任何一张照片以创建“缩略图头像”。

因此,基本上,我正在寻求一些有关构建表的帮助,以供使用:1)多张图片,2)可以更改默认个人资料图片,3)可以创建和使用缩略图/头像。 我认为这将基于该用户的“ usrID”,但是我不确定格式化表格的最佳方法。

最后,关于如何维护所有要上传到不同配置文件的图片的“文件结构”的建议也将有所帮助。

任何帮助将是巨大的! 谢谢。

我会为用户的图片创建一个表格,并带有头像和个人资料的标志...(或为图片和头像创建多个表格)

CREATE TABLE users_images (
    `id` int(10) unsigned auto_increment,
    `userid` int(10) unsigned NOT NULL,
    `name` varchar(255) NOT NULL, -- Filename for the image
    `isavatar` tinyint(1) DEFAULT 0,
    `isprofile` tinyint(1) DEFAULT 0,
    PRIMARY KEY(id)
) ENGINE=InnoDB CHARSET=utf8;

这取决于要在其中存储多少数据。 以上内容允许一个用户拥有任意数量的图像。 就个人而言,我可能会创建一个使用用户ID作为其基本目录的文件夹结构。

 - Uploads
    -user1
     -file1.jpg
    -user2
     -file1.jpg
     -file2.jpg
    -etc

然后,您将不需要在db中指定路径,可以使用用户的id动态创建它(我也将用户目录也保持为整数,而不是仅仅为了演示而使用“ user”)。

希望能有所帮助,如果您需要其他帮助,请告诉我。

您是否考虑过使用Gravatar(像stackoverflow一样)来存储用户图像? 这似乎是一个好主意! 如果您有兴趣,请访问www.gravatar.com。 Gravatar代表全球认可的化身。 我建议将用户信息和图像存储在单独的表中。 选择是显而易见的,因为用户和图像之间存在一对多的关系。 但是,可以在每次需要显示用户数据时使用变体来提高性能并避免联接。

User(userID, loginName, loginPwd)
UserImages(imageID, userID, image,type)

UserImagesimage属性将是一个二进制对象,用于存储完整图像或指向文件系统上某个位置的url。 在第二种情况下,您需要代码来获取图像(如果需要)。 type属性采用值“主配置文件”,“主头像”,“其他配置文件”

如果预计图像数量很大,则可以如下修改设计

User(userID, loginName, loginPwd, profileImageID, profileImage)
UserImages(imageID, userID, image,type)

SQL填充profileImageID和ProfileImage

Update User T1
set (profileImageID, profileImage) = (Select imageID, image 
                                      from UserImages T2
                                      where T1.userID = T2.userID 
                                        and T2.type='primary profile'
                                     )  

它看起来像是用户表中的冗余数据存储。 有时会通过避免联接来使用此想法来提高性能。 此外,您需要通过将profileImageID设置为userImages表的FK来确保在users表上不会对profileImageID和profileImage列进行直接插入。 这仍然会导致profileImage对恶意更新开放。 您需要特殊的代码来处理。 如果您希望成为下一个互联网轰动者,则需要做所有这一切! 祝您一切顺利,并希望您成为一体!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM