Создание базы данных для хранения матриц в SQLite - PullRequest
0 голосов
/ 19 июля 2011

В базе данных для приложения прогнозирования инженерного моделирования:

  • Каждый пользователь создает «проект».
  • В проекте пользователь указываетколичество элементов для 2 категорий: cat_1 и cat_2.
  • cat_1 и cat_2 будут иметь n1 и n2 элементов соответственно.
  • Затем программа преобразует cat_1 и cat_2 в две матрицы mat_1 mat_2, так что для каждойстроки матрицы = столбцы = n1 или n2.Т.е. если в категории 3 записи («a», «b» и «c»), матрица будет 3 на 3, а строки и столбцы будут «a», «b» и «c».
  • Матрица будет затем умножена на коэффициент (K_r).
  • Умножение возвращает 48 матриц, 96 матриц, 48 для cat_1 и 48 для cat_2.
  • В каждой матрице естьуправляющий массив / переменные mat_1_aij и mat_2_bi2j2, для которых пользователь указывает и предоставляет значения.
  • Эти переменные представляют собранные в полях данные, которым должно соответствовать моделирование.
  • Алгоритм выполняет итерацию по обеим матрицам несколько раз(1000 или около того) до наблюдаемого значения (й) == mat1_aij и mat_2bi2j2 соответственно.

Вопрос

Каков наилучший практический способ проектирования / создания / хранения такой базы данных (особенно матриц) и каковы некоторые из дизайна /вопросы реализации, которые вы можете предвидеть?

1 Ответ

1 голос
/ 18 августа 2011

Я думаю, что матрицы обычно представлены в виде списков смежности в реляционной модели. Это означает, что у вас есть один столбец для каждого измерения матрицы, содержащей координаты, и один (или несколько) столбцов для значения в этой ячейке.

Это должно позволить эффективные запросы, но вам следует избегать итерации по матрице с использованием точечных запросов (то есть, запрашивая значение в одной ячейке). Если возможно, вам следует закодировать как можно большую часть вашего алгоритма в (без ANSI / курсора) SQL и заставить СУБД выполнить его.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...