powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ищу структуру данных для хранения информации о sql-запросах
50 сообщений из 50, показаны все 2 страниц
Ищу структуру данных для хранения информации о sql-запросах
    #38537303
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно дать пользователю формировать простые (без СТЕ и пр.) sql -запросы по существующей структуре данных.
Есть ли на просторах готовая структура данных для хранения информации о запросах или это лисапед?)
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537315
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

Совсем не понятно что нужно... можно более развернуто?
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537350
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocust,

Нужно чтоб пользователь мог составить запрос на клиенте (не руками написав select......, а с помощью дизайнера запросов создал запрос) и сохранить его в БД в виде структуры, которую можно валидировать на корректность и доступность объектов и анализировать и повторно представлять юзеру для изменений
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537363
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocust,

- запрос должен именоваться
- запрос должен предоставлять список результирующих колонок, чтоб можно было в интерфейсе выбирать какие прятать/показать
- запрос должен ограничить пользователя разрешенными объектами (есть таблица прав доступа)
- запрос должен хранить правила и способы соединения сущностей
- .....
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537365
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- запрос должен хранить условия выборки
- запрос должен хранить порядок группировки и сортировки
- ...
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537369
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

Встречал нечто подобное в Business Intelligence (вреде от Microsoft).

Что там было:
возможность как в режиме мастера добавлять, связывать таблицы и вьюхи (в том числе с указанием характеристик связи: Left, Full jons...)
На счет выбора колонок уже не помню, но что понравилось что можно было даже оракловые хинты указывать.
И с правами уже не помню что было, но продукт использовался так:
На основные формы системы строились такие "структуры", указывались возможные фильтры и настройки, и все это хозяйство ложилось в базу. Далее при запуске системы из базы тянулись настройки фильтров (по ним динамически формировались компоненты для фильтрации в ИС), а для работы с эти добром была целая схема с энным количество таблиц и пакетов.
Только инструмент для рядового пользователя был мягко говоря сложноват....
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537370
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

ну и группировки и сортировки там естественно были...
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537377
~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
~
Гость
lLocust,
А задача то какая, написать своими силами промышленную BI систему?
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537398
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
~lLocust,
А задача то какая, написать своими силами промышленную BI систему?

Написать хранилище запросов! БИ весь нам не нужен)
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537407
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spсохранить его в БД
spхранилище запросов

Поле в таблице БД типа nvarchar(8000).
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537466
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
splLocust,

Нужно чтоб пользователь мог составить запрос на клиенте (не руками написав select......, а с помощью дизайнера запросов создал запрос) и сохранить его в БД в виде структуры, которую можно валидировать на корректность и доступность объектов и анализировать и повторно представлять юзеру для измененийА диазйнер запросов в SSMS не подойдёт? Или ваши требования намного больше его функциональности?
Если боьше, то ещё взгляните на Access
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537493
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вырисовывается пока, что именно надо.

Есть сервер и есть дизайнер запросов. Последний (как я вижу такой дизайнер) берет из БД инфу о существующих таблицах и видах, графически показывает её пользователю, пользователь перетаскивает квадратики, ставит галочки, а на выходе дизайнер генерит SQL строку, которая передается на сервер для выполнения, или может быть сохранена на сервере как View.

Что дальше?

Не вдаваясь в эти детали могу предложить использовать какой нить yacc, что бы распарсить запрос и сохранить дерево, каждый узел в отдельной строке, у каждого узла будет своя семантика, там всё это "...можно валидировать на корректность и доступность объектов и анализировать...". Но
1) для этого BNF надо в точности знать (если его знать, то и самому парсер написать не сильно сложнее, чем yacc пользовать)
2) такой анализ с успехом делает сама СУБД.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537498
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
splLocust,

Нужно чтоб пользователь мог составить запрос на клиенте (не руками написав select......, а с помощью дизайнера запросов создал запрос) и сохранить его в БД в виде структуры, которую можно валидировать на корректность и доступность объектов и анализировать и повторно представлять юзеру для изменений
Ну, есть реляционный язык QBE. Он графический. И "дизайеры" для него. Например, В Аксцессе он юзается. Есть тулсы и для других СУБД. Сохраненные запросы в РБД - это собственно представления. В Аксцессе просто сохраняются запросы.
Другое дело, что пользователь, который "составлят запросы", все равно должен иметь понятия в БД. Ить о должен знать структуру БД, а не представления данных в окнах клиентской проги.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537503
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikspсохранить его в БД
spхранилище запросов
Поле в таблице БД типа nvarchar(8000).

