powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение многомерного куба (с динамическим количеством измерений) в базе
25 сообщений из 38, страница 1 из 2
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34798594
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Есть такая проблема.
В базе есть некоторое количество словарей (например, месяцы, города, сотрудники и т.п.).
Пользователь может выбрать произвольное количество словарей. Соответственно получаем многомерный куб, где каждая сторона куба - это множество значений одного из словарей. Выбрав любую ячейку куба, пользователь может вбить туда произвольное значение. Если бы количество измерений было фиксированным, то нет проблем. Создаем таблицу, в которой первичный ключ состоит стольких столбцов, сколько словарей используется. Но что делать, если количество и тип столбцов выбираются пользователем? Как такую структуру сохранить в базе?
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34798803
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приведу пример.
Предположим, сотрудник выбрал три словаря: месяцы, города, типы расходов.
Получаем трехмерный куб. По одной грани откладываем месяцы, по второй - города, по третьей - типы расходов. Пользователь заполняет те ячейки, которые ему необходимо.
Например, ячейка (март, Москва, такси) - 1000 руб.
Проблема в том, что размерность куба зависит от того, сколько словарей использует пользователь и может варьироваться от 1 до количества словарей в системе.
Так же содержимое ячейки - любой тип, который пользователь выбирает при построении куба.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34798859
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем собственно проблема? Пользователь выбрал измерения? Описал атрибуты? Вот и создайте соответствующую таблицу для этого куба, включая ключ по измерениям.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34798912
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если проблема только в первичном ключе, а не лимите колонок в СУБД, то создаем таблицу, в которой первичный ключ - суррогат. При желании, если больше совсем никто не котролирует уникальность при загрузке, создаем уникальный индекс/констрейнт - состоит из стольких столбцов, сколько словарей в базе и успешно допускает NULL.
Иначе придется объединять наборы словарей, например тип и назначение расходов - типоназначение расходов (снежинка).
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34798973
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR... то создаем таблицу, в которой первичный ключ - суррогат. ...
И огребем проблему со скоростью доступа к данным. По выделенной таблице тоже будет не все автоматом хорошо, но если складывать все в одну кучу - точно будет весело.

ModelRИначе придется объединять наборы словарей, например тип и назначение расходов - типоназначение расходов (снежинка).
Ээ... из-за чего "придется"? Ну а объединение словарей - не буду говорить, что это совсем всегда плохо, но к плюсам этого подхода у меня весьма скептическое отношение.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799450
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerИ в чем собственно проблема? Пользователь выбрал измерения? Описал атрибуты? Вот и создайте соответствующую таблицу для этого куба, включая ключ по измерениям.

Т.е. предлагается динамически создавать новую таблицу? Т.е. для каждого типа куба будет своя? В принципе, я так и думал, но интересно было, есть ли какое-то иное решение.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799452
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
друзья зовут меня Красавчег Сёка
Ну, дрпустим, решение есть, и что с того? Автору решения на хлеб с маслом будет или как?
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799453
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сиоко Асахара друзья зовут меня Красавчег Сёка
Ну, дрпустим, решение есть, и что с того? Автору решения на хлеб с маслом будет или как?

Автору будет большое человеческое спасибо. Если не устраивает, то уж не обессудьте. :-)
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799464
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleon Сиоко Асахара друзья зовут меня Красавчег Сёка
Ну, дрпустим, решение есть, и что с того? Автору решения на хлеб с маслом будет или как?

Автору будет большое человеческое спасибо. Если не устраивает, то уж не обессудьте. :-)
А ответом будет большое "пожалуйста"!
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799707
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleonНо что делать, если количество и тип столбцов выбираются пользователем? Как такую структуру сохранить в базе?
EAV
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799928
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мод paxmeleonНо что делать, если количество и тип столбцов выбираются пользователем? Как такую структуру сохранить в базе?
EAV

