[Решено] Как хранить/создавать/изменять симметричную разряженную матрицу. (Желательно в реляционной модели данных.)

Модератор: Модераторы разделов

Аватара пользователя
ffldove
Сообщения: 480
Статус: Keep It Simple, Stupid
ОС: RFRemix 14

[Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение ffldove »

Есть некоторые данный наподобие таблицы умножения, то есть:
Изображение
Где голубым некоторые исходные данные на пересечение строки и столбца собственно результат.
Для хранения планируется использовать mysql, как представить такова типа данные для хранения в реляционных БД? С БД знаком не близко но как я понимаю при таком способе хранения данных при значительных объемах будет проблематична выборка и редактирование таблицы?

ПС
В название темы таблицу назвал "вширину" не знаю как правильно назвать такова типа таблицу.
ПСПС
Как один из вариантов простого решения возможно создание отдельной таблицы для каждого столбца, но может еще как то можно?
I learned something today
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение NickLion »

А смысл вообще использовать СУБД? Тут же просто таблица, матрица. Никаких атрибутов, отношений - зачем реляционные БД в данной задаче?
Спасибо сказали:
Аватара пользователя
ffldove
Сообщения: 480
Статус: Keep It Simple, Stupid
ОС: RFRemix 14

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение ffldove »

NickLion писал(а):
15.03.2010 21:48
А смысл вообще использовать СУБД? Тут же просто таблица, матрица. Никаких атрибутов, отношений - зачем реляционные БД в данной задаче?

Смысла ни какова, вынужденный шаг, это как вспомогательная таблица, основные данные в другой, подходящей под определение реляционной.
Хотя ... а как вы предлагаете обойтись в данном случае (желательно клиент-серверный вариант хранения)?

ПС
Как вариант еще можно сделать 3 столбца 1 параметр 2ой и значение (тогда таблица уйдет далеко вниз что не совсем удобно). Но возможно как то еще можно?
I learned something today
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение NickLion »

С точки зрения реляционных БД вариант с 3 колонками самый нормальный (ещё точнее будет в 2 таблицы: 1 таблица - ID параметра и он сам, 2ая таблица - ид1, ид2, значение). Но вообще, такое уж лучше BLOB'ом сделать. ИМХО. Или просто SMB/NFS расшаренный файл.
Спасибо сказали:
Аватара пользователя
ffldove
Сообщения: 480
Статус: Keep It Simple, Stupid
ОС: RFRemix 14

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение ffldove »

NickLion писал(а):
15.03.2010 22:30
С точки зрения реляционных БД вариант с 3 колонками самый нормальный (ещё точнее будет в 2 таблицы: 1 таблица - ID параметра и он сам, 2ая таблица - ид1, ид2, значение). Но вообще, такое уж лучше BLOB'ом сделать. ИМХО. Или просто SMB/NFS расшаренный файл.

А вот что касается BLOB, Qt+MySQL это возможно/сложно? И на вскидку скорость изменения/выборки по сравнению с вариантом выше как?

ПС
Есть привязка программы (вернее исходных данных для нее) для которой требуется данная таблица к mysql, не хотелось бы городить огород с SMB/NFS.
I learned something today
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение eddy »

Хранить таблицу вы можете как массив в оперативке (если, конечно, табличка ваша не 1e6 x 1e6), и таким же массивом сохранять на диск (т.е. в бинарном формате). А если вам с базой данных надо взаимодействовать - sqlite, например, позволяет делать вызовы из сишных программ.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение Crazy »

По картинке разреженная матрица. Смотрим что-то типа http://alglib.sources.ru/articles/zeromatr.php, или реализация на ортогональных списках.

Desipere in loco
Спасибо сказали:
Аватара пользователя
ffldove
Сообщения: 480
Статус: Keep It Simple, Stupid
ОС: RFRemix 14

Re: [Решено] Как хранить/создавать/изменять симметричную разряженную матрицу.

Сообщение ffldove »

Crazy писал(а):
16.03.2010 01:41
По картинке разреженная матрица. Смотрим что-то типа http://alglib.sources.ru/articles/zeromatr.php, или реализация на ортогональных списках.

Очень интересно, теперь хоть знаю что это "разряженная матрица".
Буду пробовать вариант "строчное представление, полное , неупорядоченное" и простое представление как 2 таблицы: 1 таблица - ID параметра и он сам, 2ая таблица - ид1, ид2, значение.
Посмотрю что получиться.

ПС
С одной стороны первый вариант грамотнее и меньше, с другой в нем больше вычислений.
I learned something today
Спасибо сказали: