Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Система таргетирования 
:(
    Опции темы
Ripper
Дата 26.12.2011, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Доброй глубокой ночи)

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

Таблица пользователя:
id, city_id, university_id name

Таблица города
city_id name

Таблица вуза
university_id city_id(FK) name


Просто смущает, что если таких параметров много (причем некоторые как бы зависят друг от друга, типа город-вуз, а некоторые нет, например возраст) то будет много табличек и много столбцов у пользователя. Мне кто-то говорил что можно такие данные в XML хранить, но только я никогда почти его не использовал и поэтому не знаю.  И да, естественно должна быть возможность добавить новые города и т.д. 

И еще вспомнил - к пользователю крепятся теги, и соотвественно нужен поиск по тегам.. Про теги я думаю погуглю, а вот то что выше - правильный ход, или криво?


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
$дмитрий
Дата 26.12.2011, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Сложно дать конкретный совет не видя всей функциональной структуры + не зная расчетной нагрузки

В общем случаи информация которая принадлежит непосредственно пользователю должна быть в таблице пользователей. К примеру ФИО, возраст, логин, пароль и тп. Остальное выносится в другие таблице
Однако самые проблемы начинаются когда у пользователя присутствует множественные поля. К примеру, школа - их может быть несколько. Поэтому то что ты нарисовал - не катит

Какие вижу варианты решения
1. Создать промежуточную таблицу связей
2. Перечислять в одном поле ID всех школ через запятую
3. Создать дополнительную таблицу с результирующий выборкой

Какой из вариантов применить(а может вообще другой) будет ясно если опишешь в деталях что и как

Цитата

то будет много табличек и много столбцов у пользователя

Не о том ты думаешь

Цитата

Мне кто-то говорил что можно такие данные в XML хранить

Не вижу плюсов


PM MAIL   Вверх
Ripper
Дата 26.12.2011, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Ну вообще это я в качестве примера привел, у меня немного другой объект и другие поля. По большей части это местоположение. Типа город, район, тип помещения и т.п. И тут возможно что не будет множественных полей вообще.

Но на самом деле я как раз думал что будет если например много школ у человека. Единственное решение которое я на практике знал это разбивать связи N-N, типа еще одна табличка "учился в школе". При добавлении человека если он указал несколько школ то добавляем несколько записей в доп. таблицу. А когда хотим выяснить в каких школах он учился выбираем по айди пользователя из доп. таблицы все записи. Это вроде железный метод?) 
Никогда не думал хранить айди через запятую, хм
Цитата

3. Создать дополнительную таблицу с результирующий выборкой
 
А это вообще не понял

Ну я на самом деле просто спрашиваю может глупые вопросы т.к. не хочу накосячить на старте. Мне часто кажется что всегда какие-то задачи делаются не так как я делаю smile 

Спасибо



--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
$дмитрий
Дата 26.12.2011, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

И тут возможно что не будет множественных полей вообще

Цитата

Но на самом деле я как раз думал что будет если например много школ у человека

Так будут множественные поля или нет smile 

Цитата

Это вроде железный метод?

Используй этот вариант

Цитата

А это вообще не понял

Это вроде внутреннего кэша, когда вся выборка уже сделана и отдается готовый результат. Оно тебе нафиг не надо

PM MAIL   Вверх
ksnk
Дата 26.12.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Ripper, Есть еще мысль, что если четко определить структуру поиска невозможно - то можно пользоваться текстовым поиском. Просто свалить все поля, по которым интересно искать в одно текстовое поле и проиндексировать его fulltext. Конечно, поля с четко понятным значением нужно бы выводить в отдельные таблицы...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
BuShaRt
Дата 26.12.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(Ripper @  26.12.2011,  02:01 Найти цитируемый пост)
Мне кто-то говорил что можно такие данные в XML хранить

Не когда больше не просите совета у этого человека.

Кол-во таблиц Вас пугать не должно. Как правильно организовывать данные в базе придумали уже очень давно и не стоит выдумывать велосепеды - большинство альтернативных вариантов рождаються от лени и нежелания разбираться. Почитайте про нормальные формы таблиц.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0841 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.