Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 18
FIXXER Сообщение 02/04/2010 06:36 Копия темы
Таблица MySQL Есть таблица с товаром, где у каждого товара свой id.
Каким образом лучше реализовать "похожие товары" или "с этим товаром обычно покупают" ?
Создать новую таблицу отношений или в этой же строке создать поле и через запятую указать id похожих товаров?
AnemoN Сообщение 02/04/2010 06:46 Копия темы
Голосую за первый вариант ;)
Только лучше предварительно протестировать запросы, посмотреть время исполнения, т.к. выборка по 2м таблицам может быть емкой.
FIXXER Сообщение 02/04/2010 06:55 Копия темы
А мне кажется второй вариант более простым, нет? Нужная строка уже найдена, остается лишь отпарсить номера остальных строк.

А вот в случае с отдельной таблицей, какая будет структура?
AlekSky Сообщение 02/04/2010 06:59 Копия темы
Поскольку каждый " похожий товар" может быть связан с несколькими основными, я голосую за второй вариант.
FIXXER Сообщение 02/04/2010 07:01 Копия темы
А может есть какой третий, правильный, способ?
AlekSky Сообщение 02/04/2010 07:04 Копия темы
Полагаю, что нет. Вариантов два и из них надо выбирать оптимальный для данной задачи.
AnemoN Сообщение 02/04/2010 07:09 Копия темы
На мой взгляд такой вариант конечно более простой, но мне больше нравится первый, т.к. при необходимости каких-либо дополнений он предоставляет большую свободу действий. Допустим, необходимо для каждого соответствия задать свое уникальное описание. Типа "покупаете ложку? -купите и вилку тоже!"

И если сделано, например, как ниже, то нужно будет только добавить столбец к таблице.
CREATE TABLE IF NOT EXISTS `similar` (
`sid` int(10) unsigned NOT NULL auto_increment,
`nid1` int(10) unsigned NOT NULL,
`nid2` int(10) unsigned NOT NULL,
PRIMARY KEY (`sid`),
UNIQUE KEY (`nid1`, `nid2`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Но это мое мнение, весомых аргументов за один из вариантов у меня нет ;)
FIXXER Сообщение 02/04/2010 07:10 Копия темы
Как вы узнали про ложку? 0_О )))
FIXXER Сообщение 02/04/2010 07:13 Копия темы
Вы имеете ввиду, что однажды привязав к ложке вилку, не придется к этой же вилке привязывть эту же ложку?
AnemoN Сообщение 02/04/2010 07:15 Копия темы
Видимо, как-то угадал.
Наверное, я телепат ;))
AnemoN Сообщение 02/04/2010 07:18 Копия темы
Если вы про "UNIQUE...", то да.

Ой, допер про что вопрос ;)
Можно сделать взаимную связь, а можно только в одну сторону, тут уже как вам угодно.
FIXXER Сообщение 02/04/2010 07:28 Копия темы
короче, будем думать ))
GudzON Сообщение 02/04/2010 07:45 Копия темы
похожие товары – надо выводить товары из этой же товарной группы
с этим товаром покупают- делать анализ на основе записей из таблицы покупок (корзины)
FIXXER Сообщение 02/04/2010 07:52 Копия темы
В моем случае привязка к товарной группе не нужна.
serg-smirnoff Сообщение 02/04/2010 08:55 Копия темы
Я бы делал по второму варианту. То есть просто в отдельное поле вписал бы через запятую id связанных товаров, а потом "распарсил" бы.
RiDDi Сообщение 02/04/2010 23:50 Копия темы
первый конечно без вариантов )

"поле через запятую" делать вообще низя, это нерационально и неправильно, а с точки зрения организации это вообще своего своего рода "тупик" и для кеширования и для поиска.

кроме того таблица связей или таблицы связей дадут возможность более динамично управлять товарами – группировать их в группы – например кому надо там пальчиковые батарейки, и ещё дают как бы двустороннюю связь – из "мелкого" товара можно будет узнать для каких товаров он предназначен.. например вместе "с такой-то мамкой покупают такой-то проц"... а "такой-то проц подойдет под такую-то мамку"... – и группировать можно по фирмам или типу товара например..
FIXXER Сообщение 03/04/2010 04:52 Копия темы
Только вот какова будет структура этой таблицы?

Основной id – Доп. id
Телевизор1 – Подставка1
Телевизор1 – Плеер1
Телевизор2 – Подставка2

Так?
RiDDi Сообщение 04/04/2010 23:53 Копия темы
так. и уникальный индекс по двум полям..

ну и они идентичны, поэтому скорее просто ид_1, ид_2

ну и если у вас объекты, то обычно используют название объекта_id для полей, а название таблицы состоит из двух объектов во множественном числе в алфавитном порядке

что-то типа:

CREATE TABLE IF NOT EXISTS `cars_options` (
`car_id` int(10) unsigned NOT NULL,
`option_id` int(10) unsigned NOT NULL,
UNIQUE KEY `1` (`car_id`,`option_id`)
)

связь называется "много-ко-многим" – каждый объект может быть связан с множеством других, и наоборот. Название таблицы в алфавитном порядке дает возможность обработчику автоматом получить доступ к таблице нужных связей... Например car хочет получить свои options – он ищет их в cars_options... option хочет получить свои cars – он тоже ищет в cars_options... чтобы не было путаницы =)
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"