У меня на руках похожая «проблема». Я разрабатываю небольшую базу данных продуктов, которая включает теги, а также присваивает тегам значение (например, имя тега: цвет, значение: зеленый).
Две основные таблицы - это элементы (I) и статьи (A). Предметы - это реальные физические предметы, а предметы - производные от предметов. Статьи - это то, что можно отображать на веб-сайте, а предметы - это то, что нужно хранить на складе. Небольшим примером этой взаимосвязи могут быть автомобильные детали. Радиатор с известными размерами и другими данными может соответствовать множеству различных моделей и производителей, поэтому элемент, используемый для обозначения радиатора, относится к нескольким артикулам, которые указывают на то, какой радиатор подходит. С другой стороны, у нас могут быть два разных радиатора для одной модели: один - это новая заводская версия, а другой - только что модернизированный. В таком случае к одной и той же статье относятся два пункта.
Итак, у меня и А есть отношения N: M.
Предметы и статьи обладают определенными свойствами. Например, элемент радиатора может иметь такие данные, как состояние, материал, вес, высота, ширина и толщина. В статье также есть некоторая базовая информация, такая как марка, модель, год, двигатель и т. Д., Но также могут потребоваться некоторые специальные данные, такие как модель шасси, тип трансмиссии или что-то еще, например, два разных типа фитингов, которые использовались на одной модели. Поскольку два элемента могут ссылаться на одну статью, это означает, что я не могу просто помечать статьи. Пометить статью обоими значениями условий просто глупо, с другой стороны, пометить один товар несколькими экземплярами модели, марки или каким-либо особым требованием также не является хорошей идеей. _существуют два типа свойств: первый указывает на то, на что что-то похоже, а второй тип указывает на то, что оно подойдет.
Теги не обязательно должны иметь значение, они могут просто действовать как обычный тег, назначаемый объекту.
Радиаторы - это всего лишь пример простого изделия. Мы могли бы также добавить некоторые компьютерные детали или одежду в нашу базу данных. Это означает, что мне нужно иметь возможность ставить разные «теги» на два разных объекта, I и A.
Мне нужно реализовать поиск статей в интернет-магазине. Допустим, я использую древовидную навигацию, где у меня есть категория под названием «Подержанные радиаторы Nissan». Поиск будет включать поиск как статей, так и предметов, статьи имеют тег Model: Nissan, а предметы имеют тег Condition: Used. Конечно, когда пользователь просматривает статью, он действительно видит все элементы, связанные со статьей.
Одно из решений, над которым я размышляю, - это дизайн базы данных в виде треугольника, где есть общая таблица, называемая тегами для всех свойств и тегов.
У нас есть элементы таблиц (I), статьи (A) и теги (T). Они объединены отношениями N: M: I2A соединяет элементы со статьями. T2I присоединяет теги к элементам и может также хранить значение тега или свойства. T2A присоединяет теги к статьям и может также хранить значение тега.
На бумаге этот дизайн с 6 таблицами для решения этой проблемы выглядит неплохо, но у меня возникает головная боль при формировании приличного запроса, где я могу выбрать статьи, соответствующие набору разных тегов и их значений, например: Condition = Remanufactured , Марка = Nissan
Я хочу иметь возможность делать что-то вроде www.summitracing.com. Выберите «Отделы» слева под «Магазином», выберите любую категорию, и вы увидите, как им удалось придать предметам некоторые свойства. У них есть размер двигателя для большинства применений, но при поиске колесных дисков у них также есть свойство ширины.
Мы будем очень благодарны за любые отзывы по этому поводу, я начинаю поражать воображение, пытаясь разработать это.
person
Community
schedule
15.02.2009