Работаю с новой версией стороннего приложения. В этой версии изменена структура базы данных, мол "для повышения производительности".
Старая версия БД имела такую общую структуру :
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES
(
ENTITY_ID,
PROPERTY_KEY,
PROPERTY_VALUE
)
, поэтому у нас была основная таблица с полями для основных свойств и отдельная таблица для управления пользовательскими свойствами, добавленными пользователем.
Новая версия встроенной БД имеет такую структуру.:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES_n
(
ENTITY_ID_n,
CUSTOM_PROPERTY_1,
CUSTOM_PROPERTY_2,
CUSTOM_PROPERTY_3,
...
)
Итак, теперь, когда пользователь добавляет пользовательское свойство, новый столбец добавляется в текущую ENTITY_PROPERTY
таблицу, пока не будет достигнуто максимальное количество столбцов. (, управляемая приложением ), создается новая таблица.
Итак, мой вопрос: :Это правильный способ проектирования структуры БД? Это единственный способ "повысить производительность" ? Старая структура требовала множества соединений или под-выбора, но эта структура не кажется мне очень умной (или даже правильной )...