2010-08-13 2 views
-1

Я создаю приложение, в котором каждый пользователь может иметь несколько профилей. Пользователи могут загружать несколько фотографий для каждого профиля и т.д.Как пометить фотографию как пользовательский профиль pic?

Структура папок будет что-то вроде

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, вы можете иметь много фотографий, но только один профиль в любое время.

ответ

0

Это сработает, но было бы проблемой, что более одной фотографии можно было бы пометить как фотографию профиля, если вы не проявите особой осторожности, чтобы предотвратить это.

Альтернативный дизайн - это таблица с колонками user_id и special_photo_id, где photo_id - это внешний ключ в таблице фотографий. У этого есть немного другая проблема: теперь возможно иметь специальную фотографию, которая не принадлежит пользователю.

+0

Как вы писали это, я пересмотрел свой ответ и сказал, что должен, вероятно, поместить уникальный индекс в profile_id и профиль :) – BDuelz

+0

@BDuelz: Тогда у вас не могло быть нескольких строк с «profile = false» для одного и того же пользователя , Он будет работать, если вы использовали TRUE и NULL, хотя, поскольку вы можете иметь несколько NULL даже в столбце с уникальным индексом. –

+0

Для варианта 2, как бы я это сделал. В настоящее время у меня есть так, что у каждого профиля может быть много фотографий. Если бы я добавил столбец photo_id в таблицу профилей, это означало бы, что каждый профиль может иметь только 1 – BDuelz

0

У вас может быть поле в вашей таблице пользователей (где хранится его имя пользователя и другая информация) с полем init_id, указывающим на таблицу профилей. Таким образом, вы получаете одну возможность для профиля и прочь идентифицировать его.

Думая об этом, что будет работать, только если у вас есть таблица пользователей и таблица разделенных профилей.

+0

Прошу прощения, но я не понимаю. Вы хотите поставить profile_id в таблицу users? И если да, то разве это не означает, что каждый пользователь может иметь только один профиль? – BDuelz

+0

Ну да и нет. Моя идея состоит в том, чтобы просто положить в таблицу пользователей, какой профиль правильный. Вы по-прежнему сохраняете другое отношение 1 ко многим другим профилям. Мой адрес ответов, выясняющий, какой профиль является основным. Не как управлять всеми профилями. Вы уже это делаете. – Iznogood

+0

Ох ... Я понимаю. Хорошая идея – BDuelz

0

Как насчет таблицы изображение выглядит следующим образом:

id 
profile_id 
filename  
date_added 

и добавить колонку «profile_image_id» в таблице профилей? Это будет ваш идентификатор вашего специального изображения.

Я предполагаю, что у вас будет гораздо больше неспециальных изображений, чем у специальных. Поэтому большую часть времени полевой профиль (boolean), который вы предложили, будет равен 0.

Редактировать: Я считаю, что @Iznogood говорит то же самое.

Смежные вопросы