Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
О наболевшем (X-Ander) 02/06/2003 - 11:54:09
      Re: Всегда есть выбор :) (Валентин) 02/06/2003 - 12:31:58
      Re: Всегда есть выбор :) (X-Ander) 02/06/2003 - 13:00:27

> Original message text:
> From: X-Ander - 02/06/2003 - 11:54:09
> Subject:О наболевшем
> -----------------
> Продолжаю тему, начатую в треде "Как достать строку из текста?"
>
> Господа Валентин и walrus! То ли я такой тупой, то ли ещё что, но никак не могу сообразить, как же организовать в "хорошей" схеме поиск по всем свойствам предмета. А это - главная задача!
>
> Напомню. Была предложена "хорошая" схема БД:
>
> таблица предметов:
> - уникальный номер
> - название
>
> таблица свойств:
> - уникальный номер
> - название
>
> таблица предметы-свойства:
> - уникальный номер предмета
> - уникальный номер свойства
> - значение свойства
>
> Теперь допустим, что имеется предмет, обладающий среди прочих следующими свойствами:
>
> свойство 1: "картошка печёная"
> свойство 2: "капуста солёная"
> свойство 3: "морковка варёная"
>
> А запрос (в "житейском" смысле слова) был дан на поиск слов "картошка", "капуста" и "морковка". Наш предмет ДОЛЖЕН быть найден по этому запросу! Но как этот запрос записать на SQL? Я уже мозг сломал.
>
> Запрос вида
>
> select уникальный_номер_предмета
> from предметы_свойства
> where
> position("картошка" in значение_свойства) > 0 &&
> position("капуста" in значение_свойства) > 0 &&
> position("морковка" in значение_свойства) > 0;
>
> ни к чему хорошему не приведёт - наш предмет найден НЕ БУДЕТ!
>
> Искать в этом случае надо не по значениям отдельных свойств, а по их конкатенации, то есть по строке "картошка печёная капуста солёная морковка варёная". Как же можно построить конкатенацию строк, находящихся в РАЗНЫХ записях таблицы? Можно, конечно, построить конкатенацию заранее и записать в специальное поле таблицы "предметы", но это, опять же, нарушит нормализацию и усложнит добавление/обновление/удаление записей.
>
> Вот так. Если у кого-нибудь есть мысли по этому поводу, буду признателен, если поделитесь.
>


From: X-Ander - 02/06/2003 - 13:00:27
Subject:Всегда есть выбор :)
-----------------
Юзер действительно будет это писать вручную. И он не будет выбирать свойства, он просто напишет, что ему надо найти и кликнет "Искать". Для продвинутых будет предложена возможность поиска по отдельным свойствам, но, как показала практика, юзеры этим пользуются крайне редко. По этой причине вариант (2), скорее всего, не пройдёт. В вариант (1) я, если честно, не въехал.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
8890



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |