Программирование >>  Преобразование значений null 

1 ... 191 192 193 [ 194 ] 195 196 197 ... 219



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

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

Группы не могут быть пустыми

По определению группа должна включать в себя хотя бы один элемент (или строку). Если это так, можно сказать, что группа не может быть создана из пустой таблицы. Чтобы доказать истинность этого утверждения, пойдем от противного и попытаемся доказать, что оно ложно. В следующем примере создается пустая таблица, и затем выполняются три разных запроса к ней с попыткой создать группы:

create table fruits (name varchar(10))

select name from fruits group by name

(не выбрана ни одна строка)

select count(*) as cnt from fruits group by name

(не выбрана ни одна строка)

select name, count(*) as cnt from fruits group by name

(не выбрана ни одна строка)

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

Группы уникальны

Теперь давайте подтвердим, что группы, созданные посредством оператора GROUP BY, являются уникальными. В следующем примере в таблицу FRUITS (фрукты) вставляется пять строк, из которых впоследствии создаются группы:

insert into fruits values (Oranges) insert into fruits values (Oranges) insert into fruits values (Oranges)



insert into fruits values (Apple) insert into fruits values (Peach)

select * from fruits

NAME

Oranges

Oranges

Oranges

Apple

Peach

select name from fruits group by name

NAME

Apple

Oranges

Peach

select name, count(*) as cnt from fruits group by name

NAME CNT

Apple 1

Oranges 3

Peach 1

Первый запрос показывает, что запись Oranges (апельсины) встречается в таблице FRUITS трижды. Однако второй и третий запросы (с использованием GROUP BY) возвращают только один экземпляр Oranges . Эти запросы доказывают, что строки в результирующем множестве (e в G, согласно определению) являются уникальными, и каждое значение NAME представляет один или более экземпляров самого себя в таблице FRUITS.

Вы должны знать, что группы уникальны, и не вводить ключевое слово DISTINCT в список оператора SELECT при использовании GROUP BY в запросах.

Я никоим образом не говорю, что GROUP BY и DISTINCT - это одно и то же. Они представляют две совершенно разные концепции. Я только утверждаю, что элементы, перечисленные в операторе GROUP BY, будут уникальными в результирующем множестве, и что использовать DISTINCT одновременно с GROUP BY будет излишним.




Аксиома Фреге и парадокс Расселла

Аксиома абстракции Фреге, основанная на канторовском определении принадлежности к бесконечному или неисчислимому множеству, утверждает, что если есть идентифицирующее свойство, то существует множество, членами+дают этим свойством. Источником неприятностей, как формулирует Роберт Столл, является неограниченное использование принципа абстракции . Бертран Рассел предложил Готлобу Фреге рассмотреть множество, членами которого являются множества, определяющим свойством которых является то, что они не являются членами самих себя.

Как обозначил Рассел, аксиома абстракции обеспечивает слишком большую свободу, потому что задаются просто условие или свойство, определяющие членство в множестве, а это дает пространство для противоречий. Чтобы лучше описать, как можно выявить противоречия, он придумал парадокс цирюльника , который звучит так:

В некотором городишке есть мужской парикмахер, который бреет всех тех и только тех мужчин, которые не бреются самостоятельно. Если это так, кто тогда бреет парикмахера?

Возьмем более конкретный пример и рассмотрим множество, которое может быть описано как:

Все члены х в у, которые удовлетворяют определенному условию (P )

Вот математическая запись этого описания:

{x 8 y P(x)}

Поскольку обсуждаемое множество рассматривает только те х в у, которые удовлетворяют условию (Р), понятнее было бы описать его так: х является членом у в том и только в том случае, если х удовлетворяет условию (Р).

А сейчас давайте определим это условие P(x) как x не является членом x:

( x 8 x )

Теперь данное множество определено как x является членом y в том и только в том случае, если x не член x:

{x 8 y ( x 8 x )}



1 ... 191 192 193 [ 194 ] 195 196 197 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика