Это «правильный» дизайн базы данных?
Я работаю с новой версией стороннего приложения. В этой версии структура базы данных изменена, говорят «для повышения производительности».
Старая версия БД имела общую структуру, подобную этой:
<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"? Старая структура требовала большого количества соединений или суб-выбора, но эта структура не кажется мне очень умной (или даже правильной) ...