Смысл поблочного тестирования должен сделать тестирование легким. Это автоматизировано. "сделайте тест", и Вы сделаны. Если одна из проблем, с которыми Вы сталкиваетесь, является трудной к тестовому коду, это - лучшая причина всех использовать поблочное тестирование.
РСУБД не плоские. Об этом позаботится R-часть. Что вам нужно:
Table Entity
------------
ID
Table EntityData
----------------
EntityID
MatrixRow (1, 2, 3...)
MatrixColumn (A, B, C, D...)
Value
Entity: EntityData
- это отношение «один ко многим»; каждая ячейка в матрице имеет строку EntityData.
Теперь у вас есть схема, которую можно анализировать на уровне SQL, а не просто дамп данных, из которого вы должны извлекать и извлекать все на уровне приложения, чтобы найти что-нибудь об этом.
Это одна из причин, по которой PostgreSQL поддерживает массивы как тип данных. См.
Здесь показано, что вы можете использовать синтаксис вроде ARRAY [[1,2,3], [4, 5,6], [7,8,9]]
, чтобы определить значения матрицы 3x3 или целое число [3] [3]
, чтобы объявить тип столбца как матрицу 3x3.
Конечно, это совсем не стандартный SQL и специфичен для PostgreSQL. Другие базы данных могут иметь похожие, но немного разные реализации.
Если вам нужно действительно реляционное решение:
Matrix
------
id
Matrix_Cell
-----------
matrix_id
row
col
value
Но ограничения, позволяющие убедиться, что у вас есть достоверные данные, были бы ужасными.
Я бы рассмотрел матрицу как одно значение, насколько это возможно. БД обеспокоена и хранит ее как csv:
Matrix
------
id
cols
data
Что несколько легче, чем XML.
Я бы, вероятно, реализовал это так:
Table MatrixData
----------------
id
rowName
columnName
datapoint
Если все, что вам нужно, - это сохранить данные, эта структура будет содержать матрицу любого размера и позволит вам восстановить любую матрицу из Я БЫ. Вам потребуется некоторая постобработка, чтобы представить его в "матричном формате", но для этого нужен внешний код.
Можно ли рассматривать данные как «данные строки»? если да, то, возможно, вы могли бы сохранить каждую строку как объект (или XML Blob) с данными A, B, C, D, а затем, в своем «представлении», вы использовали бы что-то вроде LinkedHashMap (предполагая Java) для получения объектов с ключ идентификатора.
Кроме того, кажется, что по своей базовой природе типичная таблица базы данных уже делает то, что вам нужно, не так ли?