|
|
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Аленочка в пятой таблице предлагаю завести ещё поле id_parent (это как раз для хранения значений спискового типа...) у меня вот такая структура 5-ой таблицы: id - код записи id_param - код параметра товара (атрибута) id_part - код товара value - значение id_parent - ссылка на предыдущее значение из списка (для организации списка) id_parent будет принимать целые значения. если значение id_parent = -1, то запись является самой первой в списке (или вообще единственной для других не списковых типов данных) Ну например (см. рисунок) я думал о таком способе хранения списка, с той лишь разницей что parent_id будет: -1 не список -2 список >0 ссылка на автоинкремент ID товара у которого parent_id = -2 что то на подобии такой таблицы: item_attr_id item_id attr_id attr_value item_attr_parent1 10 4 80 -12 10 5 220 -13 10 6 70 -14 10 7 2 -15 10 8 4000 -16 10 9 8000 -1 7 10 10 -2 8 10 10 СССССС 7 9 10 10 FFFFFF 7 10 10 10 AAAAAA 711 10 11 400 -1 но я отказался от такого подхода (хоть и не окончательно) просто в этом случае и так очень большая таблица превращается просто в огромную, а ведь именно она будет наиболее нагруженной ... а в чём смысл ссылки parent_id на предыдущую запись (у вас) а не на родителя (у меня) ? что то больно сложно будет выбирать/искать при таком подходе ... если речь идёт о приоритетности вывода/поиска данных атрибутов товара то для этого достаточно и автоинкремента ... по этому и спросил только о двух вариантах 1) отдельная таблица для списковых значений 2) а) или же специальный тип поля б) спец формат хранения данных 1) - при поиске даёт гарантию совпадения 2.а) - ничего не могу сказать по этому поводу (а что вы можете сказать? как оно будет использовано при поиске ?) 2.б) - думал использовать LIKE для простоты не нагружая при распарске - гарантии совпадения нет но вероятность высока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 16:06 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
что легче для базы: 1) две таблицы допустим с миллионом записей в одной и 10 миллионами в другой (речь о таблицах 2) список товаров и 5) значения атрибутов конкретного товара ) 2) 1,000 таблиц в каждой по 1,000 записей (но каждая из этих таблиц будет иметь порядка 10-15 полей) решил ещё раз спросить об этом... понимаю что 2) это извращение ещё то ... но что то меня пугают джоины/подзапросы по нездорово огромным таблицам в случае 1) нагрузка будет мне кажется жуть какая даже с учётом индексов и ограничений на выборку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 16:06 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Ну что ж. Если Вы считаете, что пятая таблица нужна, то мне остается только отойти в сторону. Если Вы хелаете набивать шишки самостоятельно - Бог Вам в помощь! Вы хотели, что бы Вас похвалили, какой Вы умный и придумали супер-пупер? Так нет. Ваша задача настолько тривиальна, что даже непонятно, какие могут быть проблемы. А ваше решение - попытка почесать правое ухо лыжей, зажатой в левой руке. =========== Не надо пугаться джоинов. При правильных индексах все простые выборки будет работать на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 22:22 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Cat2Ну что ж. Если Вы считаете, что пятая таблица нужна, то мне остается только отойти в сторону. Если Вы хелаете набивать шишки самостоятельно - Бог Вам в помощь! Вы хотели, что бы Вас похвалили, какой Вы умный и придумали супер-пупер? Так нет. Ваша задача настолько тривиальна, что даже непонятно, какие могут быть проблемы. А ваше решение - попытка почесать правое ухо лыжей, зажатой в левой руке. =========== Не надо пугаться джоинов. При правильных индексах все простые выборки будет работать на ура. с радостью ошибусь, для этого сюда и написал что бы ошибиться и разумных мыслей почитать... а вместо ёрничества лучше бы привели конкретный пример структуры совмещённых 3) и 5) таблиц ибо я ума не приложу как это ... поля через запятую вроде как не трудно написать, мышкой выделить и ЦСВ нажать .... так же рад что моя задача столь тривиальна для Вас что вы готовы посмотрев на все мои "старания" сходу предложить свой единственно верный вариант ? с радостью приму вашу структуру столь тривиальной базы ... у вас и дамп надеюсь завалялся что бы я неуч посмотрел да уму разуму набрался ? ну что поделать не всем быть такими умными как Вы ... очень надеюсь что Вы не отступитесь в сторону и снизайдёте своей благодатью на мою лыжу и направите её верным путём яко товарищ Ленин к моему правому уху... ну а ежели серьёзно то топик открыт как раз для того что бы раскритиковали, помогли дельным советом, исправили ощибки а не для ёрничества и словоблудства ... все мы в словоблудстве сильны ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 01:33 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
ModelRСловарь, таблица для связки категории товаров и возможных атрибутов cat_id attr_id attr_searchable attrFieldХолодильник 4 (глубина ) Yes Value1Холодильник 5 (высота) Yes Value2Холодильник 6 (ширина)No Value3Холодильник 7 (количество камер )Yes Value4Холодильник 10 (доступные цвета) Yes _List... Значения атрибутов конкретного товара для: товара id = 10 (допустим холодильник - ПЛИЗ без флейма на тему "такого холодильника быть не может" - данные "с потолка") attr_id = 4 (глубина - см) attr_id = 5 (высота - см) attr_id = 6 (ширина - см) attr_id = 7 (количество камер - штук) attr_id = 10 (доступные цвета - список цветов) Скалярные значения item_id Value1Value2 Value3Value4...10 80 220 70 2... Списковые item_id attr_id attr_value1010 СССССС1010 FFFFFF1010 AAAAAA Коль для одной категории число параметров меньше максимального числа полей в таблице СУБД то хватит одной таблицы значений, иначе или несколько таблиц или несколько типов записей. Реально применяется, правда для MS SQL, Oracle. Так проще? :) гораздо проще :) ток вот вопросы есть ... предпологается что будет уйма полей в таблице "Скалярные значения" и данная таблица будет общей для всех продуктов ? то есть предположим у меня наберётся 500 всевозможных не списковых атрибутов товаров. как я понял у таблицы "Скалярные значения" будет 500 полей ? :\ данная таблица будет общей для всех товаров и в некоторых полях для некоторых товаров будет стоять значение а в некоторых а-ля ничего ? если я верно понял что думается мне что вариант с 1000 таблиц будет попроще да и пожалуй поровнее, разве нет ? :\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 01:51 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
LSV Тем более, что в принципе возможно(хотя нежелательно) нахождение товара одновременно в нескольких группах. Пример: Окорочка могут быть и в группе "Курятина" и в группе "Сырьё для производства". Иногда это может быть удобно. ну "Сырьё для производства" это очень злая категория :) в неё можно впихнуть всё дерево категорий по второму разу и уйму товаров ... то есть получается что бы реализовать возможность нахождения товара в нескольких категориях (раз уж эта возможность существует) изначальную таблицу 2) список товаров item_id cat_id company_id item_name разобьём на две таблицы: первая: 2.1.а) список товаров (без привязки к категории) item_id company_id item_name 2.1.б) это как вариант оставить упоминание о категории как об основной категории и добавить новое поле item_id cat_id company_id item_name cat_id_inc cat_id_inc - новое логическое поле 0/1 - находится ли данный товар в других категориях и в зависимости от него уже можно организовать возможность "товар -> несколько категорий" вторая: 2.2) список товар-категория item_id cat_id для варианта 2.1.а) - один товар может быть в нескольких категориях для варианта 2.1.б) - список дополнительных категорий в которых товар может находиться (в таком случае эта таблица получается опциональной для расширения функционала и может быть добавлена позже если возникнет необходимость в её существовании со стороны пользователей) вариант 2.1.б) с дополнительным полем + вторая опциональная таблица мне кажется достаточно гибким, что скажете ? ModelR Два случая встречались. Для поиска. Холодильник автомобильный - хочется, чтобы человек мог его найти (имеется ввиду найти навигацией по категориям) и от корня Оборудование для автомобилей и от Бытовая техника. На набор свойств это никак не влияет. в выше приведённой структуре 2.1.б) + поле + опциональная таблица вроде как можно будет отобразить товар и в дереве и организовать его поиск из любой категории в которой он находится ... вроде всё ровно получается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 02:22 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
ModelR Более интересный случай - множественное наследование свойств, повторное использование наборов свойств. Это уже для администратора системы, хотя можно использовать и для форматирования отображения. Например категории ТВ камера - набор свойств1. Компьютер - набор свойств2. Ноутбук с ТВ камерой наследует оба эти набора свойств, Мобильник с ТВ камерой наследует набор свойств1. да, занятный вариант, но кажется мне что это непосредственно к структуре не относится, это скорее какое то "специальное предложение" или некая "промо акция" построенная на базе имеющихся у фирмы товаров и для такого рода вариантов можно завести отдельную табличку связывающую (ноутбук с камерой) promo_id, company_id, item_id 4, 10, 5 (NOTEBOOK) 4, 10, 8 (CAMERA) не думаю что такие варианты будут часто востребованными, но как опционал можно добавить ... нужно будет к этой возможности писать не хилый контроллер что бы товары включались сюда в зависимости от парент категории и не получалось "курица + 1ГБ ДДР памяти в подарок" возможно создать для контроллера таблицу уровней допустимой вложенности категорий для создания комбинированного товара + контроллер для управления отображением в листинге (в начало, конец списка такие товары, либо же каждый десятый на пример) но это мне кажется уже лирика ... придумать можно много :) ModelR те же холодильники , но сгруппированные по объему камеры. это вариант поиска в категории холодильники по объёму морозильной камеры ModelR Наиболее популярные запросы также можно категоризировать в некое дерево. не совсем понял что имелось в виду, но слова "Наиболее популярные запросы" меня натолкнули на идею разгрузки базы на уровне софта ... будет актуально на пример при бешанной популярности ресурса первое что пришло в голову: завести спец табличку с несколькими полями ... при поисковом запросе генерить ХЭШ и писать его в табличку (если есть - увеличить счётчик + поле с названием директории со сгенеренным темплэйтом + дата последнего обновления) в конце каждой на пример недели для наиболее популярных (методика выбора - какая кому нравится) генерить директорию с готовыми страницами результатов поиска и далее при навигации по ним уже базу не трогать вообще :) в зависимости от даты или на пример каунтера кратного 100 перегенеривать эти страницы (крон скрипт) ... в общем это уже больше программинг и на прямую с базами не связано но спасибо за наталкивание на идею :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 03:01 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
возможно на пример идея с разгрузкой базы и не нова для некоторых товарищей ;) но моё дело поделиться тем что в голову по ходу пришло, кому то может и пригодится ... я ведь всётаки программер в большей мере а не спец по проэктированию баз и мыслю больше на уровне "разгрузить ресурсы" а не "корректная структура" :) - плиз без особой критики и флейма тем более что это был всего лишь "сырец", а то чую я что найдутся товарищи желающие увести в сторону разговор от основной задачи - БАЗА ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 03:10 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
А в какую из этих таблиц заносится, скажем, экземпляр холодильника ЗИЛ-3М (заводской номер 15632) - в Список товаров (таблица № 2)? Еще вопрос по таблице атрибутов товаров № 4: допустим, если множество атрибутов подразделяется на группы и нужно поддерживать целостность? Причем для разных товаров это могут быть разные группы? (Эти вопросы начали задаваться в постах с 14 апреля). Предположим, у меня 100 разных товаров. Каждый товар нормируется по 5 показателям. Эти показатели у разных товаров могут быть одинаковы или неодинаковы. Они могут быть выражены числом (или диапазоном), строковым значением (выбираемым из нескольких т.е., видимо, должны находиться в таблицах - на каждый показатель, представлющий одну из нескольких возможных строк - своя), логическим значением и т.д. Автору удалось найти удовлетворяющую его структуру данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 18:08 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Up. У меня вопрос: почему в модели Тенцера не нашлось места диапазонным величинам? Как их лучше хранить и определять? Вот, например: свыше 5 - до 50 (вкл.)? Если я правильно понял, Тенцер на каждый тип величин предлагает сделать свою таблицу. Автор же поста, а также Аленочка предлагают для атрибутов общую таблицу, но обрабатывать их по признаку (логический, числовой и т.д.). И мне такой подход импонирует больше, хотя м.б. тут какие-то подводные камни? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 06:06 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Объясните, пожалуйста, про диапазоны! (см. пред. пост) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 06:16 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
КДUp. У меня вопрос: почему в модели Тенцера не нашлось места диапазонным величинам? Как их лучше хранить и определять? Вот, например: свыше 5 - до 50 (вкл.)? Если я правильно понял, Тенцер на каждый тип величин предлагает сделать свою таблицу. Автор же поста, а также Аленочка предлагают для атрибутов общую таблицу, но обрабатывать их по признаку (логический, числовой и т.д.). И мне такой подход импонирует больше, хотя м.б. тут какие-то подводные камни? Ну сделайте таблицу для диапазонных величин. Четыре поля - ПК, от, до, ссылка на таблицу единиц измерения. Если единицы измерения разные (по сути, а не по множителю-префиксу), то разные таблицы. Если все пихать в одну таблицу, то или записывать всё символами (что есть бред), или делать набор полей целое, вещественное, символьное... туда же отлично и начало-конец диапазона улягутся. Проблемы нет никакой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 12:16 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
> Ну сделайте таблицу для диапазонных величин. А для дискретных диапазонов? А для списков (кстати, разных типов)? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:50 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
А почему "записывать всё символами (... есть бред)"? Вообще-то мы все книги пишем символами и т.д. в частности, сообщения на этот форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 06:42 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
КДА почему "записывать всё символами (... есть бред)"? Вообще-то мы все книги пишем символами и т.д. в частности, сообщения на этот форум.Потому что конвертировать придется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:53 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Ну сделайте таблицу для диапазонных величин. А для дискретных диапазонов? ...ибо сказано: таблица такая годится для любых диапазонов. По желанию можете разнообразить их описания, можете разные типы диапазонов выделить в разные таблицы ;) guest_20040621А для списков (кстати, разных типов)? ;)Вопрос неоднозначный и рациональное решение зависит не в последнюю очередь от способа хранения оных списков. На практике аналогичную задачу решать приходилось, однозначно красивое решение Вам, несомненно известно (опишете?), а я своё кривое и вспоминать не хочу (работает, и ладно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:00 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Ну сделайте таблицу для диапазонных величин. А для дискретных диапазонов? А для списков (кстати, разных типов)? ;) А, я вообще написал про диапазоны как атрибуты товара (например, вес брутто 1...1.1 кг ) Те диапазоны, которые Вы имеете в виду, не сильно интересны - сводятся или к спискам, или к вещественным числам и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:04 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
> ибо сказано: таблица такая годится для любых диапазонов Хочется снять шляпу и начать говорить на старославянском. ;) Поясните, пожалуйста, как Вы намерены хранить эти самые дискретные диапазоны. Ничего заслуживающего внимания со своей стороны предложить не могу. Ни изящного, ни кривого. > сводятся или к спискам, или к вещественным числам Если бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:20 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621> ибо сказано: таблица такая годится для любых диапазонов Хочется снять шляпу и начать говорить на старославянском. ;) Поясните, пожалуйста, как Вы намерены хранить эти самые дискретные диапазоны. Ничего заслуживающего внимания со своей стороны предложить не могу. Ни изящного, ни кривого. Еще раз попытаюсь объяснить, что если товарищ имел в виду необходимость хранить атрибуты некоего товара, задаваемые в виде "от сих до сих", то для хранения этих атрибутов в виде a+-b или [a,b] достаточно двух полей (плюс суррогатный ключ). Вы же не думаете, что придется хранить именованный набор таких диапазонов и выбирать из этого набора значение атрибута товара? guest_20040621> сводятся или к спискам, или к вещественным числам Если бы. Если можно, расшифруйте немного, а то я не пойму, в чем, собственно, проблема. Тупой пример из области, отосящейся к теме этой ветки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 16:42 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621как Вы намерены хранить эти самые дискретные диапазоны Я все время забываю, что Вы говорите о дискретных диапазонах. Ввиду непрофильного образования так и не знаю, что это такое. Надо бы определить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 16:44 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
> расшифруйте Массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 17:54 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621> расшифруйте Массив. Таблица товаров. Таблица значений атрибутов товаров, включающая ссылку на товар и ссылку на таблицу типов атрибутов, по которой и можно определить, в какой, собственно, таблице можно получить расшифровку значения атрибута. Избавиться от упоминания явным образом имен таблиц в данных таблицы типов атрибутов можно, на первый взгляд, только если хранить все расшифровки в одной таблице (в полях разного типа). Или, как вариант, иметь ключ, уникальный для нескольких таблиц (мне это кажется подозрительным, но в общем-то логичным ). В практике можно и названия таблиц в таблицу писать, работать это будет... но потенциально приведет к багам. Это, конечно, геморрой, но с помощью SQL и известной матери каталог товаров напечатать будет можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 18:52 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
> ссылку на таблицу типов атрибутов Это понятно. Хранить-то сами массивы как? Ведь геморройно до безобразия получается. > потенциально приведет к багам Да даже не в этом дело. Концептуально решение кривое. Структура EAV плоха тем, что ее семантика (при наличии метамодели, разумеется) выражена (если вообще выражена) на другом уровне, отличном от уровня семантики реляционной структуры. Винегрет получается. Со всеми вытекающими, естественно. В принципе, эту проблему можно решить, вводя дополнительное семантическое описание уже для реляционной части базы данных. Да, избыточно. Но других вариантов нет. Так что EAV - это только в подаче Тенцера легко и просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 19:16 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
guest_20040621> ссылку на таблицу типов атрибутов Это понятно. Хранить-то сами массивы как? Ведь геморройно до безобразия получается. В таблицах. В принципе-то не очень геморройно. Примером является, например, система, в которой можно конструировать описание товара, и при этом указывать, что для поля Производитель (которое до момента создания данного конкретного вида товара никому нафиг не нужно было) расшифровку надо брать из таблицы Контрагенты (пример очевидно тупой, но смысл передает). Массив? Массив. Ну или пример указания вида упаковки, сорта и т.п. - не будешь же заранее все это забивать в поля справочника товаров. Я так понимаю, что многие дают возможность работать вышеописанным образом, и при этом еще и новые таблицы для хранения массивов создавать. Мне такие решения не нравятся, потому что за внешней простотой там скрывается ужос . Но что остается делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 10:33 |
|
||
|
база товаров - у кого как и что посоветуете
|
|||
|---|---|---|---|
|
#18+
Дискуссия пошла в другом направлении, тоже очень интересном. А я можно опять чуть вернусь к вопросу, который задал? Предположим, эти 100 разных товаров могут быть сгруппированы в несколько категорий. Показатели этих товаров см. предыдущий пост. Выделение товаров в категории спрогнозировать трудно. Возможно, показатели каждого товара столь индивидуальны, что и относить эти товары в какую-л. категорию смысла не имеет. Вопрос: разрешенные наборы показателей связывать с товаром или с категорией? На мой взгляд категории должны существовать сами по себе, а связывать надо все-таки с конкретным товаром. Хотя, конечно, было бы удобней связывать с категорией и автоматически получать набор показателей при отнесении товара в категорию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2007, 06:36 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34511621&tid=1544490]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 523ms |

| 0 / 0 |
