Как представить 2-D матрицу данных в базе данных

Смысл поблочного тестирования должен сделать тестирование легким. Это автоматизировано. "сделайте тест", и Вы сделаны. Если одна из проблем, с которыми Вы сталкиваетесь, является трудной к тестовому коду, это - лучшая причина всех использовать поблочное тестирование.

36
задан miguel 16 July 2009 в 16:29
поделиться

5 ответов

РСУБД не плоские. Об этом позаботится R-часть. Что вам нужно:

Table Entity
------------
ID

Table EntityData
----------------
EntityID
MatrixRow (1, 2, 3...)
MatrixColumn (A, B, C, D...)
Value

Entity: EntityData - это отношение «один ко многим»; каждая ячейка в матрице имеет строку EntityData.

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

32
ответ дан 27 November 2019 в 06:11
поделиться

Это одна из причин, по которой PostgreSQL поддерживает массивы как тип данных. См.

Здесь показано, что вы можете использовать синтаксис вроде ARRAY [[1,2,3], [4, 5,6], [7,8,9]] , чтобы определить значения матрицы 3x3 или целое число [3] [3] , чтобы объявить тип столбца как матрицу 3x3.

Конечно, это совсем не стандартный SQL и специфичен для PostgreSQL. Другие базы данных могут иметь похожие, но немного разные реализации.

6
ответ дан 27 November 2019 в 06:11
поделиться

Если вам нужно действительно реляционное решение:

Matrix
------
id

Matrix_Cell
-----------
matrix_id
row
col
value

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

Я бы рассмотрел матрицу как одно значение, насколько это возможно. БД обеспокоена и хранит ее как csv:

Matrix
------
id
cols
data

Что несколько легче, чем XML.

4
ответ дан 27 November 2019 в 06:11
поделиться

Я бы, вероятно, реализовал это так:

Table MatrixData
----------------
id
rowName
columnName
datapoint

Если все, что вам нужно, - это сохранить данные, эта структура будет содержать матрицу любого размера и позволит вам восстановить любую матрицу из Я БЫ. Вам потребуется некоторая постобработка, чтобы представить его в "матричном формате", но для этого нужен внешний код.

1
ответ дан 27 November 2019 в 06:11
поделиться

Можно ли рассматривать данные как «данные строки»? если да, то, возможно, вы могли бы сохранить каждую строку как объект (или XML Blob) с данными A, B, C, D, а затем, в своем «представлении», вы использовали бы что-то вроде LinkedHashMap (предполагая Java) для получения объектов с ключ идентификатора.

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

0
ответ дан 27 November 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: