Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проектирование БД и взаимодействие с ней.
Форумы портала PHP.SU » » Работа с СУБД » Проектирование БД и взаимодействие с ней.

Страниц (1): [1]
 

1. LEONeso - 08 Января, 2012 - 21:47:08 - перейти к сообщению
Здравствуйте, долго ничего не писал и друг решил написать скрипт, верней переписать.

Время дало о себе знать сразу... было много ошибок и т.д., но самое сложно оказалось связь с базой данных.

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

Пример таблиц:
1. category - id, name
2. inner_category - id, id_category, name
3. public_info - id, id_inner_category, title

4. keywords - id, key
5. bind_category - id, id_category, id_key
6. bind_inner_category - id, id_inner_category, id_key
7. bind_public_info - id, id_public_info, id_key

* где зеленое - это уникальные значения и повторяться они не могут, попарно.

Как я понимаю, при попытке записать данные, мне придется сделать следующее:
1. Отослать запрос для проверки существования Категории, Подкатегории, Публикации
1.1 Если отсутствую записи о Категории или Подкатегории, то:
1.1.2 Записываем данные о Категории или Подкатегории (ну или то и другое)
1.2 Проверяем Существуют ли данные о связи Публикации и ключевых слов, если да:
1.2.1 Сверяем действительное с явным, если обнаружены неточности/различия:
1.2.2 Удаляем ключевые слова, которых нет в отосланном массиве, если есть найденные то:
1.2.3 Создаем записи, ключевые слова и связи.

2. Реализация поиска по ключам, отсылаем запрос в таблицу с ключевыми словами.
2.1 При нахождении слов (по нарастающей), отсылаем их id в следующий запрос:
2.1.1 В таблице связей ключевых слов с публикацией простым запросом находим совпадения пары, если такие найдены то
2.1.1.1 Собираем id публикаций из связей и отсылаем запрос в таблицу публикаций... выводим результат.

В целом вроде бы логично всё, но ЭТОЖ СКОЛЬКО ЗАПРОСОВ? У меня мозг потух когда я осознал всю суть... теперь я не знаю как верно реализовать данную задачу.

Возможно у кого-то есть опыт в реализации аналоговых задач, моя логика явно положит скрипт одним нажатием на кнопку, ведь ключевых слов может быть много и каждый создать запрос на проверку и запись/удаление. Что посоветуете?
--
Заранее спасибо.
2. Мелкий - 08 Января, 2012 - 22:07:13 - перейти к сообщению
А в чём задача-то исходная?
3. LEONeso - 08 Января, 2012 - 23:20:38 - перейти к сообщению
Мелкий, хочу сделать поиск по индексам ключевых слов, при этом, каждое слово это отдельная запись с уникальным айдишником и привязками к той или иной таблице.

Категории имеют базовые ключевые слова, их немного.
Подкатегории имеют больше ключевых слов.
Публикации имеют много ключевых слов т.к. их больше.

Если пользователь поленился и написал в поиске типа "шар", то категории такое не будут иметь, а вот подкатегории вполне возможно, что будут иметь данные слова как и публикации. Пользователь также может уточнять свой запрос к примеру "красный шар" или же "красный шар, синий шар" где запятая разделяет запрос, но суть не в этом - это пример. Сложность в реализации, пугает огромное количество запросов т.к. я не опытен, я в основном пишу на низкоуровневом php... исходя из своих или найденных знаний... боюсь что сделаю for/foreach цикл и будут обрабатывать массив, который в свою очередь будет создаваться через explode, что так же не лучший вариант... хотя у меня выбора то и нет.

Хочется сделать шустрый поисковый скрипт по данным критериям.

 

Powered by ExBB FM 1.0 RC1