|
|
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
В своем фреймворке хочу реализовать хранение в БД массивов. Если с постоянной длиной, то все понятно - СУБД либо поддерживает это, либо можно эмулировать заданным числом полей. Интересует вариант с переменной длиной. Пока сформулировал 2 варианта хранения: 1. в поле BLOB/text хранить массив как текст, например в xml формате. 2. создавать служебную таблицу для каждого поля типа массив с полями: владелец, индекс, значение. В связи с хранением в БД, непонятно как передавать массив по ссылке. Склоняюсь к передаче массива (присваивание, аргумент) по значению. Прошу высказать Ваше мнение. С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 09:19 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
NafПрошу высказать Ваше мнение. Массивы ф топку! В нашей СУБД есть и массивы и коллекции... Но их примение в жизни выглядит так убого по сравнению с обычными свойствами. Не думаю что у тебя будет реализовано более продуктивно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 10:11 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
krvsaNafПрошу высказать Ваше мнение. Массивы ф топку! В нашей СУБД есть и массивы и коллекции... Но их примение в жизни выглядит так убого по сравнению с обычными свойствами. Не думаю что у тебя будет реализовано более продуктивно. ну вот пример, таблица Табелей отработанного времени подчиненная таблица Данные по сотрудникам с полями: Сотрудник, ДанныеОВыходе ДанныеОВыходе - массив, длиной равной числу дней в месяце ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 10:17 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
с точки зрения использования фреймворка у нас 2 таблицы T1 и T2 с полями типа массив произвольной длины Array1, Array2 соответственно фреймворк это реализует в СУБД посредством 4 таблиц T1, T2, Array1, Array2 соответственно. Когда пишем, используя фреймворк, запрос Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 10:46 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
Даже в твоем примере не вижу целесообразности в использовании массивов. Так или иначе нет смысла собирать все особенности СУБД и SQL в обработке данных которые хранятся таким образом. Там будет всегда целая куча ограничений по использованию... В индексах или еще где-то... Но решать тебе конечно. Небезызвестный т.Сухов всегда отвечал: - Оно конечно лучше помучаться... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 10:59 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
единственное что в голову приходит: собирать такой массив в текст, перадавать в VIEW и отрабатывать служебным триггером все равно на сервере придется как то представлять массивы в ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 11:08 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
NafВ своем фреймворке хочу реализовать хранение в БД массивов Кто-то кроме Вас сие извращение оценит? Пример с табелем - не пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 14:28 |
|
||
|
Массивы в БД
|
|||
|---|---|---|---|
|
#18+
А в чем проблемма можно например хранить так (напишу для двумерного массива, я так храню разряженные матрицы и делаю операции над ними): 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1543322]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 444ms |

| 0 / 0 |
