Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизКак хранить множество в Paradox e? Найти похожие ветки
← →
G2 (2006-10-24 14:24) [0]Дайте совет новичку: в поле какого типа данных лучше хранить множество (набор чисел от 1 до, скажем, 250) в Paradox"e? Можно как набор битов в LongInteger, но тогда получаем ограничение 32 вместо 250, можно как набор символов в строке. Но все это выглядит притянутым за уши. Не существует ли стандартных решений для храниения множества?
← →
Anatoly Podgoretsky © (2006-10-24 14:36) [1]В любом BLOB или преоразовывать в Hex строку A 64
← →
G2 (2006-10-24 15:04) [2]А каким образом искать по BLOB-полю?
Я к тому, что вхождение битов - математика, набор символов - по шаблону, а здесь как? Я, честно говоря никогда с ними не сталкивался.
← →
Anatoly Podgoretsky © (2006-10-24 15:06) [3]Ни каким, это не предусмотрено по стандарту и что же ты собрался искать в случае множеств?
← →
G2 (2006-10-24 15:07) [4]Вхождение
← →
novill © (2006-10-24 15:09) [5]> [0] G2 (24.10.06 14:24)
А битами символов строки?
32 символа всего...
← →
Сергей М. © (2006-10-24 15:10) [6]
> G2 (24.10.06 15:07) [4]
В случае с Парадоксом придется тянуть весь блоб на сторону клиента и там уже анализировать на предмет вхождения.
← →
G2 (2006-10-24 15:16) [7]
> novill © (24.10.06 15:09) [5]
> А битами символов строки? 32 символа всего...
Это как? В смысле как запрос строить? Если строка 250 символов - то понятно: номер символа в строке - это число, сам символ, например 0/1 - входит/не входит в множество, дальше не трудно сформировать шаблон. Я не понял идею, туплю к вечеру потихоньку.
← →
G2 (2006-10-24 15:19) [8]
> Сергей М. © (24.10.06 15:10) [6]
> В случае с Парадоксом придется тянуть весь блоб на сторону
> клиента и там уже анализировать на предмет вхождения.
Стороны клиента нет - локалка (BDE). Это что-то упрощает? Или все равно анализировать каждую запись в таблице?
← →
Сергей М. © (2006-10-24 15:28) [9]
> G2 (24.10.06 15:19) [8]
> Стороны клиента нет
Клиент есть всегда.
> Это что-то упрощает?
Абсолютно никак.
> анализировать каждую запись в таблице?
При чем здесь каждая запись ?
Ты же вроде бы повел речь о поиске вхождения в конкретное множество, представленное конкретным блоб-полем конкретной записи конкретного НД ?
← →
G2 (2006-10-24 15:35) [10]
> Сергей М. © (24.10.06 15:28) [9]
> Ты же вроде бы повел речь о поиске вхождения в конкретное
> множество, представленное конкретным блоб-полем конкретной
> записи конкретного НД ?
Не вполне владею терминологией, извините. НД в моем случае вся таблица. В каждой записи таблицы в требуемом поле множество может быть свое. Предельное множество: 1..250. Например, нужно найти записи с множествами, в которые входят 1, 3, 6 и не входит 11.
← →
novill © (2006-10-24 15:38) [11]> [5] novill © (24.10.06 15:09)
>
> А битами символов строки?
> 32 символа всего...
- это не ответ на вопрос Не существует ли стандартных решений для храниения множества?
Стандарное решение для хранения множеств - отдельная таблица типа
id записи в главной таблице, элемент множества.
← →
Anatoly Podgoretsky © (2006-10-24 15:43) [12]Если бы Парадокс или другая база поддерживали оператор IN для множеств, то искать бы можно было, а так на клиенте ручками, перебор по всей таблице, или как сказали делаешь текстовое поле и из "0" и "1", тогда можешь делать запрос с подстановочными символами, но это будет не совсем множество, а его иммитация через текстовое поле, но такое не доступно для полного множеста, но твой случай проходит через ограничения.
← →
Anatoly Podgoretsky © (2006-10-24 15:46) [13]
> Предельное множество: 1..250. Например, нужно найти записи
> с множествами, в которые входят 1, 3, 6 и не входит 11.
Запрос в этом случае был бы такойwhere myset like "1?1??1????0%"
← →
G2 (2006-10-24 15:47) [14]
> Стандарное решение для хранения множеств - отдельная таблица
> типа
> id записи в главной таблице, элемент множества.
Я извиняюсь еще раз и еще много раз, за непонятливость. У меня бит из множества это и есть идентификатор. Естественно в другой таблице расписано что он означает (т.е. Id=Value). Но ! в главной то таблице мне нужно иметь как раз множество, или, следуя Вашей логике, мне нужна еще одна таблица описывающая все воможные варианты наполнения множества, идентификатор каждого такого вырианта и уже его - в главную таблицу?
← →
Anatoly Podgoretsky © (2006-10-24 15:47) [15]
> Стандарное решение для хранения множеств - отдельная таблица
> типа
> id записи в главной таблице, элемент множества.
Это тоже вариант, реляционный, но запрос в худшем случае будет состоять из 250 параметров, что врядли потянет не только Парадокс, но и большинство более мощных баз, если такие вообще найдутся.
← →
G2 (2006-10-24 15:50) [16]
> Anatoly Podgoretsky © (24.10.06 15:46) [13]
> > Предельное множество: 1..250. Например, нужно найти записи
> > с множествами, в которые входят 1, 3, 6 и не входит 11.
> Запрос в этом случае был бы такой where myset like "1?1?
> ?1????0%"
Да, я к этому и веду, просто до сих пор не понял:
> novill © (24.10.06 15:09) [5]
> А битами символов строки? 32 символа всего
← →
Anatoly Podgoretsky © (2006-10-24 15:56) [17]То есть ты согласен с хранением в виде A 250, тогда это лучший вариант, только для построения запроса, части LIKE сделай несложную функцию, можно не экономить, а сделать ее однотипной из 256 символов, где 1 входит, 0 не входит и вопрос безразличное состояние. Это не сложно, а задачу твою решит. Алгоритм простой построить строку из 250 вопросов и затем заменить позиции на входит и позиции не входит. Что бы не ломать голову с каждым запросом.
← →
Сергей М. © (2006-10-24 15:58) [18]
> G2 (24.10.06 15:35) [10]
> НД в моем случае вся таблица
Не суть как важно в дан.случае.
Но ты с блобами-то определился ?
← →
G2 (2006-10-24 16:01) [19]
> Anatoly Podgoretsky © (24.10.06 15:43) [12]
>
> Если бы Парадокс или другая база поддерживали оператор IN
> для множеств, то искать бы можно было
Я до этого аналогичную задачу делал через вхождение битов в число, т.е.
суммируются: (число) в степени 2, результирующая сумма - аналог множества. Но одно поле Int - предел в 32, сумма двух - 64, а дальше наращивать невозможно. Да и запросы те еще: в половине случаев приводить к строке и тот же шаблон, только формировать его не проще.
Спасибо за подтверждение, делаю через А250.
← →
G2 (2006-10-24 16:04) [20]
> Anatoly Podgoretsky © (24.10.06 15:56) [17]
Вот только увидел [17], еще раз спасибо.
← →
novill © (2006-10-24 16:04) [21]
> [17] Anatoly Podgoretsky © (24.10.06 15:56)
Похоже это самый для G2 подходящий вариант.
А вариант
>битами символов строки? 32 символа всего
для Парадокса скорее всего не подойдет. В базах помощнее можно было прикрутить побитовые операции.
← →
Anatoly Podgoretsky © (2006-10-24 16:15) [22]Я не знаю ни одной, где бы битовые операции были поддержаны на уровне клиентских запросов. Да и зачем по задаче отлично подходит вариант с A250
← →
novill © (2006-10-24 16:26) [23]> где бы битовые операции были поддержаны на уровне клиентских
> запросов
Postgres, подключаемо в IB
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.043 c