powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / матрицы в БД
22 сообщений из 22, страница 1 из 1
матрицы в БД
    #32791267
бд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как хранить матрицы ( несимметричные, разной размерности) в БД ?
...
Рейтинг: 0 / 0
матрицы в БД
    #32791442
Если просто хранить, я бы сделал так:
таблица имен матриц:
ID, NAME_MATRIX
таблица столбцов:
ID, ID_NAME_ROW, NAME
таблица строк:
ID, ID_NAME_COL, NAME
таблица значений:
ID_NAME_ROW, ID_NAME_COL, VALUE
...
Рейтинг: 0 / 0
матрицы в БД
    #32791555
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В виде значений и индексов (псевдовектор).
Например таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE
  matrix_5dim
  (
  m5_id int not null,
  m5_ind1 int not null,
  m5_ind2 int null,
  m5_ind3 int null,
  m5_ind4 int null,
  m5_ind5 int null,
  m5_value
  )
позволяет хранить матрицы размером от 1 до 5 размерностей.

Плюсы:
-- простая структура
-- гибкая

Минусы:
-- сложности с извлечением данных
...
Рейтинг: 0 / 0
матрицы в БД
    #32791900
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предлагаю хранить так:


| ID матрицы | ID столбца | ID строки | Значение элемента |

Достоинства: полная независимость от размерности, все операции над матрицей прекрасно выполняются простыми селектами/апдейтами
...
Рейтинг: 0 / 0
матрицы в БД
    #32792061
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_bobя предлагаю хранить так:


| ID матрицы | ID столбца | ID строки | Значение элемента |

Достоинства: полная независимость от размерности, все операции над матрицей прекрасно выполняются простыми селектами/апдейтами

Вот это мне нравится, только бага в том, что есть вероятность недоопределить матрицу, т.е. каких элементов может не быть, хотя их в этом случае можно считать нулевыми. А такой вопрос: что если будет две записи (0, 0, 0, 23) (0, 0, 0, 21)?
...
Рейтинг: 0 / 0
матрицы в БД
    #32792285
Фотография vma_mnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Man555 А такой вопрос: что если будет две записи (0, 0, 0, 23) (0, 0, 0, 21)?

уникальный индекс по столбцам
ID матрицы | ID столбца | ID строки
...
Рейтинг: 0 / 0
матрицы в БД
    #32793342
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вторая запись не вставится, т.к. будет нарушение уникального индекса, а для тех, кто не догадается сделать индекс уникальным, или констрэйнт повесить - будет то ли одна запись, то ли одна, но определитель неправильный будет, то ли будет восприниматься как (0,0,0,44), смотря от того, как выборки делаться будут

p.s. в матрицах обычно нулевых столбцов/строк не бывает

в продолжение темы для хранения N-мерных матриц предлагаю следующую структуру:

1) таблица элементов:

| ID элемента | Значение элемента |

2) таблица координат элемента:

| ID матрицы | номер измерения | номер элемента в измерении | ID элемента |


таким образом двумерная матрица

6 71
21 45

будет храниться так:

1)

1 6
2 71
3 21
4 45

2)

1 1 1 1
1 2 1 1
1 1 2 2
1 2 1 2
1 1 1 3
1 2 2 3
1 1 2 4
1 2 2 4
...
Рейтинг: 0 / 0
матрицы в БД
    #32793516
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_bob ..или констрэйнт повесить

на сколько мне известно constraint вовсе не для этого предназначен. в данном случае корректнее было бы использовать триггер (идеологически это не то же самое) ;-)

В ответ на PS можно подлить масла в огонь и сказать, что для тех, кто привык к С-подобным языкам нумерация с 0 даже естественнее. так что вопрос спорный ;-)

насчёт новой структуры. допустим такую ситуацию

6 0 0
0 0 0

будет храниться так:

1)

1 6

2)

1 1 1 1
1 2 1 1

какой размерности матрица? Ведь совсем не 2x2, хоть и измерений 2. Зато это можно будет узнать, если хранить ВСЕ 0 (то же справедливо и для варианта для | ID матрицы | ID столбца | ID строки | Значение элемента | ), а в случае больших разряженых матриц объёмы и временная сложность подскочит. Таким образом, это решение всего-лишь добавляет возможность хранить N-мерных матрицы, но проблему до конца не решает.

Критика? :-)
...
Рейтинг: 0 / 0
матрицы в БД
    #32793968
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Man555 _bob ..или констрэйнт повесить

на сколько мне известно constraint вовсе не для этого предназначен. в данном случае корректнее было бы использовать триггер (идеологически это не то же самое) ;-)

В ответ на PS можно подлить масла в огонь и сказать, что для тех, кто привык к С-подобным языкам нумерация с 0 даже естественнее. так что вопрос спорный ;-)

насчёт новой структуры. допустим такую ситуацию

6 0 0
0 0 0

будет храниться так:

1)

1 6

2)

1 1 1 1
1 2 1 1

какой размерности матрица? Ведь совсем не 2x2, хоть и измерений 2. Зато это можно будет узнать, если хранить ВСЕ 0 (то же справедливо и для варианта для | ID матрицы | ID столбца | ID строки | Значение элемента | ), а в случае больших разряженых матриц объёмы и временная сложность подскочит. Таким образом, это решение всего-лишь добавляет возможность хранить N-мерных матрицы, но проблему до конца не решает.

Критика? :-)

а для чего используется unique constraint как не для обеспечения уникальности?

привыкшие к С-подобным языкам при обработке матриц пользуются литературой, которую написали не привыкшие к С-подобным языкам, вот в этой литературе нумерация начинается с 1 независимо от того кто к какому языку привык

