Мне нравится чистый реляционный дизайн, но иногда возникает необходимость в методе хранения данных Entity / Value. Особенно там, где пользователю нужно часто создавать новый тип данных.
Я видел в некоторых коммерческих программах, что они динамически создают стандартные таблицы, а не используют таблицы EV.
Очевидно, что это не комплексное решение, и оно может работать только в том случае, если вы ограничите типы данных, которые вы можете определить. Однако он имеет следующие преимущества:
Так что для меня это звучит здорово, но пропустите эту идею мимо администратора базы данных, и вы получите много зубов. Это хорошая идея, каковы подводные камни, и пробовал ли кто-нибудь это сделать?

Прежде всего: приложение не должно иметь возможность изменять структуру базы данных, потому что у них не должно быть на это прав.
Во-вторых: я думаю, что накладные расходы на создание хорошего решения для создания структуры базы данных хорошо «на лету» не окупятся.
В-третьих: это может вызвать серьезные побочные эффекты с другими вещами, использующими базу данных (резервное копирование и поддержка скриптов, других приложений и т. д.), Если все сделано неправильно.
Не так давно я создал приложение для онлайн-опросов. Я использовал гибридную форму в качестве схемы базы данных:
INSERT INTO temp_table SELECT ..., используя множество LEFT JOIN.Этот подход был идеальным для этого конкретного приложения, потому что опрос обычно включает этап, на котором вводятся ответы, и этап, на котором результаты анализируются.
Итак, мой совет: подумайте о предполагаемом использовании. Этот пример сработал только из-за особых требований этого приложения. Вы в основном вставляете и обновляете значения (OLTP)? Или вы хотите выполнять агрегированные запросы (OLAP)? Постройте свою схему согласно ответу на этот вопрос.