Как сделать магазин?

Не стоит пытаться реализовать это при помощи добавления в базу большого количества колонок — замучаетесь поддерживать. Вместо этого можно сделать в таблице товаров служебную колонку, в которой хранить список кодов, каждый из которых будет означать принадлежность товара к определённой категории. Например, в описании ноутбука код c239 будет соответствовать процессору Intel, c566 — процессору Core i3, а c57 — разрешению 1366×768. После этого можно воспользоваться каким-нибудь движком для полнотекстового поиска и самый сложный пользовательский запрос превратится в банальный поиск текста, в котором встречаются все перечисленные слова.
Также для успешного проекта обязательно понадобится редактор, который придумает удобную классификацию и сделает качественные описания для всех товаров.
Такое решение подразумевает, например, что если пользователь ищет ноутбук и уже выбрал процессор, то было бы неплохо показать ему, в каких ценовых диапазонах есть такие ноутбуки и сколько. Если реализовывать такую функциональность в лоб, то можно создать очень серьёзную нагрузку на сервер и заставить пользователя ждать слишком долго. Но так как памяти в серверах сейчас довольно много, а товаров в магазине обычно всё-таки меньше 10 тысяч, то эта проблема может быть решена.