в случае больших матриц можно хранить последний член независимо от его значения

какой проблемы структура не решает? проблема была одна: хранить матрицы в БД
...
Рейтинг: 0 / 0
матрицы в БД
    #32794058
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_bob Man555[quot _bob] ..или констрэйнт повесить


в случае больших матриц можно хранить последний член независимо от его значения



вот этой проблемы и не решает. Вам не кажется, что это обходной путь?
...
Рейтинг: 0 / 0
матрицы в БД
    #32794097
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется, что надо хранить все члены, нули тоже т.к. есть матрицы, в которых некоторых членов просто нет

а вот что демагогию интересно читать и на неё отвечать мне совсем не кажется

к Вашим претензиям могу добавить, что стремящиеся к бесконечности и нулю величины хранить в числовом поле вообще не получится, но это мало кого останавливает :-)
...
Рейтинг: 0 / 0
матрицы в БД
    #32794137
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_bob
а вот что демагогию интересно читать и на неё отвечать мне совсем не кажется


вот когда подрастём до вашего уровня, тогда и сможем отличить демагогию от дельных мыслей
...
Рейтинг: 0 / 0
матрицы в БД
    #32795343
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в PostgreSQL есть тип поля - массив

IMHO, Mon$te®
...
Рейтинг: 0 / 0
матрицы в БД
    #32795441
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бд спросил и исчез...

имхо, надо выбирать между производительностью и универсальностью
1. каких размерностей будут матрицы?
2. что с матрицами потом делать?

и если предполагаются только двумерные матрицы и единственная операция их умножения - то структура одна.
если матрицы любые, и надо реализовать все математические операции над ними - структура другая
...
Рейтинг: 0 / 0
матрицы в БД
    #32795819
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukov бд

имхо, надо выбирать между производительностью и универсальностью
1. каких размерностей будут матрицы?
2. что с матрицами потом делать?



глядя на пост про postgresql, я бы добавил вопрос на какую субд ориентировать решение.. в oracle, если я не ошибаюсь можно создать нечто вроде

| ID Matrix | Тип матрица |
...
Рейтинг: 0 / 0
матрицы в БД
    #32796118
бд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukov бд спросил и исчез...


все что хотел узнать - узнал. всем спасибо за содержательные ответы.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
матрицы в БД
    #34309429
bdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bdd
Гость
Dmitry Biryukov бд спросил и исчез...

имхо, надо выбирать между производительностью и универсальностью
1. каких размерностей будут матрицы?
2. что с матрицами потом делать?

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

А если нужно хранить значения переменных(функций), некоторые из которых - целые числа, некоторые - точки, а некоторые - двухмерные матрицы. Математические операции не нужны, только сравнения (одинаковы ли переменные различных функций).
Какая структура лучше для двоичных матриц, если только сравнение важно?
...
Рейтинг: 0 / 0
матрицы в БД
    #34309839
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему если БД, то сразу реляционная?

Матрицу можно хранить в LOB'е целиком. Для сохранения и извлечения данных использовать marshalling/unmarshalling или XML. Для операций над матрицей, как правило нужна вся матрица, а не отдельные элементы, поэтому, дербанить матрицу на части, чтобы потом её каждый раз собирать нет смысла.
...
Рейтинг: 0 / 0
матрицы в БД
    #34310280
bdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bdd
Гость
мне нужно именно в реляционной модели представить.
...
Рейтинг: 0 / 0
матрицы в БД
    #34310619
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bddмне нужно именно в реляционной модели представить.

Вот такая модель приходит на ум.

Значения >--- Матрица ----< Размерности

Матрица (PK, прочие скалярные атрибуты матрицы).
Размерности(references Матрица, номер измерения, максимальный размер).
Значения(references Матрица, плоский индекс элемента, значение элемента).

Например, матрицу 2x3 можно описать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Матрица
PK, прочие скалярные атрибуты матрицы
1 , ...
--------------------
Размерности
references Матрица, номер измерения, максимальный размер
1                 , 1              , 2
1                 , 2              , 3
--------------------
Значения
references Матрица,  плоский индекс элемента, значение элемента
1                 ,  1                      , 1.1
1                 ,  2                      , 2.1
1                 ,  3                      , 1.2
1                 ,  4                      , 2.2
1                 ,  5                      , 1.3
1                 ,  6                      , 2.3

Плоский индекс значения элемента IxJ расчитывается так:
(J - 1) * <максимальный размер измерения 1> + I.

Так можно описать матрицу любой ограниченной размерности (последнее измерение можно и не ограничивать, как в массивах C++), лишь бы тип поля "плоский индекс элемента" позволил сохранить полученный индекс.

С помощью уникальных ключей можно исключить дублрование записей Размерностей и Значений. Простыми SQL запросами можно найти пропуски.
...
Рейтинг: 0 / 0
матрицы в БД
    #34311646
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык все предлагаемые варианты (включая БЛОБ) - реляционные.

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

Условия несколько размытые. Возможно, требуется как минимум чтобы значение каждого элемента матрицы был отдельной строкой. Тогда БЛОБ уже не проходит. Но проходит EAV - не запрещено же значения индексов того же элемента держать в других строках.
...
Рейтинг: 0 / 0
матрицы в БД
    #34313528
bdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bdd
Гость
Вот, набросала схему, посмотрите пожалуйста (нужно хранить функции и их аттрибуты, которые могут быть простым числом, линией или матрицей). Могут ли возникнуть какие-то проблемы если так хранить? на что обратить внимание? Буду очень благодарна.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / матрицы в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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