Как организовать базу данных с динамическими характеристиками?
Приветствую!
В интернет магазине есть товары с разными характеристиками , например : если это мобильники , значит характеристики такие (стандарт: GSM ,камера : 20mpx ,ик-порт : есть ,ну и тд),а если это холодильник - характеристики будут такие (Тип холодильника : Двухкамерный , Количество компрессоров : 1 , Тип управления : Электронное , и тд)
Вот и вопрос ,каким образом организовать БД ,посредством Mysql и Laravel ? Для каждого типа товара необходима своя таблица?
Или использовать JSON поля ? Что безопаснее и быстрее ? Заранее благодарен!
За ларавель не скажу, тут тебе самому надо конечно неучиться пользоваться интернетом - наверняка готовых плагинов вагон и маленькая тележка
А в целом надо конечно использовать джейсон поля в релационной таблице.
Но при этом вести их строгий учет
Из опыта выполнения подобного проекта:
Ко всем товарам создаётся отдельная таблица с полями:
- [ID свойства]
- [ID товара]
- [Краткое название свойства] - Например "Объём памяти"
- [Значение свойства] - Например "30"
- [Единица измерения] - Например "Гб"
- [Тип свойства] - для группировки свойств по каким-то внутренним признакам.
Соответственно, у каждого товара может быть бесконечное число свойств.
Mellorn, вот и я все-же прихожу к PostgreSQL. EAV значительно медленнее,хотя с точки зрения добавления какой-то динамики - удобнее. Возможно есть какие-то хэлперы, плагины для организации работы PostgreSQL и Laravel ?
Делал подобное, но использовал PostgreSQL. Полёт нормальный.
,можно узнать о паттерне подробнее ,перешел на postgresql ,но ,никак не могу понять архитектуру. Если не сложно ,можно получить пример паттерна ? Заранее благодарю!