簡體   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