Что-то я слабо представляю, как в данном случае может помочь EAV.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34799995
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerесли складывать все в одну кучу - точно будет весело.Зависит от размеров кучи. softwarerЭэ... из-за чего "придется"? Дык не влезут скажем некие 1350 размерностей в 1000 колонок некой СУБД. Маловероятно, что у автора из реально столько, но кто знает...
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34800024
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleonЧто-то я слабо представляю, как в данном случае может помочь EAV.
Многомерный куб - это показатель (или группа пок-ей) на пересечении n координат. Каждая координата - справочник. Если куб проектирует пользователь, то каждая размерность это одна запись в таблице БД фиксированной стр-ры + запись со значением показателя, т.е. EAV.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801232
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мод paxmeleonЧто-то я слабо представляю, как в данном случае может помочь EAV.
Многомерный куб - это показатель (или группа пок-ей) на пересечении n координат. Каждая координата - справочник. Если куб проектирует пользователь, то каждая размерность это одна запись в таблице БД фиксированной стр-ры + запись со значением показателя, т.е. EAV.

Что-то я не совсем понял. Не могли бы вы привести пример.
Просто в EAV данные сохраняются в таблице со столбцами примерно такого типа :
( objectID, propertyID, value ). Здесь же проблема в том, что в данном случае propertyID - это координата в кубе. Т.е. n значений по n измерениям. Или я что-то не так понял?
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801445
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleonЗдесь же проблема в том, что в данном случае propertyID - это координата в кубе. Т.е. n значений по n измерениям. Или я что-то не так понял?
Да, все правильно (я у себя так и делаю)
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801466
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleon мод paxmeleonЧто-то я слабо представляю, как в данном случае может помочь EAV.
Многомерный куб - это показатель (или группа пок-ей) на пересечении n координат. Каждая координата - справочник. Если куб проектирует пользователь, то каждая размерность это одна запись в таблице БД фиксированной стр-ры + запись со значением показателя, т.е. EAV.

Что-то я не совсем понял. Не могли бы вы привести пример.
Просто в EAV данные сохраняются в таблице со столбцами примерно такого типа :
( objectID, propertyID, value ). Здесь же проблема в том, что в данном случае propertyID - это координата в кубе. Т.е. n значений по n измерениям. Или я что-то не так понял?
Не получится.Там ничего не должно быть кроме ссылок.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801529
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleon( objectID, propertyID, value )
objecttype - тип объекта классификации
objectID - ИД объекта классификации
propertyID - имя координаты (например - Поставщики)
value - значение координаты (ИД Поставщика)
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801609
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRЗависит от размеров кучи.
Скорее, "теоретически зависит". Практически - при весьма небольших и скоро достижимых размерах кучи зависимость превратится в однозначный результат.

ModelRДык не влезут скажем некие 1350 размерностей
Понял. Просто изначально не осознал, к чему относится "иначе" в Вашей фразе. Впрочем, вопрос опять же.. скорее теоретический.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801905
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мод paxmeleon( objectID, propertyID, value )
objecttype - тип объекта классификации
objectID - ИД объекта классификации
propertyID - имя координаты (например - Поставщики)
value - значение координаты (ИД Поставщика)

Наверное вы не поняли. в моем случае, например, если выбрано три словаря (месяцы, города, типы расходов), то тогда ячейка куба имеет кооринаты, например (март, Москва, такси), а значение - 1000 руб.
Т.е. здесь propertyID - это кортеж из трех значений, а value - значение в ячейке куба.
Т.е. propertyID описывает имя property, которое, в данном случае, есть адрес ячейки в кубе.
Для 10 словарей координата ячейки описывается 10 значениями и т.п.
Поэтому EAV тут не подходит.
Или я опять что-то не понял? :-)
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801916
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять же для примера.
Для набора (месяцы, города, типы расходов) у нас записи будут такие:

март, Москва, такси - 1000
апрель, Москва, гостиница - 5000

Для набора (месяцы, города, сотрудники, типы расходов) у нас будет так:

март, Москва, Вася Пупкин, такси - 2000
апрель, Питер, Коля Петров, гостиница - 6000

и т.п.

