Форум Сообщества Аналитиков

Общий раздел => Для всех => Тема начата: predator_ua от 29 Июля 2015, 17:31:11

Название: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 29 Июля 2015, 17:31:11
Всем доброго времени суток

Имеется некая выборка из Х таблиц с большим набором всевозможных условий. С помощью каких диаграмм возможно описать данный алгоритм?

Пробовал на через диаграмму последовательностей не получилось ... через диаграмму деятельности тоже не особо ясно.

Заранее Спасибо!
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Григорий Печенкин от 29 Июля 2015, 17:45:43
Алгоритм - это последовательность шагов. Какие шаги вам нужно изобразить?
Приведите пример, иначе непонятна задача, которую вы решаете.
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 29 Июля 2015, 17:54:08
Попробую упростить до нельзя суть проблемы

у меня есть SQL запрос (да я прекрасно понимаю что SQL сам по себе является языком действий но все же)

Пример

select x.id, y.id from x_table x, y_table y
  where x.z = y.z
    and y.value = pkg.getValue(x.value)

то есть мне нужно отобразить на диаграмме объединение трех сущностей (x_table, y_table, pkg.getValue) и на результат наложить ограничение

Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Denis Beskov от 29 Июля 2015, 21:56:35
Почему обязательно на диаграмме, а не в таблице?

