Я работаю с новой версией стороннего приложения. В этой версии структура базы данных изменяется, они говорят «улучшить производительность».Является ли это «правильным» проектом базы данных?
Старая версия БД имела общую структуру, как это:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES
(
ENTITY_ID,
PROPERTY_KEY,
PROPERTY_VALUE
)
таким образом мы имели основную таблицу с полями для основных свойств и отдельной таблицы для управления пользовательских свойств, добавленных пользователем.
Новая версия БД InstEd имеет структуру, как это:
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
таблице до максимального числа столбцов (управляется приложением), то создается новая таблица.
Итак, мой вопрос: это правильный способ проектирования структуры БД? Это единственный способ до «увеличить производительность»? Старая структура требовала много соединений или подсетов, но эта структура не кажется мне очень умной (или даже правильной) ...
«Подождите, пока вы столкнетесь с максимальным количеством таблиц на базу данных» ... но тогда вы можете просто создать новую базу данных ;-) +1 для просмотра общей архитектуры и пожелания я мог бы дать еще +1 для каскадные затраты на реинжиниринг DAL, модульные тесты, ... –