powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
12 сообщений из 12, страница 1 из 1
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534114
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо озадачить сервер!
Озадачить - это значит:

Надо хранить на сервере 100 тыс. полилиний и их точки.
Для запроса надо получить только те линии, которые входят/видны на экране.
Т.е. надо Габарит линии сравнить с габаритом (TRect) экрана.
Можно вычислять на клиенте, на сервере при выходе, на серв. записывать в доп.поле при входе.
Что выбрать? Если сейчас всё делает клиент без всякой БД и медленно.

Теоретически - вычислять площадь фигуры из 2-3 тыс.точек надо динамически, каждый раз при получении этой фигуры из сервера. Но это огромная работа. Проще/или нет записывать её для каждой фигуры в допполе на сервере.
Тогда вопрос - а вдруг сервер загнётся это вычислять от 10 пользователей?
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534508
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал так для каждой фигуры (например, полилинии) у нас есть точки (например 4 штуки), кот. однозначно опрделяют габарит и положение. Т.е. есть две таблицы
Figures(
id_fig Number,
name VarChar2(200));

Points(
id_points Number,
id_fig Number,
x Number,
y Number)

Points.id_fig >>>------< Figures.id_fig

и селект для выбора всех входящих в облать(min_x,min_y; max_x,max_y):
select * from Figures f, Points p
where f.id_fig = p.id_fig
and p.x >= :min_x
and p.x <= :max_x
and p.y >= :min_y
and p.y <= :max_y

Все будет шустренко работать, если нужные поля проиндексировать
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534572
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы предлагаете каждую точку в виде записей?
Если их порядка 100тыс. в формате Double/float на 1 млн. объектов (В КАЖДОМ!) - полилиний, то не проще хранить массив точек в виде двоичного буфера?
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534721
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас как полилиния описывается?? Я предлагал каждую полилинию описывать двумя точками
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534773
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 bas
?????
Полилиния - набор связанных отрезков или ломаная линия. Для рисования на DC Win API требуется массив точек - buffer (можно взять и записать в двоичное BLOB поле).
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534796
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо,
Тогда в таблице можно хранить массив точек в Blob - поле в таблице Figures, а таблице Points хранить 2 точки прямоугольника(правый верхний и нижний левый углы), кот. занимает эта ломаная. И когда нужные фигуры вытащили селектом, то их уже из блоба рисуете.

Код: plaintext
1.
2.
3.
4.
5.
6.
select distinct f.name, f.point_blob
from Figures f, Points p
where f.id_fig = p.id_fig
and p.x >= :min_x
and p.x <= :max_x
and p.y >= :min_y
and p.y <= :max_y
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32534820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 bas
Следовательно - зачем нам 2 таблицы 1<---------->1 (один к одному)?
Делаем одну - id, name, blobpoint, gabarit.
Вопрос - gabarit - вычисляемое поле. Как и где и каким языком вычислять.
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32535094
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет двух таблиц - я в общем случае сказал, т.к. точек, опред. габариты м.б. более (сложная форма) или менее(точка) 2ух. Если в вашем случае, то можно обойтись и одной таблицей, но я бы не советовал (м.б. потом габариты будете как сложный объект определять, тогда не подойдет эта схема). Короче, в вашем случае, в таблице Figures становится такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Figures(
id_fig Number,
name VarChar2( 200 ),
blobpoint Blob,
x_t Int,
y_t Int,
x_b Int,
y_b Int
);
Координаты габаритов выделены специально в отдельные столбцы для наилучшего поиска

и селект:

Код: plaintext
1.
2.
3.
4.
5.
6.
select f.name, f.point_blob
from Figures f
where 
(f.x_t >= :min_x
and f.y_t >= :min_y)
or ( f.x_b <= :max_x
and f.y_b <= :max_y)
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32535120
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В селекте только вместо or надо поставить and...
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32535182
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"...Хранимые процедуры

Перенос хранимых процедур – это наиболее трудоемкий процесс, т.к. придется переписывать все целиком. Но в правильно спроектированном трехзвенном приложении роль ХП должна быть сведена к минимуму. Основные трудности возникают при переводе ХП, возвращающих результирующий набор. Часть из них (не содержащие сложной бизнес-логики) может быть переведена в разряд представлений (view). Для остальных можно либо создавать временные таблицы на уровне соединения с СУБД, либо создавать постоянные таблицы и разграничивать данные в них по идентификатору подключения (SPID) (но тогда не забывайте их чистить :)). Если же вы решите ограничиться только MSSQL2000, то можете использовать тип "таблица" для возврата набора значений из процедуры. ..."
(c)
http://www.rsdn.ru/article/db/midas_migration.xml
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32535883
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все ваши проблемы уже решались много лет назад. Поищите информацию о пространственных БД (в т.числе пространственных навесках на стандартные СУБД) и пространственной индексации.
...
Рейтинг: 0 / 0
Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
    #32539028
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо - то что нужно.
Не подскажите какие БД поддерживают?
А то прочёл, что даже MySQL заявки делает на работу с графическими примивами.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранимые это всегда не Delphi? COM нельзя "прикрутить"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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