Я создаю простую систему сопоставления данных с PHP, PDO и Mysql. Одним из его помещений является сопоставление массивов с объектами путем создания третичных таблиц (не уверены, правильно ли это имя).Создать таблицу, если она не существует, является дорогостоящей?
Так что, когда я карта массива, я создаю таблицу с утверждением работы для всех, которая использует имя класса и имя метода прошло, что-то вроде этого:
"create table if not exists ".$tablename." (id_".$firstName." int unsigned not null, ".$secondName." ".$type.", constraint fk_".$tablename." foreign key (id_".$firstName.") references ".$firstName."(id) ".$secondReference.");"
код не проблема здесь. То, что я хотел знать, это то, что его плохая идея, чтобы попытаться создать таблицу (если она не существует) на каждой итерации (она создает ее только для реальной в первой итерации каждого элемента).
EDIT (пояснение): Как указано, создание беспорядочных таблиц не вызывает беспокойства (это не произойдет), поскольку этот процесс автоматизирован в соответствии с классами (моделями), которые я использую. Беспокойство заключается в том, что это слишком дорогостоящая память и трафик, чтобы проверить, существует ли таблица на каждой итерации (таким образом, для каждого элемента я дважды получал бы доступ к базе данных, один раз для проверки наличия таблицы, а затем снова для вставки нового элемента в таблицу).
Другой вариант заключается в том, чтобы проверить, существует ли таблица через инструкцию select, но она не выглядит намного лучше.
Одна важная информация заключается в том, что эти методы, используемые для сопоставления, будут доступны через объекты DAO, ссылающиеся на каждый объект.
Edit: Ссылка на GitHub с проектом является https://github.com/Sirsirious/SPDMap
Проверка перед выполнением всегда хорошо – devpro
* 'создать таблицу (если она не существует) для каждого элемента массива «* почему вы создаете столько таблиц? звучит как плохой дизайн –
Dagon, он создает одну таблицу для каждой возможной таблицы «многие-ко-многим», уже разработанной в модели. Он не создает таблицу для каждого элемента, но пытается создать таблицу для имени элемента, если она не создана. Я как бы хочу беспокоиться только о моделировании классов, а затем позволить системе беспокоиться о сопоставлении sql. –