Программирование >>  Создание клиентов mysql 

1 ... 15 16 17 [ 18 ] 19 20 21 ... 201


Реляционные операции 65

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

Имя День рождения

Позиция

Команда

Tejada

1976-05-25

Шорт-стоп

Giambi

1971-01-08

Первая база

Hudson

1975-07-14

Питчер

Seanz

1970-10-08

Лучший отбивающий

Bonds

1964-07-24

Внешнее поле

Giambi

1974-09-30

Внешнее поле

Snow

1968-02-26

Первая база

Проекция по столбцу Имя -►

Tejada

Giambi

Hudson

Seanz

Bonds

Snow

Рис. 5.2. Проекция фамилий игроков

Операция пересечения выполняется над двумя таблицами идентичной структуры. В результате возвращаются только те записи, которые встречаются в обеих исходных таблицах. Предположим, нам необходимо узнать, какие игроки принимали участие в матче Всех звезд как в 1999, так и в 2000 году. Результат соответствующей операции пересечения представлен на рис. 5.3.

Матч Всех звезд 1999 г.

Матч Всех звезд 2000 г.

Пересечение

Са! Ripiten

Harold Batnes

Ivan Rodriguez

Jim Thome

Ken Griffey Jr.

Kenny Lofton

Manny Ramirez

NomarGarciaparra

Roberto Alomar

Bernie Williams

Carl Б/erett

David Wells

Derek Jeter

Ivan Rodriguez

Jason Giambi

Jermaine Dye

Roberto Alomar

Travis Fryman

Ivan Rodriguez

Roberto Alomar

Рис. 5.З. Операция пересечения

Операция сложения также выполняется над двумя таблицами идентичной структуры. При этом в результирующую таблицу попадают все записи исходных таблиц. Например, с помощью данной операции можно получить объединенный список участников матчей Всех звезд в 1999 и 2000 году (рис. 5.4). Результирующая таблица будет содержать 16 строк, а не 18, поскольку два игрока принимали участие в обоих матчах и их имена повторяются.

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




Рис. 5.4. Операция сложения


Рис. 5.5. Операция вычитания

Операция умножения объединяет каждую строку первой таблицы с каждой строкой второй таблицы. Эта операцию еще называют декартовым произведением. Количество строк результирующей таблицы равно произведению числа строк исходных таблиц. Столбцами результирующей таблицы являются все столбцы первой таблицы, за которыми следуют все столбцы второй таблицы.

Вернемся опять к бейсболу. После подачи мяч может оказаться у питчера (подающего) или кетчера (принимающего). Им необходимо бросить мяч на одну из трех баз, чтобы ее не украли соперники. На рис. 5.6 изображена схема табличного произведения, сопоставляющего питчера и кетчера с игроками на базах. Есть два игрока, способных бросить мяч, и три игрока, которые могут его поймать. В результирующей таблице будут два столбца Идентификатор и два столбца Игрок . В реляционной модели это допустимо. СУБД понимает, какие столбцы к какой исходной таблице относятся.



Реляционные операции


Рис. 5.6. Операция умножения

MySQL, как и большинство других СУБД, не разрешает, чтобы в одной таблице существовали два столбца с одинаковыми названиями. Но таблица результатов запроса- это другое дело. Незаметно дя пользователя СУБД помечает результирующие столбцы именами исходных таблиц, поэтому совпадение имен в нашем случае - кажущееся. В главе 6, Язык SQL , будет рассказано о том, как можно явно задавать имена столбцов в подобных ситуациях.

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

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


Рис. 5.7. Операция деления

Операция переименования назначает столбцу другое имя. Это тривиальная операция, поэтому зачастую о ней не упоминают при обсуждении реляционной алгебры. Но именно с ее помощью решается упомянутая выше проблема с именами столбцов в таблице произведения. Обычно для ясности двум одноименным столбцам назначаются разные имена, выбираемые произвольно. Такие имена называются псевдонимами.



1 ... 15 16 17 [ 18 ] 19 20 21 ... 201

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