PHP / MySQL Yapılanma Profili Kullanımı için bir tablo / veritabanı

2 Cevap php

Ben en verimli şekilde benim web sitesinde kullanıcıların benim veritabanı yapısı için bazı yön arıyorum.

Essentially, I already have a "tblusers" database that includes basic biographical information, such as: tblusers: UsrID, First, Last, DOB, Phone Number, etc.

Ancak, benim web sitesi bir yönü kullanıcıları tek bir varsayılan 'profil' resmi olarak seçebilirsiniz bu resimlerin dışında, kendilerini birden çok resim upload bir alanı (içerecektir) içerir. Ayrıca, onlar da "hasat" kendi fotoğrafları herhangi biri de bir "küçük avatar" oluşturmak için olabilir.

Varsayılan profil resmi değiştirmek için 1) Birden fazla resim, 2) Yetenek, küçük / avatarlar oluşturmak ve kullanmak için 3) Yetenek: Yani temelde, ben kullanımı için bir tablo (lar) yapılandırılmasında bazı yardım arıyorum. Bu biraz o kullanıcının "usrID" dayalı olacaktır düşünüyorum, ama ben tabloyu biçimlendirmek için en iyi yolu emin değilim.

Son olarak, farklı profiller yüklenecektir tüm resimlerin "dosya yapısını" korumak konusunda herhangi bir öneri de yararlı olacaktır.

Herhangi bir yardım büyük olurdu! Teşekkür ederim.

2 Cevap

Ben ... avatarlar ve profil bayrakları ile kullanıcıların görüntüler için bir tablo oluşturmak (Ya görüntüleri ve avatarlar için birden fazla tablo oluşturmak) olur

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;

It depends on how much data you want to store in there. The above allows for any number of images to be owned by one user. Personally, I'd likely create a folder structure that uses a users id as its base dir;

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

Sonra alışkanlık '(sadece göstermek oldu kullanıcı' ben kullanarak değil, çok tamsayılar gibi kullanıcı dizinleri tutmak istiyorum) id 'Eğer kullanıcı kullanarak dinamik olarak oluşturabilirsiniz, db yolunu belirtmeniz gerekir.

Umarım ki olur, daha fazla yardıma ihtiyacınız varsa bana bildirin.

Have you considered using Gravatar (like stackoverflow does) to store user images? It seems to be a cool idea! If you are interested visit www.gravatar.com. Gravatar stands for globally recognized avatars. I would suggest storing user information and images in separate tables. The choice is obvious as there is a one to many relationship between user and images. You can, however, use a variation to improve performance and avoid joins everytime you need to display user data.

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

Ve image niteliği UserImages dosya sistemi üzerinde bir konuma tam görüntü veya url depolamak bir ikili nesne olacak. (Gerekirse), ikinci durumda, görüntüyü almak için kodu gerekir. Türü öznitelik değerleri 'birincil profili', 'ilköğretim avatar', 'diğer profillerin
alır

Görüntü sayısı çok büyük olması bekleniyor aşağıdaki gibi, sen tasarımını değiştirebilir

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

ProfileImageID ve ProfileImage
doldurmak için SQL

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

Bu kullanıcıların tabloda gereksiz veri depolama gibi görünebilir. Bu fikir bazen katılır kaçınarak performansını artırmak için kullanılır. Ayrıca, doğrudan ekler userImages tabloya profileImageID bir FK yaparak profileImageID ve profileImage sütun için kullanıcılar masaya olabilir emin olmak gerekir. Bu hala kötü niyetli güncellemeleri açık profileImage yol açacak. Bunu işlemek için özel bir kod gerekir. Eğer sonraki Internet hissi olmasını bekliyoruz, tüm bu yapmak gerekiyor! Tüm iyi ve yapmanızı sağlar biri haline umut!