Mysql Помогите со структурой бд

valoook

Новичок
Здравствуйте, помогите ВЫБРАТЬ ОПТИМАЛЬНЫЙ вариант структуры или напишите свой. А так-же буду рад увидеть Ваше мнение(+/-) о конкретном варианте.

Хоть и предстоит сделать велосипед но гугл не помог(выбрать оптимальный вариант).

Задача такая: необходимо хранить информацию о товарах разного типа. Есть товар типа А с одними характеристиками, товар типа Б с другими характеристиками.

Структура номер 1:

Таблица с товарами:
id имя

Таблица с характеристиками:
id имя характеристики

Таблица связей и значений:
ид, ид товара, ид характеристики, значение

Структура номер 2:

Таблица для товаров, которая хранит только ид и название и тип товара и характеристики общие для всех товаров такие как цена и т. д.

Таблица с типами товаров и описанием(не значений) дополнительных характеристик, тоесть ид типа, название типа, и массив описаний.

Таблица которая хранит значения дополнительных характеристик для каждого товара, которая хранит массив значений.

Плюсы:
Не придется создавать таблицу под каждый тип.

Минусы:
При отображении одного товара будет послан запрос в 3 три таблицы.
Много лишних операций при изменении одной характеристики.

Структура номер 3:

Таблица для товаров, которая хранит только ид и название и тип товара.

Таблицы под каждый тип товаров с полями под каждую характеристику.

Плюсы:
легко получать изменять данные

Минусы:
много однотипных таблиц
 

Фанат

oncle terrible
Команда форума
первое гуглится по EAV модель
второй и третий в реальной жизни плох тем, что таблицы все равно растут до чудовищных размеров - даже в пределах одного и того же товара количество разных (имеющихся только у части товаров) характеристик зашкаливает,

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

подумай об использовании mongodb
познакомиться с ней очень просто, это займёт всего полчаса: http://jsman.ru/mongo-book/
 
Сверху