В некотором отношении разрабатываемой БД нужно хранить массив из 512 переменных(назовём - value).
Элементарного типа данных "массив" в реляционной модели нет (на сколько я знаю).
Замечание: проблема отягощается тем, что отношение, в котором будут храниться все эти 512 переменных является слабым., (как и несколько его "родителей" -они тоже слабые. Получается в некотором роде иерархия: это отношение однозначно определяется не только своими атрибутами, но и атрибутами родителей).
На ум приходят следующие способы хранения:
1) Сериализовать массив и результат добавить в какой-то атрибут отношения.
Что-то вроде следующего:
Вариант отпадает, как противоречащий первой нормальной форме Бойса - атрибут не атомарен.MYTABLE
pkey1 : INTEGER (PK)
pkey2 : INTEGER (PK)
pkey3 : INTEGER (PK)
serialized_values : TEXT
2) для каждого значения value создаётся отдельный экземпляр отношения, номер определяется первичным ключём.
Здесь проблема в том, что вариант достаточно расточителен . Как упоминалось, отношение слабое, и имеет первичный ключ, состоящий из 3 атрибутов + 1 для идентификации конкретного value. Получается, что всё множество экземпляров отношения занимает уж очень много места. (для каждого атрибута value нужно хранить ещё значения 4 атрибутов первичного ключа).MYTABLE
pkey1 : INTEGER (PK)
pkey2 : INTEGER (PK)
pkey3 : INTEGER (PK)
pkeyValueId : INTEGER (PK)
value : INTEGER
3) для каждого значения value создаётся отдельный атрибут одного и того же отношения.
По идее, подход лишён недостатков двух предыдущих, но вот, как это будет-то, отношение с 512 атрибутами (+ключи) - это нормально? .MYTABLE
pkey1 : INTEGER (PK)
pkey2 : INTEGER (PK)
pkey3 : INTEGER (PK)
value1 : INTEGER
value2 : INTEGER
value3 : INTEGER
...................
...................
value254 : INTEGER
value255 : INTEGER
Извините за кое-где вольную терминологию.
Пытался изъясниться понятно
Жду ваших советов. Спасибо за внимание.
Социальные закладки