Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
база данных.docx
Скачиваний:
167
Добавлен:
24.03.2015
Размер:
5.83 Mб
Скачать

3.5. Теоретические языки запросов

Операции, выполняемые над отношениями, можно разделить на две груп­пы. Первую группу составляют операции над множествами, к кот» »рым отно­сятся операции: объединения, пересечения, разности, деления и декартова произведения. Вторую группу составляют специа льные операции над отно­шениями, к которым, в частности, относятся операции: проекции, соедине­ния, выбопа.

В различных СУБД реализована некоторая часть операций над отноше­ниями, определял ицая ь какой-то мере возможности данной СУБД и слож­ности реализации запросов к БД.

В реляционных СУБД для выполнения операций над отношениями ис­пользуются две группы языков, имеющие в качестве своей математиш осой основы теоретические языки запросов, предложенные Э.Коддом:

  • реляционная алгебра;

  • реляционное исчисление.

Эти языки представляют минимальные возможности pi альных языков ма­нипулирования данными ь еоот ветствии с реляционной моделью и эквива­лентны друг другу по своим выразительным возможностям. Существуют не очень сложные правила преобразования запросов между ними.

В реляционной алгебре операнды и результаты всех дейтвий являются от­ношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляет­ся при выполнении последовательности реляционных операторов, применя­емых к отношениям. Операторы состоят из операндов, в роли которых вы­ступают отношения, и реляционных операций. Результатом реляционной операции является отношение.

Языки исчислений, в отличие от реляционной алгебры, являются непро­цедурными ^описательными, или декларативными) и позволяют ьыража гь запрос ы с помощью предиката первого порядка (высказывания в виде функ­ции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лини информации} о желаемом результате. Для эт их языков характерно на­личие наборов правил д ля записи запрос ов. В частности, к языкам этой груп­пы относится SQL.

При рассмотрении языков реляционной алгебры и исчислений будем ис­пользовать базу данных, включающую в себя следующие таблицы:

  • S (поставщики);

  • Р (детали);

  • SP (поставки).

Первичными к лючами этих таблиц яв. ыют я соотв< телвенно: П# (код постаь- щика), Д# (код детали) и < оставнпй ключ (П#, Д#). Содержимое таблиц приведе­но на рис. 3.7. Для удобства изложения предположим, что в рассматриваемых язы­ках запросов нет oi раничений на употребление символов русского алфавита в именах атрибутов. Каждое из полей П# и Д# таблицы SP в отдельности является внешним ключом по отношению к таблице S и Р соответственно.

Предположим, что имена доменов (множеств допустимых значений) со­впадают с именами атрибутов. Исключение составляют атрибуты Гпрод П (город, в котором находится постаыцик) и Город Д (город, в котором выпус­кается деталь), которые имеют общий домен: множесл чо названий городов. Имя эт ого домена может быть, налр; шер, просто Город. Хграктерисл ики доме­нов как типов данных следующие: Д# — строка символов длиной 5, Имя - стро­ка символов длиной 20, Статус — цифровое длиной 5, Город - строка символов

S

п#

Имя

Статус

Город/!

S1

Сергей

20

Москва

S2

Иван

10

Киев

S3

Борис

30

Киев

S4

Николай

20

Москва

S5

Андрей

30

Минск

э

д#

Название

Тип

Вес

Город Д

Р1

гайка

каленый

12

Москва

Р2

болт

мягкий

17

Киев

РЗ

винт

твердый

17

Ростов

Р4

винт

каленый

14

Москва

Р5

палец

твердый

12

Киев

Р6

шпилька

каленый

19

Москва

SP

П#

Д#

Количество

S1

Р1

300

S1

Р2

200

S1

РЗ

400

S1

Р4

200

S1

Р5

100

S1

Р6

100

S2

Р1

300

S2

Р2

400

S3

Р2

200

S4

Р2

200

S4

Р4

300

S4

Р5

400

Рис. 3.7. Таблицы поставщиков, деталей и поставок


длиной 15, Д# — строка символов длиной 6, Тип - строка символов длиной 6, Вес — цифровое длиной 5. Количество — цифровое длиной 5

3.6, Реляционная алгебра

Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над от­ношениями действия.