я б может понял вас еслиб в вопросе не обозначил требования..
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537504
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

вы мне предлагаете хранить текст, а мне нужно хранилище реляционное - связанные таблицы, условия связей, поля результата...
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537505
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

мне не нужно сразу готовый запрос в виде представления - мне нужна структура хранящая метаданные запроса по которым можно легко сгенерировать вью или сформировать динамический скуль.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537508
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spU-gene,

вы мне предлагаете хранить текст, а мне нужно хранилище реляционное - связанные таблицы, условия связей, поля результата...

нет, я говорю, что "структуру запроса" можно вытащить из запроса после того, как его распарсили, представили в виде дерева. Дерево - это не текст. По узлам дерева, по их семантике, можно дальше вытаскивать все, что угодно.

И я ничего не предлагаю. Я вопроса то еще не понял... а Вы еще загадок подкидываете. Что такое "метаданные запроса"? Ка понимать фразу "а мне нужно хранилище реляционное - связанные таблицы"? Вы запятыми хотя бы озаботьтесь, или согласованием слов.

Я дал схему типичного (в моем понимании) взаимодействия дизайнера запросов и СУБД. Ваш случай с ней как соотносится?
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537512
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

таблица "запрос", таблица "связанные сущности", таблица "условия связей сущностей" и т.д. это и есть метаданные по которым можно сгенерировать запрос - это и есть метаданные хранящие информацию о запросе
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537526
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

я предлагаю хранить sql в виде - кто бы мог подумать? - sql! Именно в виде простой строки текста.

Пользователь может вводить эту строку в любом текстовом поле ввода.
Если нужно сделать визуальный конструктор - делай. Как именно - можно подсмотреть в имеющихся софтинах, например, в DbForgeStudio.

Для парсинга sql в виде строки заюзать парсер. Берём грамматику отсюда . Генерируем парсер - используем в своём приложении.

Если по какой-либо причине (какой?) хранение запроса в виде обычной строки не подходит, ничто не мешает хранить его в виде дерева/коллекции узлов с параметрами. Тут уже вопрос используемого языка, используемого диалекта sql и т. п.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537531
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,
Смотрите структур каталога БД. Там же все запросы храняться? И СУБД их как то валидирует?

Например тот же Access(что под руку попало) хранит всё о запросах в 2х таблицах MSysObjects и Msys Queries. В первой общее описание объекта (Имя, ID, тип) по строке на запрос, в другой на каждый запрос набор строк, в целом подозрительно напоминающих (кто бы мог подумать!) на сохраненный в таблицу узлы дерева синт. разбора SQL выражения. Но не совсем дерево. Навскидку, впечатление, что строки с атрибутом 5 перечисляют выводимые таблицы, с атрибутом 6 - поля, 7 - описывают JOINы между таблицами и тд. Покурите, как пример.

А общего решения наверное нет.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537610
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу задаться вопросом, в чем смысл и почему возникла необходимость "дать возможность пользователю самому формировать запросы" ?

С моей точки зрения причин две - лень или недостаточная искусность разработчика , не предоставившего пользователю возможность манипулирования информацией во всех нужных разрезах, рассматривать ее с разных точек зрения на уровне презентации объектов в конечной бизнес-форме, в терминах бизнеса.

Вторая - ограниченность знаний о предметной области, известных разработчику на момент написания системы. Предметная область может быть динамичной, быстро развививаться. Того, что было заложено в систему в момент ее сдачи заказчику, через некоторое время перестает хватать для решения бизнес-задач.

Субъективно я вижу такие пути решения этих двух проблем.

Первая. Непосредственный контакт разработчика с заказчиком, глубокое погружение в его проблемную область, разработка презентационного слоя системы "про запас". Решение задач пользователя, известных на момент написания системы, должно быть не высшей точкой ее реализации, а одним из частных случаев применения более широкого спектра заложенных в систему умений. Пользователь должен иметь возможность на раз, по щелчку пальцев разворачивать представление бизнес-информации любой стороной, хоть к лесу задом, хоть в коленно-локтевую позу.

