Языки пространственных запросов

Примеры запросов на языке реляционной алгебры


Приведем примеры, которые покажут, как описанные реляционные операторы могут применяться для выборки данных, а также манипулирования ими в базе данных. Для этого мы сначала приведем запрос на естественном языке, затем запишем эквивалентное выражение на языке РА и, наконец, прокомментируем алгебраическое выражение и его альтернативную форму.

Запрос. Найти название государственного парка, где расположено озеро с номером 100.

Примечания. Начнем с выборки множества кортежей отношения ParkLake, имеющих значение атрибута Lid, равное 100. Множество-результат подвергается естественному соединению по ключу Sid с отношением StatePark. Результат проецируется на атрибут Название отношения StatePark, то есть Spname. Пользуясь оператором переименования ?, этот запрос можно разбить на части. Оператор переименования применяется для присваивания названия промежуточному отношению, появляющемуся в ходе вычисления сложного запроса. Также его можно использовать для переименования атрибутов отношений. Например,

переименовывает отношение СтароеНазв в НовоеНазв. Кроме того, первый атрибут отношения НовоеНазв, считая слева направо, получает имя Att1.

Пользуясь этим соглашением об именовании отношений, можно разбить этот запрос на части:

Альтернативная формулировка запроса выглядит так:

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

1. Запрос. Найти названия государственных парков с озерами, где основной улов составляет форель.



Примечания. Здесь последовательно применяются два оператора соединения. Однако сначала мы сокращаем размер множества путем предварительной выборки всех озер, где основным уловом является форель. Затем соединяем результат по ключу Lid с отношением ParkLake. После этого следует другое соединение с отношением StatePark по ключу Sid. Наконец, мы проецируем ответ на название парка (Spname).


2. Запрос. Найти виды рыб, которые являются основным уловом в озерах, расположенных на территории государственного парка Итаска.

Примечание. Этот запрос очень похож на предыдущий.
Запрос. Найти названия государственных парков, где есть хотя бы одно озеро.

Примечание. Соединение по атрибуту Sid создает промежуточное отношение, в котором кортежи из StatePark присоединяются к кортежам ParkLake. Затем результат проецируется на атрибут Spname.
3. Запрос. Составить список государственных парков, основной улов в озерах которых – это окунь или плотва.

Примечания. Здесь мы впервые используем оператор объединения. Сначала производится выборка озер, где основной улов составляют окунь или плотва. Затем выполняется соединение по атрибуту Lid с отношением ParkLake и по атрибуту Sid с отношением StatePark. Результат получен проекцией по атрибуту Spname.
4. Запрос. Определить названия государственных парков, в которых есть озера, где основным уловом являются и окунь, и плотва.

Примечание. Формулировка этого запроса очевидна.
5. Запрос. Определить названия государственных парков, в которых есть, по крайней мере, два озера.

6. Запрос. Определить идентификаторы, то есть атрибуты Sid, государственных парков, которые находятся на расстоянии не менее 50 миль от Миннеаполиса и в озерах которых основным уловом не является форель.

Примечание
1 Существует и другое название этого компонента SQL – язык манипулирования данными (DML, data manipulation language). – Примеч. пер.
document.write('');

Новости мира IT:
  • 02.08 -
  • 02.08 -
  • 02.08 -
  • 02.08 -
  • 02.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 01.08 -
  • 31.07 -
  • 31.07 -
  • 31.07 -
  • 31.07 -
  • 31.07 -
    Архив новостей
  • Последние комментарии:
     (66)

    2 Август, 17:53
     (19)

    2 Август, 17:51
     (34)

    2 Август, 15:40
     (42)

    2 Август, 15:35
     (1)

    2 Август, 14:54
     (3)

    2 Август, 14:34
     (3)

    2 Август, 14:15
     (2)

    2 Август, 13:34
     (7)

    2 Август, 13:04
     (3)

    2 Август, 12:28

    BrainBoard.ru

    Море работы для программистов, сисадминов, вебмастеров.

    Иди и выбирай!

    Loading
    google.load('search', '1', {language : 'ru'}); google.setOnLoadCallback(function() { var customSearchControl = new google.search.CustomSearchControl('018117224161927867877:xbac02ystjy'); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); customSearchControl.draw('cse'); }, true);
    <


    <


    <


    <



    This Web server launched on February 24, 1997

    Copyright © 1997-2000 CIT, © 2001-2009


    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.



    Содержание раздела