как это укладывается в схему (objectid, propertyid, value)
как я понял здесь propertyid - это координата. или вы имели ввиду другое?
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34801928
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleonмарт, Москва, Вася Пупкин, такси - 2000

как это укладывается в схему (objectid, propertyid, value)
Первая строка квоты - раскладывается в пять строк указанного формата с одинаковыми objectid и разными propertyid/value.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34802094
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer paxmeleonмарт, Москва, Вася Пупкин, такси - 2000

как это укладывается в схему (objectid, propertyid, value)
Первая строка квоты - раскладывается в пять строк указанного формата с одинаковыми objectid и разными propertyid/value.

Понятно. Что-то мне подсказывает, что лучше создавать отдельную таблицу под каждое требуемое множество справочников, где завести отдельный столбец для objectid, по одному столбцу под каждую координату, и отдельный столбец под значение. В общем, как вы и советовали в начале. Единственная проблема, что таких таблиц может получиться очень много, а так же использование динамического sql.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34802352
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleon softwarer paxmeleonмарт, Москва, Вася Пупкин, такси - 2000

как это укладывается в схему (objectid, propertyid, value)
Первая строка квоты - раскладывается в пять строк указанного формата с одинаковыми objectid и разными propertyid/value.

Понятно. Что-то мне подсказывает, что лучше создавать отдельную таблицу под каждое требуемое множество справочников, где завести отдельный столбец для objectid, по одному столбцу под каждую координату, и отдельный столбец под значение. В общем, как вы и советовали в начале. Единственная проблема, что таких таблиц может получиться очень много, а так же использование динамического sql.
А вы попробуйте на досуге пофантазировать. Представьте себе, что вы будете жить 150 лет, из которых как минимум 100 будете в творческом полёте. В каком направлении будут развиваться программы по управлению данными, которых много (и без разницы, как эти программы называются, СУБД или как по-другому, разве в этом суть?) Данные, которых много! Вот в этом суть и смысл. Научные методы и теория в их унификации в компьютерных системах устарели или по крайней мере недостаточны. Вы ведь не верите в то, что нынешнее состояние в данной области будет вечно оставаться неизменным? Вот и приступайте. И не флеймите более, отпускаю вам грехи ваши...
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34803484
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paxmeleonПривет всем.

Есть такая проблема.
В базе есть некоторое количество словарей (например, месяцы, города, сотрудники и т.п.).
Пользователь может выбрать произвольное количество словарей. Соответственно получаем многомерный куб, где каждая сторона куба - это множество значений одного из словарей. Выбрав любую ячейку куба, пользователь может вбить туда произвольное значение. Если бы количество измерений было фиксированным, то нет проблем. Создаем таблицу, в которой первичный ключ состоит стольких столбцов, сколько словарей используется. Но что делать, если количество и тип столбцов выбираются пользователем? Как такую структуру сохранить в базе?
2 варианта:
1. динамически создавать таблицу под куб.
2. Согдать куб по всем измерениям, использовать только некоторые.
--
Есть еще вариант, с которым я год работал, и который позволяет в точности то, что Вам надо, но, боюсь, это слишком тяжелое решение.
...
Рейтинг: 0 / 0
Хранение многомерного куба (с динамическим количеством измерений) в базе
    #34803901
paxmeleon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сиоко Асахара
А вы попробуйте на досуге пофантазировать. Представьте себе, что вы будете жить 150 лет, из которых как минимум 100 будете в творческом полёте. В каком направлении будут развиваться программы по управлению данными, которых много (и без разницы, как эти программы называются, СУБД или как по-другому, разве в этом суть?) Данные, которых много! Вот в этом суть и смысл. Научные методы и теория в их унификации в компьютерных системах устарели или по крайней мере недостаточны. Вы ведь не верите в то, что нынешнее состояние в данной области будет вечно оставаться неизменным? Вот и приступайте. И не флеймите более, отпускаю вам грехи ваши...

Не знаю как на счет флейма, но с вашей стороны не было ни одного сообщения по теме в этой ветке.
Так что ...
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение многомерного куба (с динамическим количеством измерений) в базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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