powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как проектировать N-мерный массив
7 сообщений из 7, страница 1 из 1
как проектировать N-мерный массив
    #35417490
Albatross
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть N измерений, Их число не фикированно - они могут добавляться и удаляться.
Хочется хранить массив Y(x1.....xN), где x1....xN - натуральные числа
Если количество измерений увеличивается до N+1, то первоначально
Y(x1.....xN+1) = Y(x1.....xN) при любом xN+1


Единственное, что я придумал - это хранить таблицу

f1......fN, value, где f1...fN - название ключевых полей, а value - значение. Но при добавлении измерения таблицу надо будет менять, что плохо
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35417696
М.б., так? Операции удаления/добавления измерения на триггерах, например.
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35417710
Не ясно, как понимать вот эту строчку Y(x1.....xN+1) = Y(x1.....xN)???
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35428170
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо сделать таблицу с 2 полями:
1)index - bigint unsigned
2)value - того типа, который должны иметь элементы массива
Массив хранится в следуюшем формате. Пусть к - максимальное число элементов вдоль одной размерности. Всего элементов к в степени N.
Для каждого элемента будет одна запись.
Index будет принимать значения от одного до к в степени N.
Y(x1,..xn) храним в поле value записи с index, равным x1*k^0 +x2^k^1+...+xN*k^(N-1)
Для добавления массива просто копируем столбец value k раз и продолжаем индексы.
Размерность придется хранить где-то отдельно.
Выражения k^i можно где-то закешировать.
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35428185
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправляю 3 с конца строчку:
Для увеличения размерности на 1 просто копируем столбец value k раз и продолжаем индексы.
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35428204
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще добавлю, что число элементов по одной размерности можно округлить до степени двойки, и вычислять те числа битовыми операциями.
Кроме того, по полю индекс должен быть сделан кластерный индекс(сорри за тавтологию:))
...
Рейтинг: 0 / 0
как проектировать N-мерный массив
    #35428328
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал классическим образом

dimension( DimensionID )
DimensionIindex (DimensionId, Index, CellID)
Value (CellID , Value)

На DimensionId {DimensionId, Index} - PK, + constraint "Для каждого Cellid нет повторяющихся DimensionID"
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как проектировать N-мерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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