Если обязательно хочется залезть на шкафчик, смотрите в сторону UML + OCL
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 30 Июля 2015, 00:52:45
Как? Как представить таблицей? Пример если можно или хоть подсказку по моему описанию,
Сама задача на порядок сложнее но пока не ясен способ описания этого примера развивать идею немогу.
При построении диограммы последовательности уткнулся в тот факт что данные выбираем из двух таблиц одновременно и даже если поставить предварительно opt то получим для каждой таблицы свой опцион и опять выйдем на параллельность которую показать немогу( через OCL будет таже проблема, если б в диограммах была бы некая сущность описывающая фильтрацию данных но такого невидел
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Denis Beskov от 30 Июля 2015, 01:08:50
https://docs.google.com/spreadsheets/d/1SUOiqYttoA669gI9VWQMWlFUetFVNqj3OFIlFBOVSzc/edit?usp=sharing
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 30 Июля 2015, 09:55:11
Сожалею но в моей ситуации таблица это утопичное решение.

Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Denis Beskov от 30 Июля 2015, 10:05:38
Давайте сначала, в аналитическом ключе.

Кто и как будет использовать эту диаграмму?
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 30 Июля 2015, 11:12:42
Почему обязательно на диаграмме, а не в таблице?

Если обязательно хочется залезть на шкафчик, смотрите в сторону UML + OCL
Правильно ли я Вас понял(относительно примера)?
------------------------------
[select x.id, y.id from x_table x, y_table y] ---> [Выборка данных из таблиц x_table, y_table] ----> cursor(...)
[  where x.z = y.z and y.value = pkg.getValue(x.value)] ---> [проверка данных x.z = y.z and y.value = pkg.getValue(x.value)]
Но ведь с таким же успехом я могу написать смотри код .... и свести задачу к черному ящику ...
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 30 Июля 2015, 11:20:28
Давайте сначала, в аналитическом ключе.

Кто и как будет использовать эту диаграмму?

Диаграмма нужна для описания модели взаимодействий, повторюсь пример это ОЧЕНЬ упрощенная задача .. то есть та часть задачи которую я не смог описать в UML
а полная задача вот:
----
Есть в ORACLE такая сущность как Синоним
он ссылается на процедуру ..
процедура проверяет ряд условий .. готовит так сказать данные для дальнейшего запроса ... после чего по исходным данным + подготовленным "временкам" делает курсоры, которые в свою очередь используют промежуточные вызовы процедур.
всё это исключая блоки (select from dual) я описал на диаграмме последовательностей
---
А теперь внемание ... иногда!! при накате патчей на некоторые таблицы синоним перестает работать ... согласно документации он перестает работать из за того что процедура на которую смотрит синоним становится инвалидной, но перекомпилить её автоматом нельзя, процедура согласно документации падает если хотя-бы один объект на который она ссылается становится инвалидны ..

мне поставлена задача расписать логику синонима до уровня таблиц
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Denis Beskov от 30 Июля 2015, 11:38:29
опять эта ритуальная фраза-заклинание в пассивном залоге "мне поставлена задача", которая дегуманизирует всю суть вашей работы и результатов, которые на самом деле нужна для людей и каких-то их нужд

зачем вы пришли на аналитический форум, если не отвечаете на вопросы?

1. КТО БУДЕТ ИСПОЛЬЗОВАТЬ ДИАГРАММУ?

2. В ХОДЕ КАКОЙ ДЕЯТЕЛЬНОСТИ?

3. ДЛЯ ЧЕГО?

Не хотите отвечать — идите на SQL.ru, там рыбу любят, жареную.

Если "мне поставлена задача", то должны быть критерии приёмки. Диаграмма должна быть такой, чтобы кто-то (1) мог с помощью неё что-то сделать (2) с каким-то качеством (3) (точностью, скоростью, удовлетворённостью и т.д.) и с какой-то целью (4).
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Григорий Печенкин от 30 Июля 2015, 11:42:44
Диаграмма нужна для описания модели взаимодействий, повторюсь пример это ОЧЕНЬ упрощенная задача .. то есть та часть задачи которую я не смог описать в UML
а полная задача вот:
----
Есть в ORACLE такая сущность как Синоним
он ссылается на процедуру ..
процедура проверяет ряд условий .. готовит так сказать данные для дальнейшего запроса ... после чего по исходным данным + подготовленным "временкам" делает курсоры, которые в свою очередь используют промежуточные вызовы процедур.
всё это исключая блоки (select from dual) я описал на диаграмме последовательностей
---
А теперь внемание ... иногда!! при накате патчей на некоторые таблицы синоним перестает работать ... согласно документации он перестает работать из за того что процедура на которую смотрит синоним становится инвалидной, но перекомпилить её автоматом нельзя, процедура согласно документации падает если хотя-бы один объект на который она ссылается становится инвалидны ..

мне поставлена задача расписать логику синонима до уровня таблиц

С точки зрения пользователя, у синонима нет логики. Это просто другое имя объекта.
Вам нужно описать внутреннюю логику СУБД при разборе и выполнении запроса с использованием синонима? При этом синоним определён для процедуры, а не для таблицы?

Вы как-то очень запутанно описываете задачу. Такое ощущение, что вы сами её не поняли. А правильно поставленный вопрос, как известно, содержит половину ответа.
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: predator_ua от 30 Июля 2015, 12:26:48
зачем вы пришли на аналитический форум, если не отвечаете на вопросы?
Я пришел сюда за ответами как .. с помощью каких диаграмм описать мою ситуацию

1. КТО БУДЕТ ИСПОЛЬЗОВАТЬ ДИАГРАММУ?
2. В ХОДЕ КАКОЙ ДЕЯТЕЛЬНОСТИ?
3. ДЛЯ ЧЕГО?
Судя по Вашим вопросам я иду не туда, и решение не в диаграмме а в предписании ХМ...

Не хотите отвечать — идите на SQL.ru, там рыбу любят, жареную.
Зачем Вы так?

Если "мне поставлена задача", то должны быть критерии приёмки. Диаграмма должна быть такой, чтобы кто-то (1) мог с помощью неё что-то сделать (2) с каким-то качеством (3) (точностью, скоростью, удовлетворённостью и т.д.) и с какой-то целью (4).

Спасибо Денис что направили меня в нужное русло!
Название: Re: Как отобразить сложные запросы в БД на диаграммах?
Отправлено: Nataly от 31 Июля 2015, 13:26:40
Для финансовой организации описывала правила контроля доли облигации в составе портфеля.
Может и не по правилам UML, зато для однозначного понимания алгоритма заказчиком, аналитиком и разработчиком хватило.
Рисовала в MagiсDraw.