Очень близко к этому тезису стоит возможность создания "пользовательских фильтров". Если разработчик не предусмотрел и не предугадал все актуальные и возможные в будущем бизнесовые фильтры (выраженные в терминах бизнеса) и возможность их комбинации для уточнения критериев отбора, то пользователи вынуждены считать за благо долгую возню в некоем бланке, вручную отмечая галками поля и соображая в каком порядке должны выполняться операции OR, AND.

Вторая. Система должна быть построена в виде конфигурации, сделанной на хорошем конфигураторе (примеры, часто появляющиеся в этом топике - искра, випрос). В системе должны быть высокоуровневые специализированные конфигураторы ключевых бизнес объектов, которые находятся под присмотром аналитика-конфигураста. Это может быть свой квалифицированный пользователь, внешний разработчик на договоре или по аутсорсингу. При появлении новых требований за счет настройки в этих конфигураторах поведение системы должно меняться во всех модулях, использующих эти ключевые объекты.

Мне самому удалось только в небольшой степени воплотить эти подходы в своих разработках. Желаю остальным читателям-писателям форума дальше пройти по этому пути.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537630
Программист-Любитель,

Возможно, у sp "пользоваетль" = у Вас "разработчик". Например, 1с разработчики с СУБД напрямую не общаются, но они не конечные пользователи.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537636
Программист-Любитель...
С моей точки зрения причин две - лень или недостаточная искусность разработчика , не предоставившего пользователю возможность манипулирования информацией во всех нужных разрезах, рассматривать ее с разных точек зрения на уровне презентации объектов в конечной бизнес-форме, в терминах бизнеса. ...


А если даст - запросы уже не нужны?
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38537689
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель,

Ну тут 2 тезиса:
- все не предусмотриш
- по каждому хотению юзера напрягать программера - негоже!

А возможность самому юзеру формировать представления информации на основе сформулированных им критериев - это и правильно и гибко - демократия у на типа в конце концов или нормальные отношения с юзерами??))
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38538596
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot sp]"мне нужна структура хранящая метаданные запроса по которым можно легко сгенерировать вью или сформировать динамический скуль.[quot]

Ну по "методанным" описывающим схему (т.е. таблицы) QBE, можно, "возможно" максимально "легко" для РМД сгенерировать.

Но знание этих "методанных" и понимание QBE как бы выходит за рамки обычного конечного пользователя.

[quot sp]
А возможность самому юзеру формировать представления информации .....[quot]

Сегодня, таковая возможность реализуется в ОЛАП. Там все таки многомерные кубы про основные показатели для юзера: что делает построение запросов доступным для кажного - вращай себе кубы, делай срезы, не хочу.

РМД, скорее заточена, под максимальную "легкость" на уровне расработчика, иначе бы было бы уже в массах.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38539162
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

Уже давным давно во многих продуктах юзеру дается возможность мастерить свои запросы - посмотрите для примера Микрософ ЦРМ)
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38539216
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spvadiminfo,

Уже давным давно во многих продуктах юзеру дается возможность мастерить свои запросы - посмотрите для примера Микрософ ЦРМ)
К сожалению, нет под рукой.

Это именно не система отчетов? В которой заранее созданно много разных представлений, а юзер только выбирает и накладывает фильтры?
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38539667
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

нет - это обычное рабочее место любого юзера - в нем можно используя мастер запросов уточнить критерии запроса по связанным сущностям, сохранить его и использовать при просмотре данной сущности и редактировать если надо изменить
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38539965
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spvadiminfo,

нет - это обычное рабочее место любого юзера - в нем можно используя мастер запросов уточнить критерии запроса по связанным сущностям, сохранить его и использовать при просмотре данной сущности и редактировать если надо изменить

