Как правильно организовать структуру базы данных для большого каталога?
Отдельная таблица для: товара, города, категории, параметр 
связь один ко многим: категория - товар(в товаре id категории)
свять многие ко многим: город - товар, товар - параметр (в связующей храним значение параметра для конкретного товара)
Во имя быстродействия используем разные  инструменты типа поисковых движков(sphinx, elastic, solr)  или первое время обходимся кешем
1) как организовать структуру базы данных, каждый город - отдельная таблица или все в одну?не нарушаем 3НФ - все в одной, все параметры в EAV или jsonb postgres2) как сделать поиск, писать самим или есть готовые решения (подскажите если попадались)sphinxsearch.com