Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Массивы в БД / 8 сообщений из 8, страница 1 из 1
08.04.2009, 09:19
    #35918888
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
В своем фреймворке хочу реализовать хранение в БД массивов.
Если с постоянной длиной, то все понятно - СУБД либо поддерживает это, либо можно эмулировать заданным числом полей. Интересует вариант с переменной длиной.
Пока сформулировал 2 варианта хранения:
1. в поле BLOB/text хранить массив как текст, например в xml формате.
2. создавать служебную таблицу для каждого поля типа массив с полями: владелец, индекс, значение.
В связи с хранением в БД, непонятно как передавать массив по ссылке. Склоняюсь к передаче массива (присваивание, аргумент) по значению.
Прошу высказать Ваше мнение.
С уважением, Naf
...
Рейтинг: 0 / 0
08.04.2009, 10:11
    #35919013
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
NafПрошу высказать Ваше мнение.
Массивы ф топку!
В нашей СУБД есть и массивы и коллекции... Но их примение в жизни выглядит так убого по сравнению с обычными свойствами.
Не думаю что у тебя будет реализовано более продуктивно.
...
Рейтинг: 0 / 0
08.04.2009, 10:17
    #35919039
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
krvsaNafПрошу высказать Ваше мнение.
Массивы ф топку!
В нашей СУБД есть и массивы и коллекции... Но их примение в жизни выглядит так убого по сравнению с обычными свойствами.
Не думаю что у тебя будет реализовано более продуктивно.
ну вот пример, таблица Табелей отработанного времени
подчиненная таблица Данные по сотрудникам с полями: Сотрудник, ДанныеОВыходе
ДанныеОВыходе - массив, длиной равной числу дней в месяце
...
Рейтинг: 0 / 0
08.04.2009, 10:46
    #35919144
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
с точки зрения использования фреймворка у нас 2 таблицы T1 и T2 с полями типа массив произвольной длины Array1, Array2 соответственно
фреймворк это реализует в СУБД посредством 4 таблиц T1, T2, Array1, Array2
соответственно.
Когда пишем, используя фреймворк, запрос
Код: plaintext
1.
insert into T1(Array1)
select Array2 from T2
должна быть интерпретация запроса в SQL СУБД. Вопрос каков результирующий запрос?
...
Рейтинг: 0 / 0
08.04.2009, 10:59
    #35919195
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
Даже в твоем примере не вижу целесообразности в использовании массивов. Так или иначе нет смысла собирать все особенности СУБД и SQL в обработке данных которые хранятся таким образом.
Там будет всегда целая куча ограничений по использованию... В индексах или еще где-то...

Но решать тебе конечно. Небезызвестный т.Сухов всегда отвечал:
- Оно конечно лучше помучаться...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
08.04.2009, 11:08
    #35919228
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
единственное что в голову приходит: собирать такой массив в текст, перадавать в VIEW и отрабатывать служебным триггером
все равно на сервере придется как то представлять массивы в ХП
...
Рейтинг: 0 / 0
08.04.2009, 14:28
    #35920100
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
NafВ своем фреймворке хочу реализовать хранение в БД массивов
Кто-то кроме Вас сие извращение оценит? Пример с табелем - не пример.
...
Рейтинг: 0 / 0
09.04.2009, 12:28
    #35922309
gln123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы в БД
А в чем проблемма можно например хранить так (напишу для двумерного массива, я так храню разряженные матрицы и делаю операции над ними):

create table t_matrix (name_matrix varchar2(30), x number, y number, val number)

Таким образом создание массива это вставка в эту таблицу матрицы с новым именем.
А ссылка на массив это просто его имя. Т.е.

insert into t_matrix
values ('a', 1,0,1);

insert into t_matrix
values ('a', 2,0,2);

--Создали массив с именем a и двумя элементами

update any_table
set array_column = 'a';
--Сослались из другой таблицы на массив a.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Массивы в БД / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]