Скорее всего, все таки надо, наверное, увидеть, чтобы понять разницу между "нет - это обычное рабочее место любого юзера" и "да - это обычное рабочее место любого юзера", т.е. разновидность старой доброй системы отчетов, обогащенной мастерами.
Т.е. не совсем ясно на сколько "любого юзера" и на сколько отлично от QBE (не другой ли способ оного же). В Аксцессе QBE тоже обогащен мастерами. Тоже рабочее место, но наверное не "любого" юзера, а все же особенного.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38540068
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ему надо хранить расположение оконцев, стрелочек и ключиков, а вы про sql, простихосподи.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38540079
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в PMA оказывается есть такая шняга. Недавно заметил и понял откуда берутся такого рода снимки экранов. Умора. Пять минут растаскивал оконца, растащить не смог, а как там провести стрелочки вообще не понял. Еще в период программирования на десктопе Абсцесс просто заколебывал своим неутомимым стремлением подсунуть мне конструктор вместо окна с запросами.

Но самая конечно мякотка это вопрос как запузырить в эти квадратики поле вроде:

coalesce(`art`.`price_discounted`, ceil( `art`.`price_retail`*`art`.`retail_discount`/10)*10) as `price_discounted`
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38540172
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerЕму надо хранить расположение оконцев, стрелочек и ключиков...

Это, звучит, несколько не созвучно с темой топика и, возможнно, не так интересненько. А там кто знает.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38540203
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ настолько очевиден что я и заподозрил неладное.

spvadiminfo,

мне нужна структура хранящая метаданные запроса по которым можно легко сгенерировать вью или сформировать динамический скуль.

В MySql оно хранится в INFORMATION_SCHEMA главным образом. Оттудова и достаются данные для SHOW CREATE TABLE например.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38541196
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

пожалуйста, не придумывайте за меня разные бредни, и не прилично в присутсвии еще живого человека говорить в третьем лице - это обычно делают необразованные люди!
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38542719
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь готового решения вы не найдете, придется делать свое.
У нас мы используем самописное хранение SQL в XML (вообще можно хранить хоть в чем, сам запрос в программе храниться в POJO классах, а там уже сериализовать уже можно во что угодно).

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<!-- выбирать всех Иваоновых Иванов родившихся с 1960-года, будет выбираться только ФИО--!>
        <queryInfo tableName="person">
            <columns fullColumnName="person_id"  isSelect="false"/>
            <columns fullColumnName="lastname" whereComparison="eq" value="ИВАНОВ"/>
            <columns fullColumnName="firstname" whereComparison="eq" value="ИВАН"/>
            <columns fullColumnName="patronymic" />
            <columns fullColumnName="datebirth" isSelect="false" whereComparison="gt" value="01.01.1960"/>
        </queryInfo>

<!-- посчитать количество сгруппированное по фамилии. --!>
        <queryInfo tableName="person">
            <columns fullColumnName="person_id" groupType="count"/>
            <columns fullColumnName="lastname" />
        </queryInfo>

<!-- выбрать персоны работающие в отделе разработки. --!>
        <queryInfo tableName="person">
            <columns fullColumnName="person_id" />
            <columns fullColumnName="lastname" />
            <columns fullColumnName="firstname" />
            <columns fullColumnName="department_id.department.deparment_name" whereComparison="eq" value="отдел разработки"  />
        </queryInfo>

<!-- выбрать персоны без отделов. --!>
        <queryInfo tableName="person">
            <columns fullColumnName="person_id" />
            <columns fullColumnName="lastname" />
            <columns fullColumnName="firstname" />
            <columns fullColumnName="department_id.+department.deparment_name" whereComparison="is_null"  />
        </queryInfo>
    


Самая основное как записываются поля. не четными идут название полей, четными название таблиц. Таким образом строятся join.
'+' означает left join.

Исходники к сожалению я дать не могу, но может сама идея вам пригодиться.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38542914
R7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
R7
Гость
olzhasСамая основное как записываются поля. не четными идут название полей, четными название таблиц. Таким образом строятся join.
'+' означает left join.
А вот это зря.
Вы создали документ, чтобы хранить структуру. И в самих полях еще храните структуры, связанные с документом. И еще привязываетесь, даже не к очередностям, а к четностям/нечетностям.
По феншую, это выносится в структуру документа, дабы не нарушать самого смысла XML.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544151
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas,

такую тип хранения не удовлетворяет - я не могу валидировать ни поля ни сущности в запросе - они все в тексте и если я буду что-то менять в структуре данных - данный способ молча проглотит и выдаст ошибку при попытке выборки
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544478
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R7,

