powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическое изменение схемы данных vs. Общая таблица
32 сообщений из 32, показаны все 2 страниц
Динамическое изменение схемы данных vs. Общая таблица
    #34914169
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уверен, что тема не раз уже обсуждалась, но чёткого ответа так и не нашёл.
Вопрос такой:
Пользователи системы должны уметь импортировать в БД данные такого вида:

Код: plaintext
1.
Table1
Field1 | Field2 | Field3 .....

Причем - у каждого пользователя произвольный набор полей.
Как это правильнее сделать? На ум пока приходят 2 варианта:
1) динамически изменять схему данных, создавая для каждого пользователя свою таблицу в БД
Какие есть доводы против этого помимо того, что обсуждалось здесь ?
2) Вести одну общую для таблицу с максимальным количеством полей. В этом случае в таблице будет много пустых значений.

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

Есть ли иные, более красивые решения или может модификации предложенных выше?
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914276
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradm пишет:

3) Применить подход БД - хранилище атрибутов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914284
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извратиться можно по-всякому, но для названных операций очень мало смысла применять нечто отличное от второго подхода.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914302
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
muradm пишет:

3) Применить подход БД - хранилище атрибутов.
Posted via ActualForum NNTP Server 1.4
Имеется ввиде нечто виде

Код: plaintext
1.
2.
3.
4.
5.
6.
TableNameValue

Name | Value

Field1 | Value1
Field2 | Value2
Field3 | Value3
?
К рассматриваемой задаче не очень подходит, много данных планируется, таблица разрастется непомерно
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914308
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerИзвратиться можно по-всякому, но для названных операций очень мало смысла применять нечто отличное от второго подхода.
Хорошо, а какие основные доводы против первого метода?
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914336
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradmХорошо, а какие основные доводы против первого метода?
1. С очень большой вероятностью рано или поздно захочется делать запросы по данным нескольких или даже всех пользователей - хотя бы "а сколько всего данных у нас в системе". Динамически формировать объединение таблиц через union - то еще занятие, да и вообще динамический код - лишние хлопоты.

2. Пользователям придется только ради этого давать права на создание-изменение таблиц в схеме. И нет никакой гарантии, что они не поломают чужие таблицы.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914430
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OK, спасибо
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914494
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradm пишет:
> К рассматриваемой задаче не очень подходит, много данных планируется,
> таблица разрастется непомерно

Ну да и фиг с ней, пусть растет. Производная Логарифма в бесконечности убывает.
(математики есть ? я правильно сказал ?)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914576
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, неправильно.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34914941
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:
> Нет, неправильно.

Ты же не математик. Ну не важно, имелось в виду, что
логарифм на + бесконечности хоть и не имеет асимптоты,
но все равно растет очень медленно. И более того, он
растет тем медленнее, чем больше растет переменная.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34915169
SPQR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Ты же не математик.
Загляни к нему в резюме ;)
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34919080
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Нет, неправильно.

А что неправильно? вроде так и есть, убывает при возрастающем x.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34919155
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин
И вправду, чушь сказал.

2MasterZiv: прошу прощения.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34919697
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу не важно, имелось в виду, что логарифм на + бесконечности хоть и не имеет асимптоты
Имеет :)
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34919978
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк пишет:

> Ну не важно, имелось в виду, что логарифм на + бесконечности хоть и не
> имеет асимптоты
> Имеет :)

Ну расскажите тогда, какую.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34920011
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу расскажите тогда, какую.
(ln(x))' = 1/x
На + бесконечности асимптотически приближается к 0 (сверху).
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34920053
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк пишет:
> (ln(x))' = 1/x
> На + бесконечности асимптотически приближается к 0 (сверху).

"имелось в виду, что логарифм на + бесконечности хоть и не имеет асимптоты,"

Логарифм сам не имеет асимптоты. А его производная может и имеет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34920063
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛогарифм сам не имеет асимптоты.
Гм, действительно не заметил, что во втором сообщении уже про логарифм а не про производную...
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34920950
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradmЕсть ли иные, более красивые решения или может модификации предложенных выше?

Решение есть. Система на основе описателей объектов.

http://www.rbsystem.h18.ru/

Только мне непонятно, почему пользователи сами должны создавать таблицы.
Ведь поля бывают разные и особенно поля, содержащие справочную, повторяющуюся информацию. Не каждый бухгалтер с 20-летним стажем справится с такой задачей.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34920980
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey888 muradmЕсть ли иные, более красивые решения или может модификации предложенных выше?