I (римером языка запросов, основанного на реляционной алгебре, являет­ся ISBL (Information System Base Language — базовый язык информацион­ных систем). Языки запросов, построенные на основе реляционной алгебры, в современных СУБД широкого распространения не получили. Однако зна­комство с ней полезно дли понимания сути реляционных операций, выража- емых другими используемыми языками.

Вариант реляционной алгебры, предложенный Коддом, включает в себя следующие основные операции: объединение, разность (вычитание), пересе­чение, декартово (прямое) произведение (или произведение), выборка (се­лекция, ограни гение), проекция, деление и соединение. Упрощенное графи ческое представление этих операций приведено на рис. 3 8.

По справедливому замечанию Дейта, реляционная алгебра Кодда облада ет несколькими недостатками. Во-первых, восемь перечисленных операции по охвату своих функций, с одной стороны, избыточны, так как минимально необходимый набор составляют пять операций: объединение, вычитание, про изведение, проекция и выборка Три другие операции (пересечение, соедине­ние и деление) можно определить через пять минимально необходимых. Так, например, соединение — это проекция выборки произведения.

Во-вторых, этих восьми операций недостаточно для построения реальной СУБД на принципах реляционной алгебры. Требуются расширения, включа­ющие операции: переименования атрибутов, образования новых вычисляе­мых атрибутов, вычисления итоговых функций, построс ния сложных алгеб- иаических выражений, присвоения, сравнения и i. д.

Рассмотрим перечисленные операции более подробно, сначала опера­ции реляционной алгебры Кодда, а затем — дополнительные операции, вве­денные Дейтом.

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

Объединение Разность Пересечение

h 1

Деление Соединение (естественное)

Рис. 3.8. Основные операции реляционной алгебры

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

3 Загс 474

Соем( стгшость структур отношений означаем совместимость имен атри­бутов и типов соответствующих доменов. Частным случаем совместимости является идентичное! ь (совпадение). Для устранения конфликтов имен атри- бу гов в исходных отношениях (когда совпадение имен недопустимо), а также для построения произвольных имен атрибутов результирующего отношения применяется операция переименования атрибутов. Структура результирующе­го отношения по определенш im правилам наследует свойства структур исход­ных отношений. В большинстве рассг гатриваемых бинарных реляционных опе­раций будем считать, что заголовки исходных отношений идентичны, так как в этом стучае не возникает проблем с заголовком результирующего отношения (в общем случае, заголовки могут не совпадать, тогда нужно оговаривать пра вила формирования заголовка отношения-результата).

Объединением двух совместимых отношений R1 и R2 одинаковой размер ности (R1 UNION R2) является отношение Rr содержащее все элементы ис­ходных отношений (с исключением повторений).

Пример 1. Объединение отношений.

Пусть отношение обозначает R1 множество not тавщиков из Лондона, а от­ношение R2 — множество поставщиков, которые поставляют деталь Р1. Тог­да отношение R обо шачаст поставщиков, находящихся в Лондоне, или по­ставщиков, выпускающих деталь Р1, либо тех и других.

R1

п#

Имя

Статус

Город П

S1

Сергей

20

Москва

S4

Николай

20

Москва

R2

П#

Имя

Статус

Город_П

S1

Сергей

20

Москва

S2

Иван

10

Киев

R(R1 UNION R2)

П#

Имя

Статус

Город_П

S1

Сергей

20

Москва

S2

Иван

10

Киев

S4

Николай

20

Москва

Вычитание совместимых отношений R1 и R2 одинаковой размерности (R1 MINUS R2) есть отношение, тело которого состоит из множест ва кортежей, принадлежащих R1, но не принадлежащих отношению R2. Для тех же отно­шений R1 и R2 из предыдущего примера отношение R будет представлять собой множество поставщиков, находящихся в Лондоне, но не выпускающих деталь Р1, то есть R={(S4 Николай, 20, Москва)}.

Заметим, что результат операции вычитания зависит от порядка следова­ния операндов, то есть RJ MINI IS R2 и R2 MINUS R1 — не одно и то же.

Пересечение двух совместимых отношений R1 и R2 одинаковой размер­ности (R1 INTERSECT R2) порождает отношение R с телом, включающим в себя кортежи, одновременно принадлежащие обоим исходным отношени­ям. Для отношений R1 и R2 результирующее отношение R будет означать всех производителей из Лондона, выпускающих деталь Р1. Тело отношения R состоит из единственнпго элемента (S1, Сергей, 20, Москва).

Произведение отношения R1 степени к1 и отношения R2 степени к2 (R1 TIMES R2). которые не имеют одинаковых имен атрибутов, есть такое отношение R степени (к1+к2), заголовок которого представляет сцепление заголовков отношений R1 и R2, а тело имеет кортежи такие, что первые к! элементов кортежей принадлежат множеству R1, а последние к2 элементов — множеству R2 При необходимости получить произведение двух отношений, имеющих одинаковые имена одного или нескольких атрибутов, применяется операция переименования RENAME, рассматриваемая далее.

Пример 2. Произведение отношений.

Пусть отношение F1 представляет собой множество номеров всех теку­щих поставщиков {SI, S2, S3, S4, So}, а отношение R2 - множество номеров всех текущих деталей {PI, Р2, РЗ, Р4, Р5, Г6}. Результатом операции R1 TIMES R2 является множество всех пар типа «поставщик - - деталь», то есть {(S 1,Р1), (S1,P2), (S1.P3), (S1,P4), (S1,P5), (S1,P6), (S2.P1) (S5,P6)}.

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

Выборка (R WHERE f) отношения R по формуле f представляет собой новое отношение с таким же заголовком и телом, состоящим из таких корте­жей отношения Р., которые удовлетворяют истинности логическою выраже­ния заданного формулой f. Для записи формулы используются операнды — имена атрибутов (или номера столбцов), константы, логические операции (AND — И, OR — ИЛИ, NOT — НЕ), операции сравнения и скобки.

Д#

Название

Тип

Вес

ГородJX

Р1

гайка

каленый

12

Москва

Р5

палец

твердый

12

Киев

SP WHERE П# = "SI" AND Д# = "Р1"

П#

Д#

Количество

S1

Р1

300

Проекция отношения А на атрибуты X, Y,.. , Z (А [X, Y,... ,7]), где множе­ство {X, Y,..., Z) является подмножеством полного списка атрибутов заголовка отношения А, представляет собой отношение с заголовком X, Y, .., Z и телом, содержащим кортежи отношения А, за исключением повторяющихся кортежей. Повторение одинаковых а грибутов в списке X, Y,..., Z запрещается.

Операция проекции допускает следующие дополнительные варианты записи.

  • отсутствие списка атрибутов подразумевает указание всех атрибутов (операция тождественной проекции);

  • выра жение вида R[ ] означает пустуь, проекцию, результатом которой яв ляется пустое множество;

  • операция проекции может применяться к произвольному отношению, в том числе и к резу чьтату выборки.

Примеры 4. Проекции.

П#

Город_П

S2

Киев

S3

Киев

Тип

Город Д

каленый

Москва

мягкий

Киев

тгердый

Ростов

тгердый

Киев

Результатом деления отношения R1 с атрибутами А и В на отношение R2 с атрибутом R (R1 DIVIDEBY R2), где А и В простые или составные атрибу­ты, причем атрибут В — общий атрибут, определенный на одном и том же домене (множестве доменов составного атрибута), является отношение R с заголовком А и телом, состоящим из кортежей г таких, что в отношении R1 имеются кортежи (г, s), причем множество значений s включает множество значений атрибута В отношения R2.

Р [Тип, 1ород_Д] (S WHERE Город_П=" Киев"1) I П#J

Пример 5. Деление отношения.

Пусть R1 — прос кция SP [П#,Д#], aR2 отношение с зато. ювкомД# и телом {Р2, Р4}, тогда резу штатом деления R1 на R2 будет отнпшент R < заголовком 11# и телом {S1, S4}.

RI

R2

R1 DfVIPEBY R2

п#

д#

S1

Р1

S1

Р2

S1

РЗ

S1

Р4

S1

Р5

S1

Р6

S2

Р1

S2

Р2

S3

Р2

S4

Р2

S4

Р4

S4

Р5

Д#

П#

S1

Р2

S4

Р4

( оединение Cf(Rl, R2) отношений R1 и R2 по условию, заданному форму­лой f. представляет собой отношение R, которое можно получить путем Де­картова произведения отношений R1 и R2 с последующим применением к результату операции выборки по формуле f. Правила записи формулы f та­кие же, как и для операции селекции.

Другими словами, соединением отношения R1 по атрибуту А с отношени­ем R2 по атрибуту В (отнош ения не имеют общих имен атрибутов; является результат выполнения операции вида:

(R1 TIMES R2) WHERE А© В, где Q—логическое выражение над атрибутами, определенными на одном (не­скольких — для составного атрибута) домене. Соединение Cf( R1. R2\ где формула f имеет произвольный вид (в отличие от частных случаев, рассмат­риваемых далее), называют также Отсоединением.

Важными с практической точки зрения частными случалми соединения являются эквисоединение и естественное соединение.

Операция этисоединения характеризуется тем, что формула задает равен­ство операндов. 11риведенный выше пример демонстрируе г частный с лучай опе­рации эквисоединения по одному с толбцу. Иногда эквисоединение двух отно­

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

Операция естественного соединения (операция.}ОШ) применяется к двум отношениям, имеющим общий атрибут (простой или составной). Этот атри­бут в отношениях имеет одно и то же чмя (совокупность имен) и определен на одном и том же домене (доменах).

Результатом операции естественного соединения является отношение R, котороо пред< тавляет собой проекцию эквисоединения отношений R1 и R2 по об щему ат рибуту на объединенную совокупность атрибутов < >боих отношений.

Пример 6. Q-гоединение.

Необходимо найти соединение отношений S и Р по атрибутам Город !! и Город Д соответственно, причем кортежи резу. [ьтирующего отношения дол­жны удовлетворять отношению «больше» (в смысле лексикографического порядка— по алфавиту).

(S TIMES Р) WHERE Город_П > Город_Д Пример 7. Эквисоединение.

п- #

Имя

Статус

Город

Д#

Название

Тип

Deu

Город. Д

S2

Иван

10

Киев

Р1

гайка

каленый

12

Москва

S2

Иван

10

Киев

Р4

винт

кэленый

14

Москва

S2

Иван

10

Киев

Р6

шпилька

каленый

19

Москва

S3

Борис

30

Киев

Р1

гайка

каленый

12

Москва

S3

Борис

30

Киев

Р4

винт

каленый

14

Москва

S3

Борис

30

Киев

Р6

шпилька

каленый

19

Москва

1усть необходимо найти естественное соединение отношений S и Р по об­щему атрибуту, характеризующему город (в отношении S - это 1ород П, а в отношении Р — Город Д). Поскольку условие операции т ребует одинаковос­ти имен атрибутов, по которым выполняется соединение, то применяется опе­рация RENAME переименования атрибутов.

(S RENAME Город ! t AS Город) JOIN (Р RENAME 1ород_Д AS Город)

П#

Имя

Статус

Город

Д#

Название

Тип

Вес

S1

Сергей

20

Москва

Р1

гайка

каленый

12

S1

Сергей

20

Москва

Р4

винт

каленый

14

S1

Сергей

20

Москва

Р6

шпилька

каленый

19

S2

Иван

10

Киев

Р2

болт

мягкий

17

S2

Иван

10

Киев

Р5

палец

твердый

12

S3

Борис

30

Киев

Р2

болт

мягкий

17

S3

Борис

30

Киев

Р5

палец

твердый

12

34

Николай

20

Москва

Р1

гайка

каленый

12

S4

Николай

20

Москва

Р4

винт

каленый

14

S4

Николай

20

Москва

Р6

шпилька

каленый

19

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

Операция переименования позволяет изменить имя атрибута отно­шения и имеет вид:

RENAME <исходное отношение> <старо< имя атрибута> AS <новое

имя атрибута>,

где <исходное отчошение> задается именем отношения либо выражени­ем реляционной алгебры. В последнем случае выражение заключают в круг­лые скобки.

Например, RENAME Город П AS Город_размещения Поставщика.

Замечание

Для удобства записи выражений одновременного переименования несколь­ких атрибутов Дейтом введена операция множественного переименования, которая представима следующим образом:

RENAME <отн.> <ст. имя атр.1> AS <нов. имя атр.1>,<ст. имя атр.2>

AS <нов. имя атр.2>,... ,<ст. имя aTp.N> AS <нов. имя aTp.N>.

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

EXTEND <исходное отношение> ADD <выраж°ние^ AS <новый атрибут^,

где к исходному отношению добавляется (ключевое слово ADD) <новый ат­рибуту подсчи гываемый по правилам, заданным <выражением>. Исходное отношение может быть задано именем отношения и с помощью выражение реляционной алгебры, заключенного в круглые скобки. При этом имя нового атрибута не должно входить в заголовок исходного отношения и не может ис­пользоваться в <выражс нии>. Помимо обычных арифметических операций и операций сравнения, в выражении можно использовать раз шчные функции, называемые и готовыми, такие как: COUNT (количество), SUM (сумма). AVG (среднее), МАХ (максимальное), MIN (минимальное).

11апример,

EXTEND (P.fOlN SP) ADD (Вес * Количество) AS Общий Bee.

Замечания.

  • Пользуясь операцией расширения, можно выполнить переименование атрибута. Для этого нужно в выражении указать имя атрибута, в конст­рукции AS определить новое имя этого атрибута, затем выполнить про­екцию полученного отношения на множество атрибутов, исключая ста­рый атрибут. Таким образом, запись (EXTEND S ADD Город TI AS Город) [П#, Имя, Статус, Город] эквивалента конструкции S RENAME Город _П AS Город.

  • Подобно гому. как это сделано для операции переименования. Дейт опре­делил операцию множественного расширения, которая позволяет в од­ной синтаксической конструкции вычислять несколько новых атрибу­тов. Формально операция чредгтавима следующим образом:

EXTEND • :отн.> ADD <выр.1> AS <-атр.1>, <выр 2>

AS ^атр.2>,... ,<выр.Ы > AS <aTp.N>.

Операция подведения итоеов SUMMARIZE выполняет «вертикальные» или групповые вычисления и имеет следующий формат:

SUMMARIZE <исх. отн.> BY (<списоъ атрибутев>) ADD <выр >

AS <новый атрибут>,

где исходное отношение задается именем отношения либо заключенным в круглые скобки выражением реляционной алгебры, <список атрибутов> представляет собой разделенные запятыми имена атрибутов исходного от­ношения Al. А2,..., AN, <выр.> — скалярное выражение, аналогичное вы­ражению операции EXTEND, а <новый агрибут> — имя формируемого атрибута. В списке атрибутов и в выражении не должен испо. [ьзоват ься сновый атрибут>.

Результатом операции SUMMARIZE является отношение R с заголовком, со- (тоящим из атрибутов списка, расширенное новым атрибутом Для получения тела отношения R сначала выполняется проецировали" (назовем проекцию RI) исход­ного отношения на атрибуты Al, А2,..., AN, после чего каждый кортеж проекции расширяется новым (N+1 )-м атрибутом Поскольку проецирование, как правило, приводи г к соктащ< нию количества кортежей по отношению к исходному отноше­нию (удаляюте я одинаковые кортежи), то можно считать, что происходит своеоб­разное ] руппирование кортежей исходного отношения: одном\ кортежу отноше­ния R1 соответс гвует один или более (если бы то дуб. щрованиепри проецировании) кортежей исходного отношения. Значение (N+l)-ro атрибута каждого кортежа от­ношения R формируется путем вычис тенпя выражения над соответствз'ющей -/то­му кортежу группой кортежей исходного отношения.

Пример 8.11одведение итогов.

Пусть т ребуется вычислить количество поставок по каждому из постав­щиков.

SUMMARIZE SP BY (П#) ADD COUNT AS Количество тих. гавок

п#

Количество псстапок

S1

6

S2

2

S3

1

S4

3

Отметим, что функция COUNT определяет количество кортежей в каж­дой из групп исходного отношения.

С )перацияишс жесты иного пооасдепия итсов, подобно соотьетх твуюшим опе- paj [иям переименования и paci нирения, выполняет одновременно несколько «вер­тикальных» вычислений и записывает результаты в отдельные новые атрибуты Простейшим примером такой операции может служить следующая запись:

SUM M^RIZE SP BY (Д#) ADD SUM Количество AS Общее_число_по-

c гавок AVG Количе< тво AS Среднее число поставок.

К основным оператонам. позволяющим изменясь тело существуют* го отноше­ния, отнесем операции реляционною присвоения, встлвки, обновления и удаления.

Операцию присвоения можно представить следующим образом:

<выражение-цель> := <выражение-источник>,

где оба выражения задают совместимые (точнее, эквивалентные) по структу­ре отношения Типичный случай выражений: в левой части — имя отноше­ния. а в правой — некоторое выражение реляционной алгебры. Выполнение операции присвоения сводится к замене предыдущего значения отношения на новое (начальное значение, если тело отношения было пустым), опреде­ленное выражением-источником.

С помощью операции присвоения можно не только полностью заменить все значения отношения-цели, но и добавить или удалить кортежи Приве­дем пример, в котором в ол ношение S дописывается один кортеж:

S ■= S UNION |{< 11#: 'S6' >, < Имя: 'Борис' >, < Статус: '50' >,

< 1ород II: 'Мадрид' >}}

Более удобными one рациями изменения тела отношения являются опера­ции встаьки. обновления и удаления.

Операция вставки INSERT имеет следующий вид:

INSERT <выражение источник> INTO <выражение-цель>,

где оба выражения должны быть совместимы по структуре. Выполнение опе­рации сводится к вычислению <выражение-источник> и вс гавке по лучен­ных кортежей в отношение, заданное <выражение-цель>.

Пример. INSERT (S WHERE Город_П='Москва') INTO Temp.

Операция обновления UPDATE имеет следующий вид:

UPDA ГЕ <выражение-цель> <список элементов>,

где <список элементов> преде гавляет гобой пос. гедовательность разделен­ных запя гыми операций присвоения - :атрибут> := --скалярное выражение> Результатом выполнения операции обновления является отношение, полу­ченное после присвоения соответствующих значений атрибутам отношения, заданного целевым выражением.

Например, UPDATE Р WHERE 1ип= 'каленый' Город := 'Киев'. Эта операция предписывает изменить значение атрибута Город (независимо от того, каким оно было) на новое значение — 'Киев' таких кортежей отношения Р, атрибут Тии кото­рых имеет значение 'каленый'.

Операция удаления DELETE имеет следующий вид:

DELETE <вырэжг!ние-цель>,

где <выражение-цель> представляет собой реляционное выражение, опи­сывающее удаляемые кортежи.

Например, DELETE S WHERE Статус < 20.

Операция реляционного спавнения может использоваться для прямого сравнения двух отношений. Она имеет синтаксис:

<выражение1 > © <выпажение2>,

где оба выражения задают совместимые по структуре отношения, а знак © — один из следующие операторов сравнения: = (равно), Ф (не равно), < (соб­ственное подмножество), < (подмножество), > (надмножество), > (собствен­ное надмножество).

Например, сравнение: «Совпадают ли города поставщиков и города хране­ния деталей?» можно записать так: S [Город П] = Р |1ород Д].

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

Свойство замкнутости позволяет записывать вложеннь" выраж ения реля­ционной алгебры, основой которых выступают рассмотри иные ранее элемен­тарные операции: объединение, проекция, пер< сечение, выборка и т. д.

При записи произвольного выражения реляционной алгебры надо прини - мать во внимание следующее.

1. В реляционной алгебре должен быт ь определен приоритет выполнения операций (например, операция пересечение более приоритетна чем опе­рация объединение), который нужно учитывать при записи выражений. Для изменения порядка выполнения операций в выражениях можно ис­пользовать круглые скобки.

  1. Существуют тождественные преобразования, позволяющие по-разному записывать одно и то же выражение. 11апример, следующие выражения эквивалентны (здесь А — отношение, С. CI, С2 — выражения):

A WH ERE С1 AND С2 и (A WH ERE С1) INTERSECT (A WH ERE С2),

A WHERE CI OR С2 и (A WHERE CI) UNION (A WH ERE С2),

A WHERE NOT С и A MINUS (A WHER Е С).

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

3.7. Реляционное исчисление

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

Ьнешне подходы сильно оазличаются: один из них предписывающий (ре ляционная алгебра), а другой описательный (реляционное исчисление). На более низком уровне рассмот рения подходы эквивалентны, так как любые вы­ражения ре. [яционной алгебры метут быть преобразованы в семант] [чески эк­вивалентные выражения реляционного исчисления и наоборот. Возможности такого преобразования доказывалась многими авторами, в частности, для это­го можно испо. 1ьзовчть алгоритм редукции Кодда.

Для названного алгоритма преобразования покажем на содержательном уровне возможности формулировки одного и того же заприса с помощью ре­ляционной алгебры и ре. [яционного исчисления на простом примере.

Пусть запрос выг лядит следующим образом: «Получить номера и города поставщиков, выпускающих деталь Р2».

Словесно а тгебраическая версия этого запроса описывается так:

  • образовать естественное соединение отношений S и SP по ат рибуту 11#;

  • выбрать из результата этого соединения кортежи с деталью Р2 (в поле Д# должна быть строка Р2);

  • спроецировать результат предыдущей операции на атрибуты П# и ГородП.

Этот же запрос ь терминах реляционного исчисления можно сформулиро­вать примерно так: «Полу шть атрибуты П# и Город_ П для таких поставщи­ков, для которых существует поставка в отношении SP с тем же значением атрибута П# и со значением Р" атрибута Д#»

Результатом выполнения tanpoca будет отношение R вида-

п#

Город_П

S1

Москва

S2

Киев

G3

Киев

S4

Москва

Читатель может самостоятельно убедиться в этом, проделав описанные выше операции реляционной алгебры.

Преимуще» твом ре шционного исчисления перед реляционной алгеброй можно считать то, что пользователю не требуется самому строить алгоритм выполнения запроса. IIpoiрамма СУБД (при достаточной ее интеллектуаль­ности) сама строит эфф< ктивный алгоритм.

Отметим, что поставленную задачу выборки можно решить более опти­мально с точки зрения потребности в оперативной памяти. Более эконо­мичный вариан г решения в терминах операциях реляционной алгебры вы­глядит так:

  • выбрать из отношения SP кортежи, относящиеся к детали Р2;

  • выполнить естественное соединение отношения S и отношения, полу­ченного на предыдущем шаге;

  • спроецировать текущее отношение на атрибуты П# и 1брод_ II.

Экономим памяти при реализации этого алгоритма в сравнении с перво­начальным вариантом достигается за счет снижения размерности учас гвую щих в операциях временных таблиц, необходимых для хранения промежу­точных результатов. Если в предыдущем случае размерность временной таблицы бы ла 12*6 (12 строк на 6 колонок), то в последнем случае — 4 '6.

Математической основой реляционного исчисления является исчисле­ние предикатов — один из разделов математической ло1 ики. Понятие ре ля ционною исчисления как языка работы с базами данных впервые предло­жено Коддом. Им же был разработан язык ALP11А - прототип программно реализованного языка QUEL, который некоторое иремя конкурировал с языком SOL.

Существует два варианта исчислений: исчисление кортежей и исчисле­ние доменов. В первом случае д ля описания отношений используются нере­менные, допустимыми значениями которых являются кортежи отношения, а ро втором случае — элементы домена.

Реляционное ис числение, основанное на hopmt жах ( ш числение кортема гм), предложено и pea тизс>вано при разработке упоминавшегося языка AI.PI1A. В нем, как и в процедурных языках программирования, сначала нужно опи­сать используемые переменные, а затем записывать некоторые выражения.

Опт отельную чисть исчш пения можно представить в виде:

RANGE OF <переменная> IS <список>,

где пронисными буквами записаны к пючевые с юва языка, <переменная> — идеи тификатор переменной кортежа (области значений), а <список> — по­следовательность одного или более элементов, разделенных занятыми, то есть конструкция вида, х, L х.г [..., хп]..].

Вся конструкция RANGE указывает идентификатор переменной и область ее допустимых значений. Список элементов х, [, х2 [... , xj ..] содержит эле­менты, кажцый из которых является либо отношением, либо выражением над отношением (порядок записи выражений описывается далее). Все элементы списка должны быть совместимы по типу, го есть соответствующие элемен­там отношения должны иметь идентичные заголовки ()бласть допз'стимых значений <переменной> образуется путем объединения значений всех эле­ментов списка Так, запись вида RANGE OF Т IS XI,Х2 означает, что область определения переменной Т включает в себя все значения из отношения, ко­торое является объединением отьошений XI и Х2.

Пример 1. Варианты описаний.

RANGE OF SX IS S;

RANGE OF SPX IS SP;

RANGE OF SY IS (SX) WHERE SX.lopufl_n = 'Москва',

(SX) WHERE EXISTS SPX (SPX.II# = SX Il# AND

SPX./I# = 'P1');

Переменные SX и SPX в первых двух примерах определены соответствен­но на отношениях S и SP соответственно фис. 3.7). Третий пример иллюст­рирует запись выражений при определении переменной кортежа Перемен­ная SY здесь может принимать значения из множества кортежей отношения S для поставщиков из Лондона или поставщиков, которые поставляют деталь Р1 (или для тех и других).

Синтаксис выражений исчисления рассматривается ниже Зспись выраже ния, формулирующего запрос на языке исчисления кортежей с помощью фор­мы Бэкуса-Наура, упрощенно можно представить следующим образом:

<выражение> ::= (у, [. у2 [..., ут ]...]) [ WHFRE wff ]

у -■= {<переменная> | <переменная>.<атрибут> } [ AS <"ал рибут> ]

Wff ::= <условие> | NOT wff |

<условие> AND wff | <условие> OR wff | IF <условие> THEN wff | EXISTS <переменная-> (wff) | FORALL <-переменная> (wtf) | (wff)

Общий смысл записи выражения состоит в перечислении атрибутов ре- зультирукмце го (целевого) отношения, атрибуты которого должны удовлет- вооять усл( >вию истинности формулы wff (well formulated formula — правильно построенная формула). Список атрибутов целевого отношения, или целевой список, в терминах реляционной алгебры по существу определяет операцию проекции, а формула wff - селекцию кортежей.

В паре <переменная>.<атрибут> первая составляющая служит для указа­ния переменной кортежа (определенной конструкцией RANGE), а вторая — для определения атрибута отношения, на котором изменяется переменная кортежа. Необязательная часть «AS <агрибут>» используется для переиме­нования целевого отношения. Если она отсутствует, то имя атрибута целево­го отношения наследуется от соответствующего имени атрибута исходного отношения.

Употребление в качестве элемента целевого отношения прос го имени пе­ременной Т равносильно перечислению в списке всех соответствующих ат­рибутов, т. е. Т.А,, Т.А2, ... , Т.Ап, где А,, А,, ... , Ап — атрибуты отношения, сопоставляемого с переменной Т

Пример 2. Варианты записи пары <переменная>.<атрибут"~\

SX.I1#

SX.n# AS Город Поставщика

SX

SX.n#, SX.ropo/(_n AS Город_ Поставщика, РХ.Д#, РХ. Город _Д# AS Город-

устали

В приведенном опреде. гении wff - :условие> представляет cofой либо фор­мулу wff, заключенную в скобки, либо простое сравнение вида;

<операнд!> © <операнд2>,

где в качестве любою операнда выступает переменная или скалярная кон­станта, а символ © обозначает операцию сравнения =, >, >, <. < и т. д.

Ключевые слова NOT, AND и OR обозначают логические операции соот- ш гственно: И, НЕ и ИЛИ. Ключевые слова IF и THEN переводятся соответ­ственно «если» и «то». И наконец, ключевые слова EX (STS и FORA LL называ­ются кванторами. Первый из них — квантор существования, а второй — квантор всеобщности. Рассмотрим эти кванторы несколько подробнее.

Формула wff вида: EXISTS х (f) означает- «Существует по крайней мере одно такое значение переменной х, что вычисление формулы t дает значе­ние истина». Выражение вида: FORALL х (f) интерпретируется как выс­казывание: «Для всех значений пер< менной х вычисление формулы f дает значение истина». В общем случае переменные кортежей в формулах мо­гут быть свободными или связанными. В формулах EX [STS к (f) и FORALL х (f) переменные кортежей х всегда являются связанными.

Пример 3. Запись выражения.

Приведем запись выражения, соответствующее запросу: «Получить име­на поставщиков, которые поставляют все детали».

5Х.Город_П Wl [ERE FORALL PX (EXISTS SPX

(SPX.n# = SXTI# AND 5РХ.Д# = SX-Д* ))

Равносильное этому выражение выглядит так:

8Х.Город_П WHERE NOT EXISTS PX (NOT EXISTS SPX

(SPX.H# = SX.n# AND 5РХ.Д# = SX-Д* ))

Описаннос исчисление не обладаел вычислительной полнотой, так как не позволяет выполнять вычисления, связанные с обрабол кой данных в базах. Добавление вычислительных функций в это исчисление можно реализовать путем расширения определения операндов сравнения и элементов це левого списка таким образом, чтобы они допускали использование скалярных выра­жений с литера [ами, ссы. 1ками на атрибуты и итоговыми функциями. В ка­честве итоговых могут выступать следующие функции: COl INT (количество), SI JM (сумма), AVG (среднее), МАХ (максимальное), MIN (минима тьное). Для целевых элементов целесообразно использовать спецификацию вида «AS <имя атрибута'»», позво ляющую явно задать имя результирующему атрибу­ту, если нет очевидного наследуемого имени.

Пример 4. Запись запроса.

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

(SPX.I1#, SPX.Количество, PX, РХ.Вес * ЬРХ.Количестви AS ()6щий_Вес) WHERE PX Д# - SPX-Д*

Вариант реляционно, о исчисления, основанного на доменах (исчисление до­менов), предложен Лакроиксом и Пиротте (Lacroix anil Pirotte), которые так же разработали на его основе соответствующий язык ILL. Другими языками, основанными на исчислении доменов, являются: FQL, DEDUCE, атакж° QBE с некоторыми оговорками.

По утверждению Дейта, язык QBE включает элементы исчисления корте­жей и исчисления доменов, но более близок ко второму. Он не является реля­ционно полным, так как не поддерживает операцию отрицания квантора су­ществования (NOT EXISTS). Несмотря на этот недостаток, язык QBE получил широкое распространение в современных СУБД. Тем более, чго ре­ализации этого языка, как правило, "тире исходного языка.

Исчисление доменов имеет много сходс гва с исчислением кортежей. В отличие от исчисления кортежей, в исчислении доменов основой любого выражения запро­са рыслупают переменные доменов. Переменная домена — это скалярная перемен­ная, значения которой охватывают элементы некоторого домена

Большая часть различий рассматриваемых исчислений заключается в том, что исчисление доменов поддерживает дополнительную форму условия, на­зываемую условием принадлежности. В общем виде условие принадлежнос­ти записывается в виде:

Ъ ( A-8V А.;.Э2,... ),

где А. — атрибут от ношения R, а 9 — переменная домена или литерал. Проверл емое условие ис гинно, если и только если существует кортеж в отношении R. имеющий атрибуты А, равные заданным в выражении соответствующим зна­чениям 9.

Например, выражение SP (П# : 'S1', Д# : 'Р1') истинно, если в отношении SP существует хотя бы один кортеж со значением 'S1' атрибута П# и значе­нием 'РГ атрибута Д#. Аналогично, выражение SP (П# : SX, Д# : РХ) истин­но, если в отночтении SP существует кортеж, в котором значение атрибута Г1# эквивалентно текущему значению переменной домена SX, а значение ат­рибута Д# эквивалентно текущему значению переменной домена РХ.

В следующих примерах будем подразумевать существование (объявлен­ное каким-либо образом, подобно оператору RANGE исчисления кортежей) следующих переменных доменов: SX (домен П#), РХ (домен Д£), NAMEX (домен Имя).

Пример 5. Выражения исчисления доменов.

(SX) WH ERE S (П#: SX)

(SX) WHERE S (П# : SX, 1ород П : 'Москва')

NAMEX WHFRE EXISTS SX ( S (П# : SX. Имя NAMEX) AND FORAI .L РХ ( IF P (Д# : РХ )

THEN SP (11# : SX, Д# : PX ) ) )

Первое выраже ние означает множество всех номеров поставщиков отно­шения S, второе - множество номеров поставщиков из Лондона. Третье вы ражение соответствует запросу на получение имен поставщиков, производя щих все детали

3.8. Язык запросов по образцу QBE

Хранимые в базе данные можно обрабатывать врущую, последовательно просматривая а редактируя данные в таблицах с помощью имеющихся в СУБД соответствующих средств. Для повышения эффективности прим'ня- ют запросы, позволяющие производить множественную обработку данны», го есть одновременно вводить, редакп [ровать и удалять множество записеи, а также выбирать данные из таблиц.

Запрос представляет < обой специальным образом описанное требование, определяющее состав производимых над БД опеоаций по выборке, удалению или модификации хранимых данных.

Для подготовки запросов с помощью различных СУБД чаще всего исполь­зуются два ос новных языка описания запросов:

  • язык QBE (Query By Example) — язык запросив по образцу;

  • SQL (Structured Query Language) — структурированный язык запросов.

По возможностям манипулирования данными при описании запросов ука­занные языки практически эквивалентны. Главное отличие между ними, по- видимому, заключается в способе формирования запросов- язык QBE пред пола!ает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.

Характеристика языка QBE

Теоретической основой языка QBE является реляционное исчисление с неременными-доменами. Язык QBE позволяет задавать сложные запросы к БД путем заполнения нредла) аемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции — достаточно описать образец ожидаемого резулыата. В каждой из современных реляционных СУБД имеется свой ва­риант языка QBE.

На языке QBE можно задавать запросы однотибличные и многотаблчч ■ ные ^ выбирающие или обрабатывающие данные из нескольких связанных таблиц).

С помощыо запросов на языке QBE можно выполнять следующие основ­ные операции.

  • выборку данных;

  • вычисление над данными;

  • вставку новых записей;

  • удаление записей;

  • модификацию (изменение) данных.

Результатом выполнения запроса является новая таблица, называемая от ьетной (первые две операции), или обновленная исходная таблица (осталь­ные операции).

Выборка, вставка, удаление и модификация могут производить* я безуслов­но или в соответствии сусловиями, задаваемыми с помощью логических выра­жений. Вычисления над данными задаются с помощью арифметических выра­жений и порождают в ответных таблицах новые поля, называемые вычисляемыми.

Запросная форма имеет вид таблицы, имя и названия полей которой совпадают с именем и названиями полей соответствующей исходной таб­лицы. Чтобы узнагь имена доступных таблиц БД, в языке QBE преду­смотрен запрос на выборку имен таблиц. Названия полей исходной таб­лицы могут вводиться в шаблон вручную или автоматически. Во втором случае используется запрос на выборку заголовков столбцов.

В современных СУБД, например в Access и Visual FoxPro, многие дей- ст вия по подготовке запросов с помощью языка QBE выполняются визу­ально с помощью мыши. В частности, визуа тьное связывание таблиц при подготовке запооса выполняется не элементами примеров, а просто «про­таскиванием» мышью поля одной таблицы к полю другой.

Первоначальный вариант QBE

В большинстве современных СУБД имеется свой вариант QBE, незна­чительно отличающийся от первого описания QBE, предложенного Злуф фом М.М. в 1975- 1977 гг. Рассмотрим основные возможности QBE, опи­раясь на первоначальный его вариант.

Для иллюстрации средств и возможностей языка QBE используем таб­лицы БД, которая относится к торговой сфере и используется в фирме, продающей товары нескольких видов. База данных включает челыре сле­дующие таблицы с полями:

  • ЕМ1* (служащие): ФИО — фамилия и инициалы с (ужащего, ЗАРПЛА­ТА — размер должностного оклада, РУКОВОДИТЕЛЬ — фамилия и инициалы руководителя, ОТДЕЛ - название отдела, в котором работа ет служащий;

  • SALES (продажи): ОТДЕЛ - название отдела, ТОВАР — название тоьара;

  • SUPPLY (поставщики): ТОВАР — название поставляемого товара, ПО­СТАВЩИК — название организации, поставляющей товар;

  • Т yTE (типы товаров): ТОВАР — название товара, ЦВЕТ — его цвет, СТО- ИМОСТЬ — стоимость товара.

В таблицах приведены неполные и упрощенные сведения. Так, в таблице TYPE указаны не все виды товаров, приведенные в таб 1ице SALES.

Для описания переменных в условиях отбора записей, а также для связы­вания шаблонов в запросах используются элементы примера.

Элемент примера играет роль идентификатора переменной (как в языке программирования) и зада< тся с помощью симво. [ьно-цифроыой последова тельности. Элементы примера в шаблонах выделим подчеркиванием. Вид (длина и состав) элемента примера роли не играют: главное чтобы при ис­пользовании в нескольких местах шаблона он был одинаков. Таким образом, как элементы примера, в частности, можно использовать идентификаторы example, х или у.

Для указания системе необходимости включения в ответную таблицу того или иного поля используется «Р.», что означает «напечатать^.

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

Киселев В.М.

1800

Белкин Б.Н.

хозтовары

Гурский С.И.

1600

Томилов А.Н.

игрушки

Андреева Е.А.

2000

Петров А. С.

косметика

Левин П.Г.

2200

Потров А.С.

канцтовары

Носов А. П.

1600

Томилов АН.

hi рушки

Гофман В.Э.

2600

Андреева Е.А.

косметика

Сорокина Т. В.

1700

Андреева Е.А.

косметика

Белкин Б.Н

1800

Петров А.С.

хозтовтры

Семин С. В

2200

Левин П.Г.

канцтовары

Григорьев А.Н.

1900

Томилов А.Н.

игрушки

Томилив А.Н.

2000

Петров А.С.

игрушки

SALES

ОТДЕЛ

ТОВАР

канцтовары

бумага

хозтовары

мыло

канцтовары

каранлаш

::осмотика

помада

игрушки

самолет

игрушки

машина

игрушки

кукла

косметика

духи

канцтовары

чернила

хозтовары

посуда

канцтовары

ручка

SUPPLY

ТОВАР

ПОСТАВЩИК

ручка

Pencraft

бумага

Pencraft

мыло

Procter & Gamble

карандаш

Flic

чернила

Pencraft

духи

Beautex

чернила

Flic

посуда

Cremco

помада

Beautex

самолет

Signal

машина

Signal

кукла

Signal

посуда

Flic

ручка

Beautex

карандаш

Pencraft

TYPE

ТОВАР

ЦВЕТ

СТОИМОСТЬ

посуда

белый

30

помада

красный

17

духи

42

ручка

зеленый

6

карандаш

синий

2

чернила

зеленый

4

чернила

синий

3

карандаш

красный

2

карандаш

синий

2

Пример 1. Запрос на выборку.

С учетом изложенного запрос на выборку всех зеленых товаров можно записать в следующем виде:

TYPE

ТОВАР

ЦВЕТ

СТОИМОСТЬ

Р. хх

зеленый

Словесно запрос можно сформулировал ь следующим образом: «Вывесги все то­вары XX. цве т которых зеленый». В приведенном шаблоне элемент примера XX не обязан юн и его можно опус гить. Элементы приме ра сказываются обязате iijio гфи записи логических условий, а гакже при связывании таблиц в запросах.

Пустые колонки из шаблона можно удалять.

Поимер 2. Удаление колонок.

У нас неиспользуемым с голбцом является CTOIIM ОСТЬ. Исходя их этого, для приведенною шаблона можно зшшсать следующий эквивалент ный 1паблон:

TYPE

ТОВАР

ЦВЕТ

Р.

зеленый

После заполнения шаблона для получения результата нажимается со­ответствующая клавиша, например <Enter>, и начинается выполнение запроса. Результатом выполнения приведенного запроса является сле­дующая таблица:

TYPE

ТОВАР

ручка

чернила

Рассмотрим основные возможности перечисленных выше типов операций, используемых в запросах.

Выборка данных

Про(тая выборка Примером простой выборки является запрос: <• Вывес­ти все возможные цвета товаров из таблицы TYPE». Пример 3.11ростая выборка.

Заполненный шаблон в атом случае будет выглядеть так:

TYPE

ТОВАР

ЦВЕТ

СТОИМОСТЬ

Р.

Ответная таблица имеет единственный столбец ЦВЕТ, содержащий зна­чения: белый, красный, пусто (значение не задано), зеленый и синий. Дубли­руемые значения при этом пропадают.

Если требуется вывести данные из нескольких полей исходной таблицы, в каждом из соответствующих столбцов шаблона записывается «Р.». Занесе­ние «Р.» во все столбцы шаблона можно заменить записью «Р» в первом столб­це шаблона нод именем таблицы.

Ире стая выборка с упорядочиванием Для упорядочения выводимых значений по возрастанию и по убыванию используются конструкции «АО.» и «DO » соответственно. Если требуется выполнить упорядочива­ние но нескольким столбцам, применяют конструкции вида: «АО(1).», «АО(2 ).».

Выборка < модификаторами (условиями). Выбор записей из исходной таб лицы в общем случае может быть основан на: точном совпадении, частичном со­впадении, (равнении.

  1. Точное совпадение задается вводом констант в соответствующих полях шаблона, как в случае запроса по товарам зеленою цвета.

  2. Частичное совпадение задается с помощью элементов примера. В частности, для формулировки запроса о выводе всех видов товаров, на­звания которых начинаются с буквы «и», можно воспользоваться конст­рукцией «Р.икс», записанной в поле ТОВАР таблицы TYPE Здесь: «Р.» задает вывод, «и» — константа, а «ке» — элемент примера, и] рающий роль переменной.

Используя элементы примера, можно ладавать различные варианты час­тичного совпадения со значениями данных из таблиц: в начале «ике». в конце «ха», в середине «х!ох2» и в произвольном месте.

Поскольку элементу примера сопоставим любой символ, в том числе и пустой (отсутствие символа), то условию частичного совпадения «х!ох2> удовлетворяют слова, не только имеющие символ «о» в середине, но начи­нающиеся и заканчивающиеся на «о».

Поимер 4. Частичное совпад< ние.

Шаблон запроса с выбооом товаров синего цвета, в середине названий ко­торых имеется буква «р», выглядит так:

TYPE

ТОВАР

ЦВЕТ

СТОИМОСТЬ

Р.хру

синий

Результат в этом случае будет следующий:

TYPE

ТОВАР

карандаш

чернила

3. Условие <-равнения записывается с помотцью операций сравнения: равно (=), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (-1= или прос го -i), не больше ( -i>), не меньше (-i<).

Пример 5. Условия сравнения.

Запрос имен сотрудников, работающих в отделе шрушек и получающих зарплату больше 1800, выгляди г так:

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

Р.

>1800

игрушки

Результатом запроса является таблица вида:

ЕМР

ФИО

Григорьев А.Н.

Томилов А.Н.

В операциях сравнения можно использовать и элементы примера.

Пример 6. Сравнения с элементами примера.

Ниже приведен вид шаблона запроса выборки имен и зарплат сотрудни­ков, получающих больше, чем Левин II.Г. По-другому запрос можно сформу­лировать так: «Пусть Левин П.Г. получает зарплату в количестве s. Найти всех сотрудников, получающих больше, чем s, и вывести их зарплаты». Порядок с грок в шаблоне несущественен.

ЕМР

ФИО

ЗАРПЛАТА

Р.

Р.>£

Левин П.Г.

£

Сотрудников, получающих больше Левина П.Г., в таблице ЕМР не ока­залось (вероятно, таковым является Петров А.С., но из таблицы ЕМР нам этого не узнать). В подобных случаях результирующая таблица оказыва­ется пустой:

ЕМР

ФИО

ЗАРПЛАТА

Условия в запро< е могут задавал ься по одному или по нескольким столб­цам. При этом происходит объединение отдельных условий по схеме логи­ческого И (AND).

Пример 7. Объединение условий.

Для формулировки запроса выборки имен и зарплат служащих, получа­ющих больше Левина П.Г. и работающих в отделе игрушек, достаточно в предыдущую запросную форму в первую строку столбца ОТДЕЛ встави гь слово «игрушки».

Запрос вида: «11айти имена и зарп гаты служащих, получающих больше, чем Ьелкин Б.Н., и работающих в отделе, продающем ручки», выглядит следую­щим образом:

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

Р.

Р.>£

department

Белкин Б.Н.

£

SALES

ОТДЕЛ

ТОВАР

department

ручка

Результатом выполнения этого запроса будет таблица вида:

ЕМР

ФИО

ЗАРПЛАТА

Левин П.Г.

2200

Семин С.В.

2200

Здесь элемент примера department связывает две исходные таблицы по полю ОТДЕЛ, а элемент примера s используется для связи условий выбора в рамках одной исходной таблицы ЕМР.

Пример 8. Запрос, в шаблоне которого имеются две связи.

Пусть необходимо найти всех служащих, получающих больше своих ру­ководителей. Этот запрос с помощью элементов примеров можно сформули­ровать так: «Вывести всех служащих, чьи руководители являются head и кто

получает больше, чем s, где s — зарплата head». Шаблон соответствующего запроса имеет следующий вид:

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

Р.

head

hgad

£

Здесь элемент head используемся д ля связи руководите ш в первой строке шаб лона и имени из второй строки, а элемент s применяйся дпя сравнения зарн чат. Для нашего примера результирующая таблица окажется такой:

ЕМР

ФИО

Гофман В.Э.

В качестве условия выбора записей из таблиц можно использовать опера- ' цию отрицания.

Пример 9. Отбор с операцией отрицания.

Пусгь необходимо вывести все отд< ■ лы, продающие: товары, не иск тавдяемые ком­панией Pencrart. Этот запрос можно ги рефразировать: «Вывести назван] [я отделов, продающих товары t, такие, что компания Pencralt не поставляет товары t».

SALES

ОТДЕЛ

ТОВАР

Р.

- I

SUPPLY

ТОВАР

ПОСТАВЩИК

-.1

Pencraft

О гветная таЬлица для сформулированного запроса имеет вид-

SALES

ОТДЕЛ

хозтовары

косметика

игрушки

В случаях, когда условия отбора записей для выборки представ.^ют большие выражения, к< <торые неудобно или трудно задать в шаблоне, можно использовать блок условий Он по виду напоминает пустой шаблон с одним полем и именем CONDITIONS. Блок условий предназначен для записи логических выражений.

Записанные в одном шаблоне логические выражения, в общем случае, мо­гут включать в себя операции логического умножения (операция AND) и логического сложения (операция OR).

г

Пример 10. Использование блока условий.

Шаблон запроса вывода фамилий сотрудников, чья зарплата составляет от 2000 до 2500, но не равна 2300, будет выглядеть так:

ЕМР

ФИО

ЗАРПЛАТА

P. Jon

>2000

Jon

<2500

Jon

,2300

Используя блок условий с явным заданием операции AND (символ &), этот же запрос можно сформулировать проще:

ЕМР

ФИО

ЗАРПЛАТА

Р.

£

CONDITIONS £_= (>2000 & <2500 &. ,2300)

Шаблон запроса вывода фамилий сотрудников, чья зарплата составляет 2000,2300 или 2600, можно сформирован ь так:

ЕМР

ФИО

ЗАРПЛАТА

P. Jon

2000

Р. Мак

2300

Р Nik

2600

В каждой из строк шаблона используются различные элементы примера, и по­этому условия действуют независимо. О помощью блока условий, в котором опера­ция OR (символ |) задана явно, этот же запрос будет выглядеть бо лее наг., одно-

ЕМР

ФИО

ЗАРПЛАТА

Р.

£

CONDITIONS £_= (2000 | 2300 | 2600)

При записи логических выраже ний на языке QBE могут применяться встроенные функции, такие как: CNT. (счетчик или количество), SI JM. (сум­ма), AVO. (среднее), М IN. (минимум), МАХ. (максимум), UN (уникальный) и ALL. (все значения, в том числе повторяющиеся). Первые пять из них явля ются статистическими, а последние две определяют характер выборки: вклю­чать или не включать в выборку повторяющиеся значения.

Функцию UN. можно присоединять к функциям CNT., SI 'М. и AVG.. Так, за­пись CNT.UN означает количество только рая мчающихся значений. В противо­положность этому, запись CNT.ALL будет означать количестве» всех значений. Очевидно, функции MAX.UN. и MAX.ALL. дадут одинаковый результат.

Пример 11. Использование функций.

Пусть требуется вывести названия отделов, в которых работает более двух сотрудников. Этот запрос можно разделить натри операции: арупиировать сотрудников по отделам, подсчитать число сот рудников в каждом из от делов и отобрать отделы, в которых работае г более двух сотрудников.

ЕМР

ФИО

ОТДЕЛ

ALL.RnDlOvee

P. Tov

CONDITIONS CNT.ALL Fmplovee > 2

Конструкция Toy означает операцию группипования (group-by), фун­кция ALL.employee формирует множество (точнее мультимножество, так как допускает дублирования) всех имен по каждому из отделов, а запись C.N Г.ALL Employee > 2 обеспечивает проверку логического условия. Здесь встретилась новая операция формирования группы, которая запи­сывается с помощью выделенного жирным шрифтом элемента примера (ь оригинале — двойное подчеркивание элемента примера).

Результирующая таблица имеет вид:

ЕМР

ОТДЕЛ

игрушки

косметика

Другой пример. Вывести названия отделов, в которых продаются только товары зеленого цвета

SALES

ОТДЕЛ

ТОВАР

P. Tov

ALL.jnk

TYPE

ТОВАР

ЦВЕТ

ALL.|nk

зеленый

Ответная таблица для данного запроса будет пустой.

Вычисления в запросах

С помощью запросов можно выбирать данные из таблиц и производить вычис пения. Еид зычисления задается с помо щью выражения в шаблоне. В выражениях, помимо обычных арифметических операций (+, -,*,/) и скобок, могу г использоваться встроенные функции: AVG., CNT., MAX., MIN. и SUM..

Примеры 12. Шаблоны с вычислениями.

Пусть имеется таблица ЕМР1 с полями имени (ФИО), размером зарпла­ты (ЗА PIШАТА) и размером пр< миальных (ПРЕМИЯ). Необходимо по каж­дому из сотрудников вывести имя и общую сумму зарплаты и премиа тьных. Для этого сформируем шаблон новой таблицы OUTPUT (заполнив строку имени таблицы и имен ее полей) и укажем в ней вид вычислений. Свяжем этот шаблон с шаблоном запроса к таблице ЕМР1.

OUTPUT

ФИО

СУММА

P. Employee

P. (sl+s2)

ЕМР1

ФИО

ЗАРПЛАТА

ПРЕМИЯ

ErnDlovee

Si

£2

Поскольку операция суммирования выполняется по каждой строке исход­ной таблицы, такой тип вычислений можно назвать горизонтагъным. Встро­енные функции оперируют группами записей, поэтому можно считать, что они выполняют 6i ртикалъные еычисм ния.

Для подсчета общего числа сотрудников следует составить такой запрос

ЕМР1

ФИО

ОТДЕЛ

P.CNT ALL. Em

Элемент примера Em здесь можно опустить.

Если требуется подсчитать число сотрудников в отделе игрушек, следует подготовить шаблон запроса вида:

ЕМР1

ФИО

ОТДЕЛ

Р .CNT .ALL. Em

игрушки

Чтобы подсчитать число сотрудников в каждом из отделов (с выводом на­званий отделов), подготовим шаблон запроса гида:

ЕМР1

ФИО

ОТДЕЛ

Р .CNT ALL. Em

P. Рер

В атом случае получим следующий результат:

ЕМР1

ФИО

ОТДЕЛ

2

хозтовары

3

игрушки

3

косметика

2

канцтовары

В шаблоне запроса мы применили операцию группирования (см. 11ример 11).

Операции вставки, удаления и модификации

В отличие от рассмотренных операций, операции вставки, удаления и моди­фикации приводят к изменению исходной таблицы. Вил операгии (вставка i., удаление — D., модификация — IJ.) записывается в шаблоне под именем таб лицы, а константы и условные выражения указываются по тем же правилам, что и в оп( рациях выборки.

Примеры 13. Операции вставки, удаления, модификации.

Для вставки в таблицу ЕМ Р нового сотрудника отдела игрушек с фамили­ей Деревянко I] В., зарплатой 2000 и руководителем Белкичым Б Н. нужно сформировать шаблон вида:

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

I.

Депевянко Н.В.

2000

Белкин Б.Н

игрушки

Пусть необходимо удалиль всю информацию о сотрудниках отдела игру­шек. Шаблон соотвеп гвующего запроса будет выглядеть так

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

01 ДЕЛ

D

игрушки

Для модификации некоторого значения отдельного поля, например раз мера зарплаты сотрудника Белкина Б.11.,, юстаточнп сформировать следую­щий шаблон

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

и.

Белкин Е Н.

2100

Пустое поле означает, что оно не подлежит изменению. Если требуется изменить некоторое значение на «пустое», используется ключевое сло.ю NULL.

Чтобы повысить зарплату сотрудникам отдела игрушек на 10%, можно сформировать шаблон запроса на модификацию следующего вида.

ЕМР

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

и.

1.1*£l

Si

игрушки

Реализация этого запроса происходит г два этапа: сначала выбирают* я все записи со значением «игрушки» в поле ОТДЕЛ, а затем происходит измене­ние поля ЗАРПЛАТА отозванных записей на новое значение,

Характеристика языков QBE современных СУБД

Основные отличия языков QBE современных СУБД от языка, предложен­ного Злуффом М.М., как правило, сводятся к незначительным изменениям в интерпретации отдельных реляционных операций, введению дополнитель­ных операции и изменению формы представления языка.

Например, в системе Paradox for Windows вместо операции печати Р. при­менен метод отметки выбираемых в запросной форме (шаблоне) полей. Для этого в начале каждого из полей запросной формы распо игаются флажки для выбора поля. Отмечгя поля, пользователь может у казать последователь­ность сортировки в ответной таблице. Для связывания нескольких запрос­ных форм в один многотабличный запрос, а также в логических выражениях условий отбора завис ей применяются э гементпы примера.

11аглядными являются запросные формы в Microsoft Access. Диалоговое окно (рис. 3.9) при поди гговке запросных форм состоит из двух частей: в верх­ней части распо [агается модель взаимосвязи исходных таблиц, а в нижней — остальная информация о запросе по каждому из полей (необходимость выво­да значений, вид сортировки, условие отбора и т. д.).

Подготовка шаблона запроса выполняется пользователем с помощью мыши. Так. связывание таблиц в запр< ice производите я не элементами при­меров, а «буксировкой» поля одной таблицы к полю другой таблицы. Если таблицы имели связь между собой, то система автоматически связывает все находящиеся ь запросной форме таблицы. При этом каждая из связей поме­чается в соответствии с ее типом (на рис. 3.9 между таблицами Поставщики и Товары по полю КодПоетавщшса образована связь вида 1:М).

Анализ современных СУБД позво. гяет предположить следующие направ­ления развития языка QBE.

  • Повышение наглядности и удобства.

  • Появление средств, соответствующих новым возможностям СУБД, на пример, формулировка неточных или нечетких запросов, манипулиро­вание большими объемами данных.

  • Использование новых типов данных (графических, аудио-, видео- и др ).

Файл Правка Вид Вставка Запрос Сервис А 5»!

■Н ilfrMfSTZI

О BUI ы

КодТовара

Марка

Щ Борей - [exam I : запрос на выборку]

КодПост пвщика КодТипа

Единиц^. 1Jt- ,it q

W

k L>

■'■ 4

yj

Выражение! [Toe

I и ir - .к.

Поста у :и

Поле Имя таблицы Сортировка: Вывод на экран. Условие отбора,

Готово

Рис. 3.9. Вид запросной формы в Microsoft Access

  • Применение в б тижайшем будущем ограниченного естественного языка формулиповки лапросов.

  • В более отдаленной перспективе использование речевого ввода запросов.

При нципнальные возможно» ти для перехода к естественному языку обще­ния и средствам речевого ввода есть уже сегодня. Это можно сделать, например, в виде над< тройки над сущес гвующими СУБД при использовании < ловар< й со­ответствия терминов ограниченно] о естественного языка и названий таблиц БД, полей таблиц, операций над данными и другими элементами QBE.

3.9. Структурированный язык запросов SQL

Структурированный явык запросов SQL основан на реляционном исчисле­нии с переменнымv кортежами Язык имеет несколько ст андартов, наиболее рас- поостраненными из которых "вляются SQL-89 и SQL-92 (подраздел 9.3 Y

Общая характеристика языка

Язык SQL предназначен для выполнения операций над таблицами (созда­ние, удаление, изменение структуры) и над данными таблиц (выборка, изме­нение, добавление и удаление), а также некоторых сопутстьующих операций. SQL является нспроцебурным языком и не содержит операторов управления, организации подпрограмм, ввода- вывода и т. п. В связи с этим SQL автоном­но не используется, обычно он погружен в с реду встроенного языка програм­мирования СУБД (например, FoxPro СУБД Visual FoxPro, Object PAL СУБД Paradox, Visual Basic for Applications СУБД Access).

В современных СУБД с интерактивным интерфейсом можно соз давать зап­росы, используя другие средства, например QBE. Однако применение SQL зачастую позволяет повысить эффективность обраб >тки данных в базе. На­пример, при подготовке запроса в среде Access можно перейти из окна Конст­руктора запросов (формулировки запроса по образцу на языке QBE) в окно с эквивалентным оператором SQL. Под! отовку нового запроса путем редакти­рования уже имеющегося в ряде случае проще выполнить путем изменения оператора SQL. В различных СУБД состав операторов SQL может несколько отличаться.

Язык SQL не обладает функциями полноценного языка разработки, а ори­ентирован на доступ к дан «ым, поэтому его вк лючают в состав средств разра­ботки программ. В этом случае его называют встроенным SQL. Стандарт язы­ка SOL поддерживают современные реализации следующих языков про] раммирования: PL/1, Ada, С, COBOL, Fortran, MUMPS и Pascal.

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

Различают два основных метода использования встроенного SOL: стати­ческий и динамический.

При статическо и использовани" языка (статический SQL) в тексте про­граммы имеются вызовы функций языка SQL, которые жес гко включаются е выполняемый модуль после компиляции. Изменения в ьызываемых функ­циях могут бы гь на уровне отдельных параметров вызовов с помощью пере­менных языка программирования.

При бинаиича ком использовании языка (динамический SQL) предпола­гается динамическое го (строение вызовов SOI ,-функцш; и интерпретация этих вызовор. например, обращение к данным удаленной базы, в ходе выполнения программы. Динамический метод обычно применяется в случаях. KOi да в при­ложении заранее неизвестен вид SQL-вызова и он строится в диалоге с пользо­вателем.

Основным назначением языка SOL (как и других языков для работ ы с ба­зами данных) является подготовка и выполнение запросов. В результате вы­борки данных из одной или нескольких таблиц может быть получено множе­ство записей, называемое представлением.

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

Для удобства работы с представлениями в язык SQI, введено понятие кур­сора Курсор представ, дает собой (воеобра (ный указатель, используемый для перемещения по наборам записей при их обработке.

С )нисание и использование курсора в языке SQL выполняется следующим обра зом. В описательной части гфограм, ш выпо. [няют связывание переменной типа кур­сор (CURS( )R) с оператором SQL (обычно с оператором SELECT). В выполняемой части программы производится открытие курсора (OPEN <имя курсора^), переме­щение курсора по запи' ям (FETCH <имя курсора>...), сопровождаемое соответству­ющей обработкой, и, наконс ц. закрытие курсора (CLOSE <имя к\ рсора >).

Основные операторы языка

Опишем минимальное подмножество языка SQL, опираясь на его реали­зацию в стандартном интерфейсе ODBC (Open Database Connectivity — со вместимость открытых баз данных) фирмы Microsoft.

Операторы языка SOL можно уел очно разделить на два подъязыка: язык определения данных (Data Definition Language — DDL) и язык манипулиро­вания данными (Data Manipulation Language — DML). Основные операторы языка SQL пред* тавлены в табл. 3.3.

Рассмотрим формат и основные возможности важнейших операторов, за исклю­чением специфическихопер поров, а'меченныхвгаблицесимви/юм «^.Несуществен­ные one] 1зцды и э гементы синтаксиса (например, принято* во многих системах 1фо- г юммирования правию ставить «;» в конце оператора) будем опускать.

1. Оператор создания таблицы имеет формат вида:

CREATE TABLE <имя таблицы-'

(<имя столбца> <тип данных> |NOT NULL] [,<имя столбца> <гип данных> [NOT NULL]]... )

Обязательными операндами оператора являются имя создаваемой табли­цы и имя хотя бы одного столбца (поля) с указанием типа данных, хранимых в этом столбце.

При создании таблицы для отдельных полей могут указываться некоторые допо шительные прави. ia контроля вводимых в них значений Конструкция NOT NIJ LL (не пустое) служит именно таким целям и для столбца таблицы означает, ч го в этом столбце до лжно быть опреде. гено значение.

Таблица 3.3

Операторы языка SQL

Вид

Название

Назначение

DDL

CREATE TABLE DROP TABLE ALTER TABLE CREATE INDEX DROP INDEX CREATE VIEW DROP VIEW Gl IAND* REVOKE*

создание таблицы удаление таблицы изменение структуры таблицы I юздание индекса удаление индекса создание представления удаление представления назначение привилегий уда пение привилегий

DML

SELECT UPDATE INSERT DELETE

выборка записей изменение записей вставка новых записей удаление записеи

В общем случае в разных СУБД могут использоваться различные типы данных (см. подраздел 2.7). В интерфейсе ODBC поддерживаются свои стандартные типы данных, например, символьные (SQL CHAR, SQL VARCHAR. SQL_ LONGVARCHAR) и др. При работе с БД некоторой СУБД посредством интерфейса ODBC выполняется автоматическое преоб­разование стандартных типов данных, поддерживаемых интерфейсом, в типы данных источников и обратно. При необходимости обмен данными между программой и ис гочником данных может вестись без преобразования — во внутреннем формате данных источника.

Пример 1. Создание таблицы.

Пусть требуется создать таблиц}' goods описания товаров, имеющую поля type — вид товара, сошр id — идентификатор компании производителя, пате название товара и price — цена товара. Оператор определения таблицы может иметь следующий вид:

CREATE TABLE goods (type SQL CH \R(8) NOT NULL,

comp id SQL CII AR( 10) NOT NIJI ,L, name SQL_VARCHAR(20), price SQLDECIM AL(8,2)).

2. Оператор изменении структуры таблицы имеет формат вида

ALTER TABLE <имя таблицы>

( {ADD, MODIFY, DROP} <имя столбца> [<тип данных>| [NOT NULL]

[,{ADD, MODIFY, DROP} <имя столбца> [<тип цанных>] [NOT NULL]]...)

4 Зак 4/4

Изменение структуры таблицы может оос гоять в добав. [ении (ADD), изме­нении (MODIFY) или удалении (DROP) одного или нескольких столбцов табли­цы. Правилазаписи оператора ALTER TABLE такие же, как и оператора CREATE TABLE. 11ри удалении с голбца указывать <тип данных^ не нужно.

Пример 2. Добавление поля таблицы.

Пусть в созданной ранее таблице goods необходимо добавить поле number, отводимое для хранения величины запаса товара. Для этого следует записать оператор вида:

ALTER TABLE goods (ADD number SQLINTEGER).

  1. Оператор удаления таблицы имеет формат вида:

DROP TABLE <имя таблицы>

Оператор позволяет удалит ь имеющуюся таблицу. Например, для удале­ния таб шцы с именем items достаточно записать оператор вида-

DROP TABLE items.

  1. Оператор создания индекса имеет формат вида'

CREATE [UNIQUE] INDEX <имя индокса> ON <имя таблицы> (<имя столбца-^ [ ASC | DESC ] [,<имя столбца> [ ASC | DESC ]... )

Оператор позволяет создать индекс для одноп > или нескольких столбцов за­данной таблицы с целью ускорения выполнение запросных и поисковых опера­ций с таблицей. Дли одоюй таблицы можно создать несколько индексов.

Задав необязател1лую опцию UNIQUE, можно обеог^чить уникально* ть значе­ний во всех сазанных i операторе столбцах. По существу, создание индекса с ука­занием признака UNIQI ТЕ означает опреде ление ключа в созданной ранее таблице.

При создании индекса можно задать порядок автоматической сортировки значений в столбцах - в порядке возрастания ASC (по умолчанию), или в порядке убывания DESC. Для разных столбцов можн > задавать различный порядок сортировки.

Пример 3. Создание индекса.

Пусть для таблицы ЕМР, имеющей поля: NAME (имя), SAL (зарплата), MCR (руководитель) и DEPT (отдел), нужно созда гь индекс mam indx для сортировки имен в алфавитном порядке и убыванию размеров зарплаты. Оператор создания индекса может иметь вид:

CREATE INDEX main_indx ()N emp (name, sal DESC).

  1. Оператор удаления индекса имеет формат вида:

DROP INDEX <имя индекса: •

Этот оператор позво. гяет удалять созданный ранее индекс с соответствую­щим именем. Так, например, для уничтожения индекса mainindx к таблице emp достаточно записать оператор DROP INDEX main indx.

  1. Оператор создания представления имеет формат вида:

CREATE VIEW <имя представления>

[(<имя столбца> [,<имя столбца> J... )] AS <оператор SELF.CT>

Данный оператор позволяет создать представление. Если имена столбцов в поедставлении не указываются, то будут использоваться имена столбцов из „апроса, описываемого соответствующим оператором SELECT.

Пример 4. Создание представления.

Пусть имеется таблица compames описания производителей товаров с полями, comp id (идентификатор компании), сотр пате (название организации), comp address (адрес) и phone (телефон), а такж^ таблица goods производимых то­варов с полями: type (вит товара), comp id (идентификатор ki »мпании), name (на­звание товара) и price (цена товара). Таблицы связаны между собой по полю comp id. Требуется создать представление герг с крат кой информацией о товарах и их производителях: вид товара, название производителя и цена товара. Опера­тор определения представ 1ения может иметь следующий вид:

CREATE VIEW repr

AS

SELECT

goods tvDe, compar "es.comp_name, goods.price FROM

goods, companies WHERE

goods.comp id = companies.comp id

  1. Оператор удаления представления имеет формат ви да:

DROP VIEW <имя представления>

Операто] < позволяет удалить созданное ранее представление. Заметим, что при удалении представления таблицы, участвующие в запросе, удалению не подлежат. Удаление представления герг производится оператором вида:

DROP VIEW герг.

  1. Оператор выборки записей имеет формат вида:

SELECT [ALL | DISTINCT] <список данных > FROM <список таблиц>

[WHERE <условие выборки>|

[GROUP BY <имя столбца> [,<имя столбца>]... ]

[IIAViNG <условие пииска>]

[ORDER BY «^спецификация- • [,Спецификация »]...]

Это наиболее важный оператор из всех операторов SQL. Функциональ­ные возможности его огромны. Рассмотрим основные из них.

Оператор SEI,ЕСТ позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения опера- тира является отгетная таблица, которая может иметь (ALL), или не иметь (DISTINCT) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. В от боре данных уча­ствуют записи одной или нес.сольких таблиц, перечисленных в списке опе­ранда FROM.

Список данных может содержа гь имена столбцов, участвующих в за­просе, а также выражения над столбцами. В простейшем случае в выра­жениях можно записывать имена столбцов, знаки арифметических one раций (+, — ,*,/), константы и круглые скобки. Если в списке данных записано выражение, то наряду с выборкой данных выполняются вычис­ления, результаты которого попадают в новый (создаваемый) столбец ответной таблицы.

При использовании в спи» ках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют кон­струкцию вида: <имя таблицы>.<имя столбца>.

Операнд WHERE задает з'словия, которым должны удовлетворять запи­си в результирующей таблице. Выражение <условие выборки> является логическим. Его элементами могут быть имена столбцов, операции сравне­ния, арифметические операции, логические связки (И, ИЛИ, НЕТ), скоб­ки, специальные функции LI КЕ, NULL, IN и т. д.

Операнд GROUP BY позволяет выделять в результирующем множестве записей группы. 1руппой являются записи с совпадающими значениями в столбцах, перечисленных за ключевыми словами GROUP BY. Выделение групп требуется для использования в логических выражениях операндов WH ERE и HAVING, а также для выполнения операций (вычислений) над группами.

В логических и арифметических выра кениях можно использоват ь следую­щие групповые операции (функции): AVG (среднее значение в группе), МАХ (максимальное значение в группе), MIN (минимальное значение в группе), SU М (сумма значений в группе), С( >UNT (число значений в труппе).

Операнд HAVINC действует совместно с операндом GROUP BY и ис­пользуется для дополнительной селекции записей во время определения групп. Правила записи <условия поиска> аналогичны правилам формиро­вания <условия выборки> операнда WHERE.

Операнд ORDER BY задает порядок сортировки результирующего множе­ства. Обычно каждая <спецификация> аналогична соответствующей конст­рукции оператора CREATE INDEX и представляет собой пару вида: • :имя стол- бца> [ ASC | DESC ].

Замечание.

Опера гор SELECT может иметь и другие более сложные синтаксичес­кие конструкции, которые мы подробно рассматривать не будем, а пояс­ним их смысл.

Одной из таких конструкций, например, являются так называемые под­запросы. Они позволяют формулировать вложенные запросы, когда резуль­таты одного оператора SELECT используются в логическом выражении ус­ловия выборки операнда WHERE другою оператора SELECT.

Вторым примером бочее сложной формы оператора SELECT яв. шется опе­ратор, в котором отобранные записи в дальнейшем предполагается модифи­цировать (конструкция FOR UPDATE OF). СУБД после выполнения такого оператора обычно блокирует (защищает) отобранные записи от модифика­ции их другими пользователями.

Еще один случай специфического использования оператора SELECT — выполнение объединений результирующих таблиц при выполнении несколь­ких операторов SELECT (операнд UNION).

Пример 5. Выбор записей.

Для таблицы ЕМР, имеющей поля: NAME (имя), SAL (зарплата), MGR (руководитель) и DEPT (отдел), требуется вывести имена сотрудников и раз­мер их зарплаты, увеличенный на 100 единиц. Оператор выбора можно запи­сать следующим образом:

SELECT name, sal+100 FROM emp.

Пример 6. Выбор с условием.

Вывести названия таких отделов таблицы ЕМР. в которых в данный мо­мент отсутствуют руководители. Оператор SELECT для этого запроса мож­но записать так:

SELECT dept FROM emp WHERE mgr isNU LL.

Пример 7. Выбор с группировянием.

Пусть требуется найти минимальную и максимальную зарплаты для каждого и? отделов (по таб чице ЕМ Р). Оператор SELECT д чя этого запроса имеет вид:

SELECT dept, MIN(sal), MAX(sal) FROM emp GROUP BY dept.

  1. Оператор изменения записей имеет формат вида.

UPDATE <имя таблицы>

SET <имя столбца> = {<выражение> , NULL} [, SET <имя столбца> = {--выражение>, NULL}... ] [WHERE <условие>]

Выполнение оператора UPDATE состоит ь изменении значений в опреде­ленных операндом SET столбцах таблицы для тех записей, которые удовлет­воряют условию, заданному операндом WHERE.

Новые значения полей в записях могут быть пустыми (NULL), либо вы­числяться в соответствии с арифметическим выражением. Правила запи­си арифметических и логических выражений аналогичны соответствую­щим правилам оператора SEI ЕСТ.

Пример 8. Изменение записей.

Пусть необходимо уве личить на 500 единиц зарп. iary тем служащим, ко­торые получают не 6o7iee 6000 (по таблице ЕМР). Запрос сформулирован­ный с помощью оператора SELECT, м< жет выглядеть так:

UPDATEemp SET sal = 6500 WHERE sal <- 6000.

  1. Оператор вставки новых записей имеет формат ы двух видов-

INSERT INTO <имя таблицы> [(<список столбцов>)] VALUES (<список значений>)

и

INSERT INTO <имя габлицы> [(<список столбцов>)] Предложение SELECT>

В первом формате оператор iNSERT предназначен для ввода новых записей с заданными значениями в столбцах. Порядок перечне гения имен < толбцов должен слответс гвовать пооядку значений, перечисленных в списке операнда VALUES. Если <список сголбцов> опущен, то в <списке значений> должны быть перечис­лены все значения в порядке столбцов структуры таб ыцы.

Ео втором формате оператор INSERT предназначен для ввода в заданную таблицу новых строк, отобранных из другой таблицы с помощью предложе­ния SELECT.

Пример 9. Ввод записей.

Ввести в таблицу ЕМР запись о новом сотруднике. Для этого можно запи­сать такой оператор вида:

INSERT INTO emp

VALUES («Ivanov», 7500, «Lee>>, «cosmetics»).

  1. Оператор удаления записей имеет формат вида:

DELETE FROM <имя таблицы> IWIIERE <условие>]

Результатом выполнения оператора DELETE является удаление из ука­занной таблицы строк, которые удовлетворяют условию, определенному опе­рандом WHERE. Если необязательный операнд WHERE опущен, то есть ус­ловие отбора удаляемых записей отсутствует, удалению подлежат Rce записи таблицы.

Пример 10. Удаление записей.

В связи с ликвидацией отдела игрушек (toy), требуется удалить из таб­лицы ЕМР всех сотрудников этого отдела. Оператор DELETE для этой за­дачи будет выглядеть так:

DELETE FROM emp

WHERE dept = «toy».

В заключение отметим, что, по словам Дейта, язык SQL является гибри­дом реляционной ал1 ебры и реляционного исчисления. В нем имеются эле­менты алгебры (оператор объединения UNION) и исчисления (квантор су­ществования EXISTS). Кроме того, язык SQL обладает реляционной полнотой.

Контрольные вопросы и задания

II Дайте определение ре шционной модели и наз< 1вите сос гавляющие ее элементы.

    1. Охарактеризуйте составные элементы реляционной модели данных и формы их преде гавления.

    2. Приведите математическое описание понятия отношения.

    3. Что такс домен отношения?

    4. Дайте определение схемы отношения.

fi. Что представляет собой первичный ключ отношения, для чего он за­дается?

      1. Назовите условия, при соблюдении которых таб. шцу можно считать о гношением.

      2. Что такое индекс, для чего используется индексирование?

      3. Изобразите схему одноуровневой индексации и дайте ей характеристику.

Ю. Изобразите схему двухуровневой индексации и дайте ей характеристику.

И. Что такое вторичный индекс, в чем его отличие от первичного индекса?

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

        2. Опишите действие механизм? контроля целостности при манипули­ровании данными в таблицах.

        3. Дайте пбтцую характеристику теоретических языков запросов.

        4. Назовите операции реляционной алгебры, предложенной Коддом, и приведите i рафическую интерпретацию для операций пересечения и произведения.

        5. Охарактеризуйте общий и частные случаи операции соединения.

        6. Назовите правила записи выражений реляционной алгебры.

        7. Назовите и охарактеризуйте дополнительные операции реляционной алгебры, предложенные Дейтом.

        8. Охарактеризуйте вариалты реляционного исчисления.

        9. Запишите выражение реляционного исчисления на кортежах, со- ол ветствующее запросу: «Получить имена поставщиков, которые поставляют все детали».

        10. Охарактеризуйте язык QBE.

        11. Дайте опеределение поня гия элемента примера и приведите пример его использования в шаблоне запроса на выборку.

23.11азовите предполагаемые направления совершенствован! [я языка QBE в современных СУБД.

          1. Охарактеризуйте язык SQL.

          2. Покажите, что с помощью выражения (( S [П#] MINUS ( SP WI [ERE Д# = 'P2' ) [П#] ) JOIN S ) [Имя] реляционной алгебры можно полу чить имена поставщиков, которые не поставляют деталь Р2 (рис. 3.7)

          3. Сформулируйте запрос, в котором требуется определить названия фирм, которые поставляют товары, отличные от товаров, предлагаемых фирмой Pencraft (подраздел 3.8).

Литература

1. Дейт К, Дж. Введение в сисгемы баз данных.: Пер. с англ. 6-е изд. К.: Диалек тика, 1998.

2 ЗамулинА. В. Системы программирования бат данных и знаний Новосибирск.: Наука. Сиб. отд-ние, 1990.

            1. Мартин Дж. Органи 1ация баз данных в вычислите льных системах. Пер. с англ. М.: Мир, 1980.

            2. Романов Б. А., Кушниренко 1 С. dBase TV. Назначение, функции, применение. М.: Радио и связь, 1991.

            3. Ульман Дж. Основы систем баз данных. М.: Финансы и статистика, 1983.

4. Информационные системы в сетях

Создание и применение информационных систем r сетях компьютеров, с одной стороны, дает заметные преимущества, с другой стороны, вызывает ряд проблем. В частности, возникают проб. 1емы администрирования и зан'илы ин­формации. В разделе рассматриваются основные понятия, связанные с сетями компьютеров и информационными системами в них, варианты архитектуры клиент-сервер, управление дачными и доступ к ним, особ» ннос-и информаци­онных систем в локальных сетях, Интернете и интрачете.

4.1. Основные понятия

Основные понятия сетей ЭВМ раскроем, рассматривая виды и состав се­тей, используемое программное и аппаратное обеспечение, а также методы упоавления ресурсами.

Виды и состав сетей

Сетью называется совокупность компьютеров или рабочих станций (PC), объединенных средствами передачи данных. Средства передачи данных, в свою очередь, в общем случае могут состоять из следующих элементов: связных ком­пьютеров, канатов счязи (спутниковых, телефонных, цифровых, волоконно-оп­тических, радио- и других), коммутирующей аппаратуры, ретранстяторов, раз­личного рода преобразователей сигналов и других элементов и устройств.

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

В зависимости от удаленности компьютеров сети условно разделяют на локальные и глобальные.

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

Примерим глобальной сети с 1ужит одна из первых в мире сеть ARPANET а такжо сеть Интернет.

В локальных вычислительных сетях (J1 ВС) компьютеры расположены на расстоянии до нескольких километров и обычно соединены при помощи скоростных линий связи со скоростью обмена от 1 до 10 и более Мбитов/с (не исключае тся соединение компьн /геров и с помощью низкоскоростных телефон­ных линий). ЛВС обычно развертываются в рамках некоторой организации (корпорации, учреждения). П< ©тому их иногда называют корпоративными си­стемами или сетями. Компьютеры при этом, как правило, находятся в преде­лах одного помещения, здания или соседних зданий.

В глоба льной сети основным видом взаимодействия между независимыми компьютерами является обмен сообщениями. Более интенсивный обмен ин­формацией происходит в лока льных сетях. В них, по существу, организовано управление аппарат но-программными ресурсами всех входящих в сеть компь­ютеров. Реализует эти функции сетевое ПО. Вкратце остановимся на программ­но-аппаратных ресурса* и методах управления ими в ЛВС.

Программное обеспечение ЛВС

Независимо от того, в какой сети работает некоторый компьютер, функ­ции установленного на нем npoi раммного обеспечения условно можно раз­делить на две I руппы: управление песупсами самого компьютера (в том числе и в интересах решения задач для других компьютеров) и управление обменом с другими компьютерами (сетевые функции).

Собственными ресурсами компьютера традиционно управляет ОС. Функции сетевого управления реализует сетевое ПО, которое может быть выполнено как в вице отлельных пакетов сетевых программ, так и виде с< тевой ОС (СОС).

При разработке сетевого ПО используется иерархический подход, пред­полагающий определение совокупности сравнительно независимых уровней и интерфейсов между ними. Это позво.ляет легко модифицировать ал] орит- мы программ произвольного уровня без существенного изменения других уровней. В общем случае допускается упрощение функций некоторого з'ров- ня или даже его полная ликвидация.

Для упорядочения разработки сетевого ПО и обеспечения возможности взаимодействия любых вычислительных систем, Междунаро тая Организа­ция по Стандартизации (Intei national Organization for Standardization — ISO) разработала Эталонную Модель взаимодействия открытых систем (Open Svsten. Interconnection Reference model — модель OSI).

Эталопная Модель опреде [яс, с тецующие семь функциональных уровней:

  • физический (physical layer);

  • канальный или управления линией (звеном) передачи (data link);

  • сетевой (network layer);

  • транспортный (transport layer);

•сеансовый (session layer);

  • представительный (presentation layer);

  • прик тадной или уровень приложений (application layer).

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

Аппаратные средства ЛВС

Основными аппаратными компонентами ЛВС являются: рабочие станции, серверы, интерфейсные платы и кабели.

Рабочие станцир (PC) — это, как правило, персональные ЭВМ. которые являются рабочими мес гами пользователей сети.

Иногда в PC, непосредственно подключенной к сетевому кабелю, могут отсутствовать накопители на магнитных дисках. 1акие PC называют бездис­ковыми рабочими станциями. Основным преимущсстсом бездисковых PC является низкая стоимость, а также высокая защищенность от несанкци< >ни- рованного проникновения в систему пользователей и компьютерных виру­сов. Недостаток бездисковой PC заключается в невозможности работать в автономном режиме (без подключения к серверу) и иметь собственные архи­вы данных и программ.

Сере"ры в ЛВС выполняют функции распределения сетевых оесурсов. Обычно его функции возлагают на достаточно мощный ПК, мини-ЭВМ, боль­шую ЭВМ или специальную ЭВМ-сервер. В одной сети может быть один или несколько серверов. Каждый из серверов может 6i ггь отдельным или совме­щенным с PC. В последнем случае только часть ресурсов сервера оказывает­ся общедоступной.

При наличии в ЛВС нес кольких серверов, каждый из них j правляст рабо­той подключенных к нему PC. Совокупность компьютеров сервера и относя­щихся к нему PC часто называют доменом. Иногда в одном домене находит­ся несколько серверов. Обычно > один из них является главным, а другие — выполняют роль резерва (на случай отказа главного сервера) или логическо­го расширения основного сервера.

Используемые сете вые адаптеры имеют три основные характеристики: тин шины компьютера, к которому они подключаются (ISA, EISA, Micro Channel и пр.), разрядность (8, 16, 32 64) и используемый метод доступа к сетевому каналу данных.

Существуют различные схемы объединения компьютеров в ЛВС. Клас­сическими считаются топологии «звезда», «кольцо» и «общая шина».

Наиболее широко используются следующие стандартизованные методы дос­тупа к сетевому каналу:

  • Ethernet, (поддерживает шинную топологию);

  • Arcnet (поддерживает звездную топологию);

  • Token-Ring (поддерживает кольцевую топологию).

Конфтурация соединения элементов в сеть (топология) вп многом опре­деляет такие важнейшие характеристики сети, как ее надежность, произво­дительность, стоимость, защищенность и т. д.

Одним из подходов к классификации топологий Л ВС является выделение двз'х основных классов топологий: широковещательных и после­довательных

В широковещательных конфигурациях каждый персональный компью­тер передает сигналы, которые могут быть восприняты остальными компью терами. К таким конфигурациям относятся топологии «общая шина», «дере­во», «звезда с пассивным центром». Сеть типа «звезда с пассивным центром» можно рассматривать как разновидность «дерева», имеющего корень с ответ­влением к каждому подключенному устройству.

В последовательных конфигурациях каждый физический подуровень передает информацию одному компьютеру. Примерам!, последовательных конфи] з'раций являются: произвольная (произвольное соединение компью­теров), иерархическая, «кольцо», «цепочка», «звезда с интеллектуальным центром», «снежинка*.

Для соединения компьютеров в Л ВС чаще всего используют коаксиаль­ный кабель (тонкий и толстый) Помимо коаксиального кабеля может при­меняться «вигая пара» и оптоволокно. В последнее время ведутся интен­сивные работы по разработке и внедрению беспроводных радиосетей. Известные системы на их основе, по сравнению с кабельными системами, пока значительно уступают по скорости передачи данных и дальности при­ема (сотни метров), но позволяют создавать мобильные распределенные системы.

К дополнительному оборудованию ЛВС относят источники бесперебой­ного питания, модемы, трагеиверы, повторители, а также различные разъе­мы (коннекторы, терминаторы).

Принципы управления

Существует два основных метода (принципа) управления в ЛВС: цент- ратизованное и децентра тизованное. В ц< •нтрсыизованныт сетях одна или несколько ПЭВМ являются центра льными, а остальные - рабочими стан­циями (PC).

»

Дентратьный узел сети, часто называемый компьютером-сервером (КС), может находиться на отдельном компьютере или совмещаться с PC В пер­вом случае говорят о выделенном КС, а во втором — о совмещенном КС.

Основное назначение КС — управление передачей данных в сети и хране­ние файлов, используемых многими PC. Исходя из этого, под КС обычно выделяют наиболее производительную и имеющую значительную память ПЭВМ. Кроме того, к КС обычно подключается дорогостоящее оборудова­ние (лазерные принтеры, факсы, модемы, сканеры и т. д.).

Существует множество сетевых ОС, реализующих централизованное управ­ление. Среди них Microsoft Windows NT Server, Novell NetWare (версии З.Х и 4.X), Microsoft Lan Manager, OS/2 Warp Server Advanced, VINES 6.0 и другие.

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

Сети с децентрализованным yi фавлением (одноранговые сети) не содержат КС. В них функции управления сетью в соответствии с некоторой дисциплиной поочередно передаются от одной PC к другой. Децентрализованное управле­ние, как правило, применяется в сетях со слабыми компьютерами и простей­шими обменами между ними на уровне файлов, а также без серьезного контро­ля прав доступа к ресурсам сети. Основные ресурсы всех PC обычно оказываются общедоступными, хотя система не всегда обеспечивает коррект­ное их совместное использование на прикладном уровне.

Наиболее распространенными программными продуктами, позволяющи­ми строить одноранговые сети, являются следующие программы и пакеты: Novell NetWare Lite, Windows for Workgroups, Windows 95/98, Artisoft LANtastic, LANsmart, Invisible Software NET-30 и другие.

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

Говоря о сетях, часто используют термины «сервер» и «клиент». Любое вза­имодействие в сети предполагает как минимум два элемента: потребляющий и предоставляющий ресурсы (сервис или услуги). Потребитель ресурсов на­зывается клиентом, а предоставляющий ресурсы компонент — сервером (см. раздел 1). Основными видами ресурсов являются следующие: аппаратные (целая ЭВМ, дисковый накопитель, устройство печати и т. д.), программные и информационные.

Если в качестве ресурса рассматривается вся ЭВМ, то говорят о компьюте­ре-клиенте и компьютере-сервере. Если подразумевается некоторый аппарат­ный ресурс, то используют такие термины как: диск-сервер (файловый сервер или файл-сервер), сервер печати. Типичными клиентами в сетях являются: ЭВМ, п« шьзователь или программа.

Возможно уточнение назначения комиьюте] >а при обрабо . ке информации. Тогда говорят о серверах сообщений (обпаботка поступающих сообщений), серверах БД (обработка запросов к БД), серверах приложений (выполнение приложений по. 1ьзователя) и т. д.

Иногда одним термином называют разные (аппарат ные, программные или аппаратно-программные) компоненты вычислительной системы. Так, серве­ром пе«ати может служит ь компьютер с подключенным к н°му принтером, прог] амма печат и или компьютер с программным обеспечением управления печатью.

4.2. Модели архитектуры клиент-сервер

При построении распределенных ИС, работающих с БД, широко исполь­зуется архитектура клиент-сервер. Ее основу составляют принципы органи­зации взаимодействия клиента и серв< ра при управ гении БД. Один из вари­антов архитектуры клиент-сервер рассмотрен в подра щеле 1.2.

Ч гобы охарактеризовать основные схемы взаимодействия процессов уп­равления БД, воспользуемся Эталонной моделью Архитектуры открытых систем OSI. Согласно этой модели, функция управ, [ения БД относится к при­кладному уровню.

Остановимся на двух самых верхних уровнях: прикладном и преистпивителъ- ном, которые в наибольшей степени: вляются предметом внимания со сторо­ны разработчика и пользователя. Остальные функции будем считать связны­ми функциями, необходимыми для реализации двух первых. При этом будем придерживаться широкого толкования термина СУБД, понимая под ним все программные системы, которые используют информацию из БД.

Как поддерживающая интерфейс с пользователем программа, СУБД, в общем случае, реализует следующие основные функции:

  • управ, гение данными, находящимися в базе;

  • обработки информации с помошью прикладных программ;

  • представление информации в удобном для пользователя виде.

Если систе ма размещается на одной ЭВМ, то все функции собраны в одной npoi рамме и вызываются по схеме, подобной рассмотренной в разделе 1.

При размещении СУБД в сети возможны различные варианты распределе­ния функций по узлам. В зависимости от числа узлов сеть, между которыми выполняется распределение функций СУ БД, можно выделить овухзвенные модели, трех т иные модели и т. д. Место разрыва функции соединяется ком­муникационными функциями (средой передачи информации в сети).

Двухзвенные модели распределения функций

Двухзвенные мидели соответствуют распределению функций С У БД меж ду двумя узла ми сети. Компьютер (узел сети), на ко гором обязательно при­сутствует функция управления данными, назовем компьютером-сервером. Компьютер, близкий к пользователю и обязательно занимающийся вопроса­ми представления информации, назовем компьютером-клиентов.

Наиболее типичными вариантами (рис. 4.1) разделения функций между компьютером сервером и компьютером-клиентом являются следующие:

  • рас пределеьное представ аение;

  • уда юнное представление;

  • распределенная функция;

  • удаленный дост уп к данным;

  • распределенная БД.

I 1

Компьютер-сервер ■