Я пытаюсь изменить схему базы данных для веб-сайта, где у нас есть динамическая форма, заполняемая пользователями на основе категории, в которую они вписываются. Конечным результатом этой динамической формы является то, что у меня есть 100+ столбцов в базе данных для хранения их ответов, но в любом конкретном случае значение будет меньше 10.
Я стараюсь максимально сжать базу данных и, по возможности, удалить значения NULL и 1 решение вышеупомянутой проблемы, которую я рассматриваю, — это использовать таблицу EAV для хранения ответов на переменные вопросы.
Таким образом, таблица 1 будет содержать их имя, а несколько других битов, а таблица 2 будет содержать строку, содержащую вопрос и ответ на каждый вопрос с внешним ключом, связанным с таблицей 1.
Я выполнил некоторые расчёты с оплошностью: если бы они заполняли 1000 форм в день (высокая оценка, что невозможно в долгосрочной перспективе), я смотрю до 2 600 000 строк в таблице 2 в год (1000 * 10 * 260 — рабочие дни). Мой первичный ключ увеличится до 4 миллиардов, так что это не проблема, но я обеспокоен тем, что через несколько лет с 5-10 миллионами записей эта производительность серьезно снизится.
В основном меня интересует производительность. Что касается структуры, то EAV очень предпочтителен, так как он позволяет моему клиенту добавлять новые вопросы без необходимости взаимодействия с базой данных, и это помогает сохранить схему моей базы данных намного жестче, и я не обеспокоен тем, как это усложняет мой код, если это правильное решение для данных.
Задача ещё не решена.
Других решений пока нет …