Решение есть. Система на основе описателей объектов.

http://www.rbsystem.h18.ru/

Только мне непонятно, почему пользователи сами должны создавать таблицы.
Ведь поля бывают разные и особенно поля, содержащие справочную, повторяющуюся информацию. Не каждый бухгалтер с 20-летним стажем справится с такой задачей.

Ссылка не открывается.
Здесь речь не идет о том, чтобы пользователи сами создавали таблицы. Для них будет аккуратненький интерфейс. Таблицы создаваться будут приложением.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921025
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня открывается.
Надо просто подолжать - документ большой.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921048
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradmЗдесь речь не идет о том, чтобы пользователи сами создавали таблицы. Для них
будет аккуратненький интерфейс. Таблицы создаваться будут приложением.

А что вы подразумеваете под предложением "Таблицы будут создаваться приложением"?
Может стоит взять ERWin и пусть пользователи там и ваяют таблицы, а ERWin сгенерирует скрипт на создание таблицы.
Или можно научить пользователей Oracle Disigner.
Он очень грамотно формирует скрипты на модификацию таблиц.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921085
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey888 muradmЗдесь речь не идет о том, чтобы пользователи сами создавали таблицы. Для них
будет аккуратненький интерфейс. Таблицы создаваться будут приложением.

А что вы подразумеваете под предложением "Таблицы будут создаваться приложением"?Я, конечно, не автор - но что-то мне подсказывает, что это означает:
Когда пользователь нажимает кнопку в интерфейсе "Загрузить", программа выполняет - CREATE TABLE TMP_TAB_2345 ....
и грузит во вновь созданную таблицу данные.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921107
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если пользователь неправильно создал таблицу, то что произойдет?
Допустим забыл создать одно поле, как пройдет загрузка?
Про типы данных я вообще молчу.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921145
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muradmПользователи системы должны уметь импортировать в БД данные такого вида:

Код: plaintext
1.
Table1
Field1 | Field2 | Field3 .....

Причем - у каждого пользователя произвольный набор полей.
[]
По этим полям для каждого пользователя будут строится выборки, то есть целиком загнать Table1 сериализованной в одно поле - не выход.
пользователям запрещено видеть чужие данные - вариант (1).
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921256
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey888А если пользователь неправильно создал таблицу, то что произойдет?
Допустим забыл создать одно поле, как пройдет загрузка?
Про типы данных я вообще молчу.

Bely правильно понимает задачу.
Насчет некорректных данных, то корректность будет проверяться опять-таки приложением при импорте. В текущей задаче обязательное условие лишь наличие ключевого поля с фиксированным именем - всё остальное на усмотрение пользователя.

Возвращаясь к исходному вопросу - уже принято решении об общей таблице (вариант 2), от динамического изменения схемы данных решили отказаться.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921334
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком формате хранятся исходные данные?
может написать процедуру, которая сама будет определять поля таблицы?
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921363
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey888В каком формате хранятся исходные данные?
может написать процедуру, которая сама будет определять поля таблицы?
Не совсем понимаю, какое это имеет отношение к теме?
Допустим числовой идентификатор, а все остальные поля строковые.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34921436
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не про тип данных спросил, а про формат, в котором хранятся данные.
Например в XML или CSV файлах.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34922043
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey888Я не про тип данных спросил, а про формат, в котором хранятся данные.
Например в XML или CSV файлах.
Да, импорт будет именно из CSV и XML
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34922071
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если CSV файл формируется из Excel, то можно первой строкой задавать имена полей, которые автоматически будут создаваться в новой таблице.
таким образом совсем не надо писать интерфес для создания таблицы, а создавать таблицу перед загрузкой автоматически, используя имена полей из первой строки.
...
Рейтинг: 0 / 0
Динамическое изменение схемы данных vs. Общая таблица
    #34922383
muradm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey888если CSV файл формируется из Excel, то можно первой строкой задавать имена полей, которые автоматически будут создаваться в новой таблице.
Да, именно так и сделано.
sergey888таким образом совсем не надо писать интерфес для создания таблицы, а создавать таблицу перед загрузкой автоматически, используя имена полей из первой строки.
Я же говорю - от варианта динамического создания таблиц отказались. Используем одну общую таблицу. Тема закрыта вроде уже.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическое изменение схемы данных vs. Общая таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]