2013-07-19 8 views
0

Я создаю приложение, в котором пользователь может создать любое количество веб-форм. Формы будут охватывать широкий круг тем и могут содержать все виды полей, разделенных на любое количество подформ.Допустимый подход к динамическому созданию таблиц SQL?

Для того, чтобы это не стало проблемой нормализации, мое приложение динамически генерирует таблицы для подформ. Конечная архитектура может выглядеть следующим образом (упрощенный):

/* Статическая таблица - иерархический уровень 1 */
[ProjectTable]
project_id (KEY, AUTO INC), project_name

/* Статический таблица - иерархический уровень 2 */
[RegistrationTable]
project_id (Parent ID), registration_id (KEY, AUTO INC), REGISTRATION_DATE

/* Динамическая таблица - иерархический уровень 3 */
[RegistrationSubTable_xxxxxxxx]
registration_id (Parent ID), Firstname, фамилия, электронная почта

/* Динамическая таблица - иерархический уровень 3 */
[TRegistrationSubTable_yyyyyyyy]
registration_id (Parent ID), BOOK_TITLE

(Надеюсь, это понятно :)

Меня беспокоит то, что число динамических таблиц будет расти бесконечно, достигнув десятков тысяч за несколько лет. Будет ли это проблемой для SQL (в настоящее время MS SQL)?

Есть ли какие-либо оговорки, о которых я не думал?

+5

Инстинкт кишки говорит, что это невероятно плохая идея. Почему первичный ключ для ваших таблиц не может быть расширен, чтобы обслуживать отдельные формы, оставляя при этом несколько таблиц? –

+0

Я должен согласиться с @AdrianWragg –

+0

Взгляните на [этот ответ] (http://stackoverflow.com/a/5858666/1114171) –

ответ

0

Я нахожу, что эта тема maximum-number-of-workable-tables отвечает на мой вопрос.

Короче говоря, это не приведет к поражению производительностью> 10 тыс. Столов, даже миллионов. Лучше для производительности иметь много маленьких таблиц, чтобы иметь немного огромной таблицы. Проблема состоит в том, чтобы запрашивать и управлять ими. В моем случае это не проблема, поскольку мое приложение уже делает это для меня.