Не совсем понял что вы имеете в виду. XML хранит запрос. То что название поля имеет такой сложный вид?! так это адрес колонки, относительно текущей таблицы.

sp,
Валидация есть, в данном случая я просто показал как это хранится. При загрузке происходит валидация, по структуре БД, данные берутся из connection.getMetaData().getXXX().
Например
Код: xml
1.
<queryInfo tableName="person">

, наличие таблицы проверяется connection.getMetaData().getTables() + проверка на доступ к этой таблице.

Код: xml
1.
<columns fullColumnName="lastname" />


через connection.getMetaData().getColumns();

Код: xml
1.
<columns fullColumnName="department_id.+department.deparment_name" whereComparison="is_null"  />


Делаем fullColumnName.split("\\.") получаем массив сток, в которой по очереди идут название колонки по которой идет связь и название таблицы куда ссылаемся, последней строкой будет то поле которое должно быт в выборке. Опят таки правильность названия таблиц и колоном можно узнать через выше описанные методы.

Зная название таблицы, его поля и название связанной таблицы, через connection.getMetaData().getExportedKeys() можем узнать на название поля в связанной таблице, что бы в дальней чем построить Join. так же тут проверяется что связь вообще есть.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544488
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas,

Такое в xml структуру влезет? :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from (
  select d2.cnt * d.cnt + (select case when dummy = 'X' then 1 else 0 end from dual) cnt
  from (select count(*) cnt from dual) d
  left join (select dummy, count(*) cnt from dual group by dummy) d2 on d2.cnt = d.cnt
  cross join dual
  join dual d3 on exists (select null from dual where 1 = d.cnt)
)
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544516
Гхостикolzhas,

Такое в xml структуру влезет? :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from (
  select d2.cnt * d.cnt + (select case when dummy = 'X' then 1 else 0 end from dual) cnt
  from (select count(*) cnt from dual) d
  left join (select dummy, count(*) cnt from dual group by dummy) d2 on d2.cnt = d.cnt
  cross join dual
  join dual d3 on exists (select null from dual where 1 = d.cnt)
)


(задумчиво)...я бы GROUP BY и UNION добавил для разнообразия
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544522
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гхостик,
нет не влезет, но оно и не нужно, мы не пытались сделать полную замену sql.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544779
dymka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже делаем подобный велосипед.
Пользователь выбирает только колонки, и фильтры.
На БД хранятся метаданные - из какой вьюхи колонку брать, как соединять, агрегировать итп.
Сам запрос устроен в виде XML - похоже как у olzhas. Так проще его сериализовать и самое главное - десериализовать.
Запрос выполняет вьюха на сервере строя по XML-запросу и метаданным SQL-запрос и выполняя его в динамике.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544824
Я так понимаю. что у автора стоит другая задача. Сейчас корректность запросов проверяется динамически, а он хочет забацать нечто типа статической проверки запросов по отношению к схеме данных. Точнее даже наоборот - схемы (которая может меняться) по отношению к существующим запросам. Поменяли таблицу - проверяем все связанные с нею запросы (если таковые есть), что, мол, имена присутствуют, типы совпадают.

В этом смысле варианты с XML решения не дают, конечно.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38544979
R7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
R7
Гость
olzhasR7,

Не совсем понял что вы имеете в виду. XML хранит запрос. То что название поля имеет такой сложный вид?! так это адрес колонки, относительно текущей таблицы.
Ничего такого не имел. Просто совет.
Понятия "нормализация слабоструктурированных данных" нет. Наверное, потому что туда применима нормализация данных вообще. Вот у вас нарушена 1НФ. Вы разбираете XML, а потом еще раз парсите строки из полученных данных. Работает, ну и нормально. Я видел, где и в названия атрибутов запихивали инфу тип данных.
А вот еслиб у вас было нечто вроде (схематично. пример вообще не правильный. тут джойн принадлежит columns, а не queryInfo):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        <queryInfo tableName="person">
            <columns fullColumnName="person_id" />
            <columns fullColumnName="lastname" />
            <columns fullColumnName="firstname" />
            <columns ColumnName="department_id" alias="deparment_name">
                <join kind="left" source="department">               
                    <linkcolumn ColumnName="deparment_name"/>
                    <whereComparison="is_null">
                </join>
            </columns>
        </queryInfo>


