У меня есть структура таблицы в MySQL, где у меня есть следующая структура:
home_id, home_name, дата добавления
У меня есть другая таблица, называемая спецификациями, со следующей структурой:
home_id, spec_key, spec_value
В нем у меня могут быть такие записи:
1, price, 500000
1, location, 90210
1, rooms, 3
1, washrooms, 3
1, furnished_basement, 0
2, location, 14410
2, garage_size, 3
2, price, 335000
Для целей поиска я хотел бы денормализовать приведенное выше. Структура таблицы (denormalized_homes
) будет выглядеть примерно так:
home_id, price, location, rooms, washroom, furnished_basement, garage_size, dateadded
Как видно из вышеизложенного, а) не все записи имеют значение для всех столбцов. б) Структура таблицы не подходит для запросов типа INSERT INTO
denormalized_homesselect * from
specs. Я также не могу использовать хранимые процедуры или триггеры (правила хоста).
Тактика, которую я использовал до сих пор, заключается в том, чтобы вставить home_id в таблицу denormalized_homes
, а затем просмотреть каждое поле в спецификации с помощью примерно следующего запроса:
UPDATE `denormalized_homes` dh, specs s SET dh.price = s.spec_value WHERE dh.home_id = s.home_id AND s.spec_key = "price";
Создание запроса для каждого возможного столбца, а затем их запуск работают. Я просто думаю, что должен быть лучший способ, не так ли?