Это «правильный» дизайн базы данных?

Я работаю с новой версией стороннего приложения. В этой версии структура базы данных изменена, говорят «для повышения производительности».

Старая версия БД имела общую структуру, подобную этой:

<code>TABLE ENTITY
(
    ENTITY_ID,
    STANDARD_PROPERTY_1,
    STANDARD_PROPERTY_2,
    STANDARD_PROPERTY_3,
    ...
)

TABLE ENTITY_PROPERTIES
(
    ENTITY_ID,
    PROPERTY_KEY,
    PROPERTY_VALUE
)
</code>

поэтому у нас была основная таблица с полями для основных свойств и отдельная таблица для управления пользовательскими свойствами, добавленными пользователем.

Новая версия встроенной БД имеет такую структуру:

<code>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,
    ...
)
</code>

Итак, теперь, когда пользователь добавляет пользовательское свойство, новый столбец добавляется к текущемуENTITY_PROPERTY стол доmax number of columns (управляется приложением), затем создается новая таблица.

Итак, мой вопрос: это правильный способ проектирования структуры БД? Это единственный способ"increase performances"? Старая структура требовала большого количества соединений или суб-выбора, но эта структура не кажется мне очень умной (или даже правильной) ...

Ответы на вопрос(5)

Ваш ответ на вопрос