Порекомендуйте способ хранения

OracleH2

Новичок
Порекомендуйте способ хранения

Ребят, пишу в первый раз, так что извиняйте, если что не так спрошу.

Есть у меня одна проблема. Пишу сайт под заказ (сразу скажу, что заказали движок для интим-сайта... ну то есть проститутки и т.п.)

Суть проблемы:
Есть список возможных услуг (вывожу чекбоксами), каждая девушка вольна для себя выбирать те, которые оказывает.
По идее можно было бы все эти услуги запихать в массив как есть... но тут проблема, очень нужен быстрый поиск по услугам.

Я дошел до такого гемора, что получал в итоге выбранных услуг битное число, конвертил в десятичное и записывал его в таком виде... то есть на чекбоксах читал единицу или нуль, записывал итоговое значение типа 1000101110 и конвертил в десятичное... поиск хоть и побыстрее, но все равно заказчикам не нравится... Поэтому решил поспрашивать на форумах, может отсоветуете как еще можно поступить...
PS: вариант хранения каждой услуги в своей ячейке не предлагать :)

Заранее спасибо.
 

alpine

Новичок
OracleH2
А чем тебя не устраивает классическая реализация связи многие ко многим через дополнительную таблицу?
 

OracleH2

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

alpine

Новичок
OracleH2
Ты хочешь сказать что по таблице девушка_id | услуга_id с индексами поиск будет выполнятся долго?!

-~{}~ 08.01.06 22:31:

И ты это называешь раздувать базу данных?!
 

OracleH2

Новичок
Автор оригинала: alpine
Ты хочешь сказать что по таблице девушка_id | услуга_id с индексами поиск будет выполнятся долго?!
И ты это называешь раздувать базу данных?!
Нет, ну смотри, я не догоняю саму суть запроса. Получается, что у нас в поле услуг будут проставлятся ид оказываемых услуг. Я не сомневаюсь, что знаю я ОЧЕНЬ мало, но я понимаю, что если искать лайком, то я найду только точные совпадения, а по другому знаю только как выгружать все это дело в массив, и искать уже в элементах массиво... поэтому и считаю, что будет долго...

Я буду только счаслив, если надоумите... если поскажите как лучше поиск построить.
 

OracleH2

Новичок
Не бейте, дяденька, засранца, но все так не накидаешь пример запроса?
 

alpine

Новичок
Пример реализации:
http://phpclub.ru/talk/showthread.php?s=&threadid=76896&highlight=JOIN
 

OracleH2

Новичок

SelenIT

IT-лунатик :)
OracleH2
В твоей задаче (как ты ее описал) нужна как раз выборка по полям, а не по части поля. В конце концов, если набор услуг задан раз и навсегда и не будет меняться, почему бы просто не завести по отдельному полю для каждой услуги? Ну а если набор услуг должен быть гибким - то лучше классического решения alpine не придумать.
 

OracleH2

Новичок
Спасибо, все понял. sakon отдельный респект.
SelenIT
Ты не понял. Я имею в виду, что при таком построении базы будет что-то вроде

uslugi:
+----+------------+
|id_u|usl_name|
....
girls
+----+----------------------------
|id | id_u1 id_u2 id_u3....
+----+----------------------------

вот я и хочу сделать такую вот сложную выборку в этом поле, чтобы узнать сходит ли в это поле такие записи, как в запросе... то есть или id_u1 или id_u2 и пр.
 

SelenIT

IT-лунатик :)
OracleH2
Это ты не понял.
uslugi:
+----+------------+
|id_u|usl_name|
....
girls
+----+----------------------------
|id_girl | разные_параметры_шлюх | ...
+----+----------------------------
.....
girls2uslugi
+----+-------+
|id_u|id_girl|

Из 3-ей таблицы выбираешь id девушек, предоставляющих услуги из запроса. А сложные выборки по сложным полям - лесом.
 

OracleH2

Новичок
:)) Здорово... А у меня бошка в этом направлении даже не варила... Спасибо всем, кто не поленился ответить.
 

bkonst

.. хочется странного?...
Почитай про нормализацию баз данных, иначе постоянно будешь ходить по граблям.
 
Сверху