none
Создание пользовательских таблиц в БД RRS feed

  • Общие обсуждения

  • В моем проекте пользователь должен самостоятельно создавать таблицы (которые всегда содержат три обязательных поля) и заполнять их данными. Но так как давать пользователям менять метаданные - признак плохого тона. То я попытался выкрутиться из этой ситуации, но пока безуспешно.

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

    Потом наткнулся на метод EAV, однако он позволяет хранить только одно значение для каждого атрибута, а в моем случае значение может быть очень много и они в связке (по сути строки).

    Пожалуйста, скажите есть ли какие-нибудь существующие методы, позволяющие решать похожие задачи?

    В качестве СУБД использую Firebird.

    • Изменен тип LIKORIS 28 мая 2012 г. 14:38

Все ответы

  • Если Вы используете для создания таблиц хранимые процедуры то всё нормально в частности в MySQL однако с Firebird не приходилось работать и потому сложно сказать насколько это там реализовано. Насчёт хорошего или плохого тона - в принципе главное чтобы задача была решена и желательно в поставленные строки. Если Вы предусмотрели защиту от дурака и от банального SQL Injection то почему бы и не создать таблицу так сказать в лоб.

    О сколько нам открытий чудных, готовит просвещения дух

  • На MS SQL Server я подобное решаю с использованием полей XML - одно поле XML в лёгкую может заменить хоть сколько таблиц.

    ------------

    А Firebird умеет работать с XML, т.е. поддерживает тип данных XML и xquery запросы? Даже если не поддерживает, можно XML хранить как строку в базе, а обрабатывать уже на уровне бизнес логики. 


    • Изменено A.G.Sedov 28 мая 2012 г. 9:17