Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / матрицы в БД / 22 сообщений из 22, страница 1 из 1
19.11.2004, 13:30
    #32791267
бд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
матрицы в БД
как хранить матрицы ( несимметричные, разной размерности) в БД ?
...
Рейтинг: 0 / 0
19.11.2004, 14:20
    #32791442
матрицы в БД
Если просто хранить, я бы сделал так:
таблица имен матриц:
ID, NAME_MATRIX
таблица столбцов:
ID, ID_NAME_ROW, NAME
таблица строк:
ID, ID_NAME_COL, NAME
таблица значений:
ID_NAME_ROW, ID_NAME_COL, VALUE
...
Рейтинг: 0 / 0
19.11.2004, 14:48
    #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
19.11.2004, 16:13
    #32791900
_bob
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
матрицы в БД
я предлагаю хранить так:


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

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


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

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

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

уникальный индекс по столбцам
ID матрицы | ID столбца | ID строки
...
Рейтинг: 0 / 0
22.11.2004, 09:41
    #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
22.11.2004, 11:13
    #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
22.11.2004, 13:36
    #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
22.11.2004, 14:06
    #32794058
Man555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
матрицы в БД
_bob Man555[quot _bob] ..или констрэйнт повесить


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



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

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

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


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

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

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

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

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



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

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


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

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

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

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

Матрицу можно хранить в LOB'е целиком. Для сохранения и извлечения данных использовать marshalling/unmarshalling или XML. Для операций над матрицей, как правило нужна вся матрица, а не отдельные элементы, поэтому, дербанить матрицу на части, чтобы потом её каждый раз собирать нет смысла.
...
Рейтинг: 0 / 0
06.02.2007, 17:57
    #34310280
bdd
bdd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
матрицы в БД
мне нужно именно в реляционной модели представить.
...
Рейтинг: 0 / 0
06.02.2007, 20:14
    #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
07.02.2007, 11:05
    #34311646
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
матрицы в БД
Дык все предлагаемые варианты (включая БЛОБ) - реляционные.

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

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


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