MySQL структура товаров, правильно спроектировать

338 views
Skip to first unread message

Dervissh

unread,
Mar 19, 2012, 12:02:38 AM3/19/12
to RubyOnRails to russian
есть Товары, к примеру:
1. Майка "Ололо", зеленая, размер 10, фоток 5
2. Майка "Ололо", красная, размер 2, фоток 2
3. Майка "Ололо", красная, размер 4, фоток 2

Т.е. вижу два варианта:
1) цвета, размеры, другие атрибуты будут храниться в отдельных
таблицах, в связи с товаром 1 к Многим

либо
2) В таблице имеем записи товаров с разными размерами и цветами - т.к.
- это разные физические товары на складе с разным id, получается, что
атрибуты товара будут храниться в тоже таблице что и сам товар, т.е. в
отличии от 1го варианта, в основной таблице у нас несколько записей

какой вариант более правильный для структуры бд магазина?

Андрей

unread,
Mar 19, 2012, 1:26:12 AM3/19/12
to ror...@googlegroups.com
Можно использовать это: https://github.com/coffeeaddict/has_eav или это http://torqueo.net/deep-into-products-storage-technique/ У того и другого метода есть свои плюсы и минусы. Я бы выбрал второй вариант, так как из коробки у вас будет валидация, однако возникают проблемы при поиске по БД, но для этого можно использовать sphinx.

Akzhan Abdulin

unread,
Mar 19, 2012, 4:14:06 AM3/19/12
to ror...@googlegroups.com
С точки зрения учёта, это всё - разные товары. Так что я бы каждую вариацию майки представлял отдельным товаром. 

Хотя всё зависит от точки зрения (цели и задачи).


19 марта 2012 г. 8:02 пользователь Dervissh <vadim...@gmail.com> написал:

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Лев Черемухин

unread,
Mar 20, 2012, 12:20:31 AM3/20/12
to ror...@googlegroups.com
Если свойства у товаров разные (у маек - свои, у вертолётов - свои) то тут два варианта
первый NoSQL - идеален для хранения и поиска
второй ActiveRecord storage - поле, в которое сериализуются все поля, кроме основных (название, цена, и т.д.) - хранить тоже удобно, но искать по параметрам уже сложнее
если в магазине только майки, подойдет второй вариант, либо параметры по колонкам таблицы

заметьте, выделять параметры в отдельную таблицу я не предлагаю :)

понедельник, 19 марта 2012 г. 10:02:38 UTC+6 пользователь Dervissh написал:

terraplane

unread,
Mar 21, 2012, 7:56:40 AM3/21/12
to RubyOnRails to russian
Правильный вариант -- это две таблицы, Товары и Характеристики
Майка "Ололо" стоит 15 шекелей и занимает одно место на складе.,
независимо от размера и цвета. Поэтому для учета остатков и стоимости
надо выносить размер и цвет.
Ситуация, когда цена хранится в таблице товаров (плохой, негодный
вариант):
Если размер определяет цену ("Ололо" стоит 15 шекелей, а "Ололо-
Толстяк" стоит 20 шекелей), то соответственно размер выносится из
характеристик в основную таблицу. Новая колонка используется для
анализа остатков в разрезе номенклатуры и цен.
Reply all
Reply to author
Forward
0 new messages