| Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
Является ли SQL-запрос алгоритмом?
|
| Re: Филосовский вопрос | |
|---|---|
|
PaulWist Сообщений: 14814 Дата регистрации: 01.04.2004 |
Нет.
Это просто декларация, а-ля хочу получить то-то и то-то из этого и этого. А вот план запроса уже является алгоритмом, те как, с помощью каких методов-инструкций получить искомое. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
| Re: Филосовский вопрос | |
|---|---|
|
_vit Сообщений: 5259 Дата регистрации: 29.07.2002 |
Однако сложные запросы могут содержать алгоритмы.
|
| Re: Филосовский вопрос | |
|---|---|
|
PaulWist Сообщений: 14814 Дата регистрации: 01.04.2004 |
Например? Если имеются в виду хинты, то это уже диалект конкретной реализации SQL, к самому языку запросов не относящийся. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 26.05.24 18:09 |
| Re: Филосовский вопрос | |
|---|---|
|
sphinx Сообщений: 32782 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
Наверное, подразумевался вызов UDF в SELECTe...
![]() ------------------ "Veni, vidi, vici!"(с) |
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
Наверно, ключём к ответу будет фраза
"алгоритм вычисления арифметического выражения". Т.е. арифметическое выражение не является алгоритмом. Видимо, так же и SQL запрос. |
| Re: Филосовский вопрос | |
|---|---|
|
sphinx Сообщений: 32782 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
Наверное точнее так сказать - на SQL нельзя написать полноценную программу (а программа и есть реализованный алгоритм), он предназначен только для взаимодействия с базами данных.
------------------ "Veni, vidi, vici!"(с) |
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
SQL-запрос - это полноценная программа. На том же фоксе можно скомпилировать и выполнить. Алгоритм - это последовательность действий, направленных на получение определённого результата за конечное число шагов. "Вылонить запрос 'select 1'" - алгоритм. P.S. Все равно select - выбрать - действие Вопрос остается открытым. P.S.2 В тоже время на языке арифметики, арифметическое выражение, однозначно, описывает последовательность действий. Исправлено 4 раз(а). Последнее : alex;, 26.05.24 23:28 |
| Re: Филосовский вопрос | |
|---|---|
|
sphinx Сообщений: 32782 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
Напиши программу на SQL по, например, оптимизации расчета раскроя листа. Без вызова процедур/циклов/ветвления. Только чистым SQL.
------------------ "Veni, vidi, vici!"(с) |
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
В тоже время на языке арифметики, арифметическое выражение, однозначно, описывает последовательность действий, т.е. алгоритм. Напиши программу по оптимизации расчета раскроя листа на языке арифметики. Нет. SQL-запрос не алгоритм. Поскольку описывает желаемый результат, а не последовательность действий. Исправлено 1 раз(а). Последнее : alex;, 27.05.24 00:06 |
| Re: Филосовский вопрос | |
|---|---|
|
pasha_usue Сообщений: 3768 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Если по определению алгоритма следовать, то это такой набор запросов, который содержит "последовательность действий". Например, сложить что-то во временную таблицу, а потом из неё уже что-то получить это как-раз последовательность. |
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
И в конечном итоге, желаемый результат можно получить, используя разные алгоритмы. |
| Re: Филосовский вопрос | |
|---|---|
|
PaulWist Сообщений: 14814 Дата регистрации: 01.04.2004 |
Это уже не запрос, это batch/скрипт/программа, а программа - это чистяк алгоритм. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 27.05.24 14:40 |
| Re: Филосовский вопрос | |
|---|---|
|
_vit Сообщений: 5259 Дата регистрации: 29.07.2002 |
Вообще - запрос не однозначное понятие.
Его используют имея в виду как комманду (элемент языка) так и скрипт. Но даже если иметь в виду запрос как элемент языка то как тогда с WHILE, IF...ELSE и подзапросами? |
| Re: Филосовский вопрос | |
|---|---|
|
leonid Сообщений: 3230 Откуда: Рига Дата регистрации: 03.02.2006 |
|
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
|
| Re: Филосовский вопрос | |
|---|---|
|
_vit Сообщений: 5259 Дата регистрации: 29.07.2002 |
Ок. Я принял ваши аргументы.
Ради интереса я помучал Copilot на эту тему. Он долго сопротивлялся но в итоге согласился на ничью.
Цитата: |
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
Vit,
а что на фэйсбуке в форуме VFP обсуждают, не следишь? А то у нас недоступен вредный сайт. |
| Re: Филосовский вопрос | |
|---|---|
|
_vit Сообщений: 5259 Дата регистрации: 29.07.2002 |
Не пользуюсь фейсбуком. Хотя видимо придется.
|
| Re: Филосовский вопрос | |
|---|---|
|
alex; Автор Сообщений: 4070 Откуда: Москва Дата регистрации: 23.11.2004 |
Помучал DeepSeek R1
Правильный ответ:
Правильный ответ:
Да, SQL-запрос можно считать алгоритмом в определённых контекстах, но не во всех. Всё зависит от уровня абстракции и исполнителя инструкций. Разберем два ключевых случая: 1. Контекст, где SQL-запрос является алгоритмом a) Для СУБД (системы управления базами данных) SQL-запрос — это высокоуровневый алгоритм, который СУБД преобразует в низкоуровневые операции.
Алгоритм для СУБД: Просканировать таблицу employees. Для каждой строки проверить условие salary > 5000. Вернуть подходящие записи. Детали реализации (использование индексов, кэширование) скрыты, но это не отменяет алгоритмической природы запроса. b) В процедурных расширениях (хранимые процедуры) Когда SQL-запросы объединяются с управляющими конструкциями (ветвления, циклы), они становятся частью алгоритма:
Здесь SQL-запросы встроены в императивную логику, что делает их частью алгоритма. 2. Контекст, где SQL-запрос не является алгоритмом a) Для разработчика SQL-запрос — это декларативное требование, а не алгоритм, потому что: Разработчик не управляет процессом выполнения (например, не решает, использовать индекс или полное сканирование). Нет явного описания шагов: запрос говорит что нужно, а не как это сделать. b) В чисто декларативном подходе Если SQL-запрос используется без процедурных расширений, он остаётся спецификацией результата, а не алгоритмом. Пример:
Это не алгоритм, а тривиальное требование вернуть константу. Ключевое различие Критерий SQL-запрос как алгоритм SQL-запрос не алгоритм Исполнитель СУБД или процедурное расширение Разработчик, аналитик Уровень детализации Высокоуровневые инструкции для СУБД Декларативное требование Пример SELECT ... WHERE ... (алгоритм для СУБД) SELECT 1 (констатация результата) Итог Да, является алгоритмом, если: Исполнитель — СУБД, которая интерпретирует запрос как набор инструкций. Запрос встроен в императивную логику (хранимые процедуры, триггеры). Нет, не является алгоритмом, если: Запрос рассматривается как декларативное требование без управления процессом выполнения. Отсутствует контекст преобразования запроса в последовательность шагов. Таким образом, статус SQL-запроса как алгоритма зависит от точки зрения и практического применения. Исправлено 4 раз(а). Последнее : alex;, 29.01.25 17:09 |
| © 2000-2025 Fox Club  |