|
|
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
как хранить матрицы ( несимметричные, разной размерности) в БД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 13:30 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Если просто хранить, я бы сделал так: таблица имен матриц: ID, NAME_MATRIX таблица столбцов: ID, ID_NAME_ROW, NAME таблица строк: ID, ID_NAME_COL, NAME таблица значений: ID_NAME_ROW, ID_NAME_COL, VALUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 14:20 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
В виде значений и индексов (псевдовектор). Например таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Плюсы: -- простая структура -- гибкая Минусы: -- сложности с извлечением данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 14:48 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
я предлагаю хранить так: | ID матрицы | ID столбца | ID строки | Значение элемента | Достоинства: полная независимость от размерности, все операции над матрицей прекрасно выполняются простыми селектами/апдейтами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 16:13 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
_bobя предлагаю хранить так: | ID матрицы | ID столбца | ID строки | Значение элемента | Достоинства: полная независимость от размерности, все операции над матрицей прекрасно выполняются простыми селектами/апдейтами Вот это мне нравится, только бага в том, что есть вероятность недоопределить матрицу, т.е. каких элементов может не быть, хотя их в этом случае можно считать нулевыми. А такой вопрос: что если будет две записи (0, 0, 0, 23) (0, 0, 0, 21)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 17:12 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Man555 А такой вопрос: что если будет две записи (0, 0, 0, 23) (0, 0, 0, 21)? уникальный индекс по столбцам ID матрицы | ID столбца | ID строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 19:28 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
вторая запись не вставится, т.к. будет нарушение уникального индекса, а для тех, кто не догадается сделать индекс уникальным, или констрэйнт повесить - будет то ли одна запись, то ли одна, но определитель неправильный будет, то ли будет восприниматься как (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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 09:41 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
_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-мерных матрицы, но проблему до конца не решает. Критика? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 11:13 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
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 независимо от того кто к какому языку привык в случае больших матриц можно хранить последний член независимо от его значения какой проблемы структура не решает? проблема была одна: хранить матрицы в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 13:36 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
_bob Man555[quot _bob] ..или констрэйнт повесить в случае больших матриц можно хранить последний член независимо от его значения вот этой проблемы и не решает. Вам не кажется, что это обходной путь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 14:06 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
мне кажется, что надо хранить все члены, нули тоже т.к. есть матрицы, в которых некоторых членов просто нет а вот что демагогию интересно читать и на неё отвечать мне совсем не кажется к Вашим претензиям могу добавить, что стремящиеся к бесконечности и нулю величины хранить в числовом поле вообще не получится, но это мало кого останавливает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 14:19 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
_bob а вот что демагогию интересно читать и на неё отвечать мне совсем не кажется вот когда подрастём до вашего уровня, тогда и сможем отличить демагогию от дельных мыслей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 14:29 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
в PostgreSQL есть тип поля - массив IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 10:29 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
бд спросил и исчез... имхо, надо выбирать между производительностью и универсальностью 1. каких размерностей будут матрицы? 2. что с матрицами потом делать? и если предполагаются только двумерные матрицы и единственная операция их умножения - то структура одна. если матрицы любые, и надо реализовать все математические операции над ними - структура другая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 11:11 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukov бд имхо, надо выбирать между производительностью и универсальностью 1. каких размерностей будут матрицы? 2. что с матрицами потом делать? глядя на пост про postgresql, я бы добавил вопрос на какую субд ориентировать решение.. в oracle, если я не ошибаюсь можно создать нечто вроде | ID Matrix | Тип матрица | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 13:19 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukov бд спросил и исчез... все что хотел узнать - узнал. всем спасибо за содержательные ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 14:43 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukov бд спросил и исчез... имхо, надо выбирать между производительностью и универсальностью 1. каких размерностей будут матрицы? 2. что с матрицами потом делать? и если предполагаются только двумерные матрицы и единственная операция их умножения - то структура одна. если матрицы любые, и надо реализовать все математические операции над ними - структура другая А если нужно хранить значения переменных(функций), некоторые из которых - целые числа, некоторые - точки, а некоторые - двухмерные матрицы. Математические операции не нужны, только сравнения (одинаковы ли переменные различных функций). Какая структура лучше для двоичных матриц, если только сравнение важно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 14:18 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Почему если БД, то сразу реляционная? Матрицу можно хранить в LOB'е целиком. Для сохранения и извлечения данных использовать marshalling/unmarshalling или XML. Для операций над матрицей, как правило нужна вся матрица, а не отдельные элементы, поэтому, дербанить матрицу на части, чтобы потом её каждый раз собирать нет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 16:04 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
мне нужно именно в реляционной модели представить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 17:57 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
bddмне нужно именно в реляционной модели представить. Вот такая модель приходит на ум. Значения >--- Матрица ----< Размерности Матрица (PK, прочие скалярные атрибуты матрицы). Размерности(references Матрица, номер измерения, максимальный размер). Значения(references Матрица, плоский индекс элемента, значение элемента). Например, матрицу 2x3 можно описать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Плоский индекс значения элемента IxJ расчитывается так: (J - 1) * <максимальный размер измерения 1> + I. Так можно описать матрицу любой ограниченной размерности (последнее измерение можно и не ограничивать, как в массивах C++), лишь бы тип поля "плоский индекс элемента" позволил сохранить полученный индекс. С помощью уникальных ключей можно исключить дублрование записей Размерностей и Значений. Простыми SQL запросами можно найти пропуски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 20:14 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Дык все предлагаемые варианты (включая БЛОБ) - реляционные. Наиболее строгая - отдельная таблица для каждого типа матрицы, определяемого количеством измерений и типом значений элемента. Условия несколько размытые. Возможно, требуется как минимум чтобы значение каждого элемента матрицы был отдельной строкой. Тогда БЛОБ уже не проходит. Но проходит EAV - не запрещено же значения индексов того же элемента держать в других строках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 11:05 |
|
||
|
матрицы в БД
|
|||
|---|---|---|---|
|
#18+
Вот, набросала схему, посмотрите пожалуйста (нужно хранить функции и их аттрибуты, которые могут быть простым числом, линией или матрицей). Могут ли возникнуть какие-то проблемы если так хранить? на что обратить внимание? Буду очень благодарна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 17:24 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34311646&tid=1544743]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 465ms |

| 0 / 0 |