1. Это было бы понятно стороннему разработчику сторонней программы.
2. Вы бы получали все нужные данные для построения запроса только разбором XML.
3. Как следствие из 2, в случае изменения схемы БД, такие XML легко апдейтятся.

И если смотреть на структуру "нормализованного" XML, то понятно, куда ему расти и развиваться. Например, значением атрибута source может быть не таблица а линк на полноценный queryInfo (или сразу вложенный нод queryInfo)
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545080
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R7,
Изначально в первом варианте мы хранили запрос в древовидной структуре, как вы и описали
вот пример.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<preparedQueries name="center_replic_node">
        <captions language="RU" caption="Репликация"/>
        <queryRequestTable linkTableName="center_replic_node" linkColumnName="id_university,oper_type">
            <selectColumns columnName="id_university,oper_type" isSelect="true"/>
            <selectColumns columnName="oper_type" filterComparison="eq" isSelect="true"/>
            <selectColumns columnName="ip_adress" isSelect="true"/>
            <selectColumns columnName="oper_datetime" isSelect="true" filterComparison="lt"/>
            <selectColumns columnName="status" isSelect="true" filterComparison="eq"/>
            <selectColumns columnName="id_university" filterComparison="eq" isSelect="false" orderByIndex="1">
                <foreignQueryRequestTables linkTableName="universities" linkColumnName="id_university" joinType="right">
                    <selectColumns columnName="nameru" isSelect="true"/>
                    <selectColumns columnName="mylabel"  isSelect="true" filterComparison="eq"/>
                </foreignQueryRequestTables>
            </selectColumns>
        </queryRequestTable>
    </preparedQueries>



Но отказались по нескольким причинам.
1. в древовидной структуре нельзя (без создания дополнительных атрибутов) задать порядок столбцов, в отличии от линейного где выбираемые столбцы идут по порядку.
2. Чисто визуально линейный вариант выглядит удобнее, одно поле описывается одной строчкой. читается легче.
3. в UI список, удобнее дерева. Долго объяснять почему, просто поверите.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545097
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимо пробегал...Я так понимаю. что у автора стоит другая задача. Сейчас корректность запросов проверяется динамически, а он хочет забацать нечто типа статической проверки запросов по отношению к схеме данных. Точнее даже наоборот - схемы (которая может меняться) по отношению к существующим запросам. Поменяли таблицу - проверяем все связанные с нею запросы (если таковые есть), что, мол, имена присутствуют, типы совпадают.

В этом смысле варианты с XML решения не дают, конечно.

XML это просто способ хранения. В конечном итоге ХМЛ сериализуется(конечно не простым JAXB, чуть посложнее) в класс Query. В которых есть ссылки на классы QueryColumn, Table, Column, Reference и тд. Хотите переименовать таблиц или колонку, без проблем. меняем поле table.tablename и сериализуем Query, получаем xml c правильным названием таблицы.
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545121
R7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
R7
Гость
olzhas,

Вангую. Вернетесь к прошлому варианту. )
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545168
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R7,

и того мало будет
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545615
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо пробегал...Я так понимаю. что у автора стоит другая задача. Сейчас корректность запросов проверяется динамически, а он хочет забацать нечто типа статической проверки запросов по отношению к схеме данных. Точнее даже наоборот - схемы (которая может меняться) по отношению к существующим запросам. Поменяли таблицу - проверяем все связанные с нею запросы (если таковые есть), что, мол, имена присутствуют, типы совпадают.

В этом смысле варианты с XML решения не дают, конечно.
+1
...
Рейтинг: 0 / 0
Ищу структуру данных для хранения информации о sql-запросах
    #38545779
spМимо пробегал.......
+1
Я тем же самым занимаюсь. У меня парсится входное SQLвыражение, вытаскиваются все встреченные имена с их признаками и это всё запихивается в одну таблицу. Городить структуры типа "одна таблица для таблиц, другая - для атрибутов" мне показалось ненужным.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ищу структуру данных для хранения информации о sql-запросах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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