Новости
Документация
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



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;

ни к чему хорошему не приведёт - наш предмет найден НЕ БУДЕТ!

Искать в этом случае надо не по значениям отдельных свойств, а по их конкатенации, то есть по строке "картошка печёная капуста солёная морковка варёная". Как же можно построить конкатенацию строк, находящихся в РАЗНЫХ записях таблицы? Можно, конечно, построить конкатенацию заранее и записать в специальное поле таблицы "предметы", но это, опять же, нарушит нормализацию и усложнит добавление/обновление/удаление записей.

Вот так. Если у кого-нибудь есть мысли по этому поводу, буду признателен, если поделитесь.


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

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

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



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