Я попробую пояснить. SQL - это, на самом деле линеаризованная в текст, причем далеко не самым удачным образом, довольно простая, но алгебраическая конструкция. В "алгебраическая" в данном случае существенна возможность неограниченного усложения выражения, составленного из простых элементов. Ситуация, очень удобная для вычислений с помощью компьютера (малыми усилиями по программированию можно обработать сложную задачу), но с большим трудом воспринимаемая человеческим мозгом (поэтому оказывается сложно выразить реально стоящую задачу в терминах этой модели).
В попытке донести эту конструкцию до людей, которые видели и кое-как понимали табличное представление данных, под эту структуру кто-то подложил модель таблицы. Легла она туда хреново - во-первых, таблиц оказывается существенно не одна, а во-вторых, связи между ними в той же модели оказываются настолько запутанным графом, что больше двух связей в одном предложении с трудом осиливает даже весьма опытный программист, чего уж говорить об изначальной ЦА этой модели. "Родная" алгебраическая структура отношений позволяет все же удержать в голове на пару двоичных порядков больше. Но не всякому, а тому, кому сумели наработать хотя бы какую-то интуицию на алгебраический подход.
Человек же, воспринимая таблицу, воспринимает только одну таблицу за раз. Отфильтровать строки (WHERE) и столбцы (список полей в SELECT), отсортировать по указанному критерию - это достаточно просто и понятно, хотя синтаксис уже представляется корявым (а в случае не вполне тривиального принципа сортировки - уже и невменяемым). А с первым JOIN - все, суши весла. На модель таблицы JOIN не ложится от слова "никак", потому что декартово произведение двух отношений, подмножество которого выдает JOIN - это уже не два, а три измерения (не четыре - наборы столбцов довольно естественно воспринимаются как одно измерение). А трехмерная таблица в человеческом восприятии с двумерной и рядом не лежала.
no subject
Date: 2015-04-11 08:21 pm (UTC)В попытке донести эту конструкцию до людей, которые видели и кое-как понимали табличное представление данных, под эту структуру кто-то подложил модель таблицы. Легла она туда хреново - во-первых, таблиц оказывается существенно не одна, а во-вторых, связи между ними в той же модели оказываются настолько запутанным графом, что больше двух связей в одном предложении с трудом осиливает даже весьма опытный программист, чего уж говорить об изначальной ЦА этой модели. "Родная" алгебраическая структура отношений позволяет все же удержать в голове на пару двоичных порядков больше. Но не всякому, а тому, кому сумели наработать хотя бы какую-то интуицию на алгебраический подход.
Человек же, воспринимая таблицу, воспринимает только одну таблицу за раз. Отфильтровать строки (WHERE) и столбцы (список полей в SELECT), отсортировать по указанному критерию - это достаточно просто и понятно, хотя синтаксис уже представляется корявым (а в случае не вполне тривиального принципа сортировки - уже и невменяемым). А с первым JOIN - все, суши весла. На модель таблицы JOIN не ложится от слова "никак", потому что декартово произведение двух отношений, подмножество которого выдает JOIN - это уже не два, а три измерения (не четыре - наборы столбцов довольно естественно воспринимаются как одно измерение). А трехмерная таблица в человеческом восприятии с двумерной и рядом не лежала.
no subject
Date: 2015-04-13 08:31 am (UTC)no subject
Date: 2015-04-13 10:58 am (UTC)