- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Массив такого типа:
С title всё понятно, сделал поле с таким-же название и вставил значение.
А как лучше записать materials, учитывая в дальнейшем нужно будет извлекать из БД все записи у которых в materials например присутствует brick.
сериализация
1. serialize/unserialize
2. JSON
а затем выборка полнотекстовым поиском
http://www.mysql.ru/docs/man/Fulltext_Search.html
https://www.ibm.com/developerworks/ru/library/os-sphinx/
что-то типа "materials":{"brick":"11"}
или если записей мало то на языке программирования вбирать
голый mysql не предназначен для этого. Например в mongodb можно писать массивы огромной вложенности и затем производить выборку по их ключам.
---------- Добавлено 13.02.2017 в 10:48 ----------
обычно эти самые массивы разносят по другим таблицам и в основной ссылаются на записи
а затем выборка полнотекстовым поиском
Это будет быстрее чем оставить массив в файле JSON и извлекать из него?
сериализация
1. serialize/unserialize
2. JSON
а затем выборка полнотекстовым поиском
http://www.mysql.ru/docs/man/Fulltext_Search.html
https://www.ibm.com/developerworks/ru/library/os-sphinx/
что-то типа "materials":{"brick":"11"}
"materials":{"brick":"11"} - не найдет ни недоразвитый полнотекст от mysql ни скорее всего спринкс, да и тяжелый он для такой мелочевки.
а вот обычный LIKE - найдет, но тут тоже возможны варианты.
можно еще извратиться и сделать два поля:
materials_type: ,brick,boards,glass, - первая и последняя запятые нужны для поиска типа: LIKE '%,brick,%'
materials_value: ,11,22,33,
но лучше всего разнести данные по разным таблицам.
materials - вынести в отдельную таблицу и искать джойном?
ну или nosql
ну или лайк json/серриализация
Лайкать, причём если массив будет таким простым, то даже сериализовать необязательно. Но всё зависит от конкретики - смотря по тому, что дальше с ним делать.
Все зависит от полного задания. Записать можно скачем через json/серриализация и даже LIKE подцепить туда. Но если нужен будет не только поиск но и сортировка - будут проблемы. Тогда лучше выносить в разные таблицы и соединять через join
Mysql c какой-то версии имеет тип поля JSON.
То есть можно фильтровать более менее нативно.
Но вот индексов по нему не построить :)
Может все же JOIN-нить несколько таблиц?
Samail, если вы на этапе проектирования и таких данных много, рассмотрите вариант смены базы на PostgreSQL. Там очень мощные встроенные инструменты для работы с json.
https://www.postgresql.org/docs/9.5/static/functions-json.html
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html
В версии MySQL 5.7 появился JSON тип, там же есть функции поиска по JSON.
Но вообще, лучше конечно по таблицам и в JOIN, скорее всего будет и быстрее и первая нормальная форма будет соблюдена.
С JOIN как-то не очень прозрачно видится. Всё равно ведь в основной таблице массив/строку придётся хранить.
Или делать запись для каждого применения в таблице с материалами - но не уверен, что это оптимальнее.