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

Но решать тебе конечно. Небезызвестный т.Сухов всегда отвечал:
- Оно конечно лучше помучаться...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Массивы в БД
    #35919228
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственное что в голову приходит: собирать такой массив в текст, перадавать в VIEW и отрабатывать служебным триггером
все равно на сервере придется как то представлять массивы в ХП
...
Рейтинг: 0 / 0
Массивы в БД
    #35920100
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafВ своем фреймворке хочу реализовать хранение в БД массивов
Кто-то кроме Вас сие извращение оценит? Пример с табелем - не пример.
...
Рейтинг: 0 / 0
Массивы в БД
    #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]