|
Программирование >> Создание клиентов mysql
Реляционные операции 65 Операция проекции возвращает все записи исходной таблицы, но, возможно, не все столбцы. Это, по сути, фильтрация столбцов. Предположим, требуется получить список фамилий бейсболистов. На рис. 5.2 изображена исходная таблица и результат ее проекции. Результирующая таблица содержит шесть фамилий, а не семь, так как дубликаты недопустимы. Имя День рождения Позиция Команда
Проекция по столбцу Имя -► 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. Операция деления Операция переименования назначает столбцу другое имя. Это тривиальная операция, поэтому зачастую о ней не упоминают при обсуждении реляционной алгебры. Но именно с ее помощью решается упомянутая выше проблема с именами столбцов в таблице произведения. Обычно для ясности двум одноименным столбцам назначаются разные имена, выбираемые произвольно. Такие имена называются псевдонимами.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |