- •Базы данных
- •1. Введение в базы данных
- •1.1. Базы данных и информационные системы
- •1.2. Архигсюура информационной системы
- •1.3. Системы управления базами данных
- •1.4. Локальные информационные системы
- •1.5. Способы разработки и выполнения приложений
- •1.6. Схема обмена данными при работе с бд
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •Сотоудники
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Постреляционная модель
- •2.5. Многомерная модель
- •1996 1994 Петров Смирнов Яковлев
- •2.6. Объектно-ориентированная модель
- •2.7. Типы данных
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Индексирование
- •3.3. Связывание таблиц
- •3.4. Контроль целостности связей
- •3.5. Теоретические языки запросов
- •I аспределенное Удаленное Распределен- Удаленн! 1йдо- Распределен- предстаеление представление ная функция ступ к данным наяЬд
- •4.5. Информационные системы в Интернете и интранете
- •Часть 2. I Ъоектиросанн ? и использование бд
- •7. Средства автоматизации проектирования
- •7.1. Основные определения
- •7.8. Рекомендации по применению case-систем
- •9. Дополнительные вопросы применения баз данных
- •9.1. Программно-аппаратные платформы
- •9.2. Перспективы развития субд
- •9.3. Стандартизация баз данных
- •9.4. Характеристика технологии ado.Net
- •10.1. Общая характеристика
- •10.2. Новые возможности Microsoft Access 2002
- •10.3.Средства поддержки проектирования
- •10.4. Создание основных элементов бд
- •IQdbl mdb
- •Option Compare Database Public Function funl() beep End Function
- •10.5. Работа с гиперссылками
- •10.6. Использование языка sql
- •Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof
- •10.7. Защита баз данных
- •10.9. Обслуживание баз данный
- •10.10. Репликация баз данных
- •Реплицируемые объекты
- •Реплицируемые объекты
- •10.11. Работа с мультимедиа-данными
- •Тип объекта
- •Comic Chat Boom Microsoft Graph so Music Prop pry Page 2 1 Option f ropery Page21 Ры-ndox FableВидео-клип
- •10.12. Создание файлов приложений
- •10.13. Страницы доступа к данным
- •Краткая характеристика отличий сДд от форм и отчетом
- •10.14. Разработка проекта
- •Распределение атрибутов по вариантам
- •11.1. Пользовательский интерфейс
- •11.2. Характеристика проекта
- •11.3. Компиляция и выполнение проекта
- •11.4. Разработка приложения
- •11.5. Средства интегрированной среды разработки
- •Управление параметрами среды
- •11.6. Базы данных и средства работы с ними
- •Компоненты приложений для баз данных
- •11.7. Создание таблиц базы данных
- •11.8. Создание приложения bde
- •Значения свойств компонентов
- •11.9. Работа с отчетами
- •12. Субд Visual FoxPro 8.0
- •12.1. Общая характеристика
- •12.2. Новые возможности Visual FoxPro 8.0
- •12.3. Элементы проекта
- •12.4. Интерфейс Visual FoxPro
- •12.5. Средства автоматизации разработки
- •12.6. Создание баз данных
- •12.7. Таблицы и индексы
- •12.8. Организация межтабличных связей
- •12.9. Обеспечение ссылочной целостности
- •12.10. Создание запросов
- •Variables:
- •13. Microsoft sql Server 2000
- •13.1. Характеристика sql Server
- •13.2. Язык запросов Transact-sql
- •13.3. Системные базы данных и таблицы
- •13.4. Создание баз данных
- •13.5. Работа с таблицами
- •15.1. Принципы функционирования Web-приложений
- •15.2. Архитектура Web-приложений, публикующих бд
- •15.3. Обзор Web-серверов
- •15.4. Использование Personal Web-server
- •15.5. Использование Microsoft Internet Information Server
- •15.6. Использование Apache дляMicrosoft Windows 9х/2000
- •Вы видите это вместо ожидаемой страницы?
- •15.7. Варианты создания Web-узла
- •16. Интерфейсы программирования Web-приложений
- •16.1. Общий интерфейс взаимодействия cgi
- •18. Публикация бд средствами Microsoft Access
- •18.1. Характеристика вариантов публикации
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.
Пример 5. Деление отношения.
Пусть R1 — прос кция SP [П#,Д#], aR2 отношение с зато. ювкомД# и телом {Р2, Р4}, тогда резу штатом деления R1 на R2 будет отнпшент R < заголовком 11# и телом {S1, S4}.
RI
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. В реляционной алгебре должен быт ь определен приоритет выполнения операций (например, операция пересечение более приоритетна чем операция объединение), который нужно учитывать при записи выражений. Для изменения порядка выполнения операций в выражениях можно использовать круглые скобки.
Существуют тождественные преобразования, позволяющие по-разному записывать одно и то же выражение. 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 Е С).
С оставляя выражение, нужно обеспечиват ь совместимость участвующих в операциях отношений. При необходимости изменения заголовков следует выполнять переименование атрибутов.
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 ).».
Выборка < модификаторами (условиями). Выбор записей из исходной таб лицы в общем случае может быть основан на: точном совпадении, частичном совпадении, (равнении.
Точное совпадение задается вводом констант в соответствующих полях шаблона, как в случае запроса по товарам зеленою цвета.
Частичное совпадение задается с помощью элементов примера. В частности, для формулировки запроса о выводе всех видов товаров, названия которых начинаются с буквы «и», можно воспользоваться конструкцией «Р.икс», записанной в поле ТОВАР таблицы 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>41»
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).
Оператор удаления таблицы имеет формат вида:
DROP TABLE <имя таблицы>
Оператор позволяет удалит ь имеющуюся таблицу. Например, для удаления таб шцы с именем items достаточно записать оператор вида-
DROP TABLE items.
Оператор создания индекса имеет формат вида'
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).
Оператор удаления индекса имеет формат вида:
DROP INDEX <имя индекса: •
Этот оператор позво. гяет удалять созданный ранее индекс с соответствующим именем. Так, например, для уничтожения индекса mainindx к таблице emp достаточно записать оператор DROP INDEX main indx.
Оператор создания представления имеет формат вида:
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
Оператор удаления представления имеет формат ви да:
DROP VIEW <имя представления>
Операто] < позволяет удалить созданное ранее представление. Заметим, что при удалении представления таблицы, участвующие в запросе, удалению не подлежат. Удаление представления герг производится оператором вида:
DROP VIEW герг.
Оператор выборки записей имеет формат вида:
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.
Оператор изменения записей имеет формат вида.
UPDATE <имя таблицы>
SET <имя столбца> = {<выражение> , NULL} [, SET <имя столбца> = {--выражение>, NULL}... ] [WHERE <условие>]
Выполнение оператора UPDATE состоит ь изменении значений в определенных операндом SET столбцах таблицы для тех записей, которые удовлетворяют условию, заданному операндом WHERE.
Новые значения полей в записях могут быть пустыми (NULL), либо вычисляться в соответствии с арифметическим выражением. Правила записи арифметических и логических выражений аналогичны соответствующим правилам оператора SEI ЕСТ.
Пример 8. Изменение записей.
Пусть необходимо уве личить на 500 единиц зарп. iary тем служащим, которые получают не 6o7iee 6000 (по таблице ЕМР). Запрос сформулированный с помощью оператора SELECT, м< жет выглядеть так:
UPDATEemp SET sal = 6500 WHERE sal <- 6000.
Оператор вставки новых записей имеет формат ы двух видов-
INSERT INTO <имя таблицы> [(<список столбцов>)] VALUES (<список значений>)
и
INSERT INTO <имя габлицы> [(<список столбцов>)] Предложение SELECT>
В первом формате оператор iNSERT предназначен для ввода новых записей с заданными значениями в столбцах. Порядок перечне гения имен < толбцов должен слответс гвовать пооядку значений, перечисленных в списке операнда VALUES. Если <список сголбцов> опущен, то в <списке значений> должны быть перечислены все значения в порядке столбцов структуры таб ыцы.
Ео втором формате оператор INSERT предназначен для ввода в заданную таблицу новых строк, отобранных из другой таблицы с помощью предложения SELECT.
Пример 9. Ввод записей.
Ввести в таблицу ЕМР запись о новом сотруднике. Для этого можно записать такой оператор вида:
INSERT INTO emp
VALUES («Ivanov», 7500, «Lee>>, «cosmetics»).
Оператор удаления записей имеет формат вида:
DELETE FROM <имя таблицы> IWIIERE <условие>]
Результатом выполнения оператора DELETE является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному операндом WHERE. Если необязательный операнд WHERE опущен, то есть условие отбора удаляемых записей отсутствует, удалению подлежат Rce записи таблицы.
Пример 10. Удаление записей.
В связи с ликвидацией отдела игрушек (toy), требуется удалить из таблицы ЕМР всех сотрудников этого отдела. Оператор DELETE для этой задачи будет выглядеть так:
DELETE FROM emp
WHERE dept = «toy».
В заключение отметим, что, по словам Дейта, язык SQL является гибридом реляционной ал1 ебры и реляционного исчисления. В нем имеются элементы алгебры (оператор объединения UNION) и исчисления (квантор существования EXISTS). Кроме того, язык SQL обладает реляционной полнотой.
Контрольные вопросы и задания
II Дайте определение ре шционной модели и наз< 1вите сос гавляющие ее элементы.
Охарактеризуйте составные элементы реляционной модели данных и формы их преде гавления.
Приведите математическое описание понятия отношения.
Что такс домен отношения?
Дайте определение схемы отношения.
fi. Что представляет собой первичный ключ отношения, для чего он задается?
Назовите условия, при соблюдении которых таб. шцу можно считать о гношением.
Что такое индекс, для чего используется индексирование?
Изобразите схему одноуровневой индексации и дайте ей характеристику.
Ю. Изобразите схему двухуровневой индексации и дайте ей характеристику.
И. Что такое вторичный индекс, в чем его отличие от первичного индекса?
Приведите схему возможной организации связи ьторичного индекса с элементами базы данных.
Опишите действие механизм? контроля целостности при манипулировании данными в таблицах.
Дайте пбтцую характеристику теоретических языков запросов.
Назовите операции реляционной алгебры, предложенной Коддом, и приведите i рафическую интерпретацию для операций пересечения и произведения.
Охарактеризуйте общий и частные случаи операции соединения.
Назовите правила записи выражений реляционной алгебры.
Назовите и охарактеризуйте дополнительные операции реляционной алгебры, предложенные Дейтом.
Охарактеризуйте вариалты реляционного исчисления.
Запишите выражение реляционного исчисления на кортежах, со- ол ветствующее запросу: «Получить имена поставщиков, которые поставляют все детали».
Охарактеризуйте язык QBE.
Дайте опеределение поня гия элемента примера и приведите пример его использования в шаблоне запроса на выборку.
23.11азовите предполагаемые направления совершенствован! [я языка QBE в современных СУБД.
Охарактеризуйте язык SQL.
Покажите, что с помощью выражения (( S [П#] MINUS ( SP WI [ERE Д# = 'P2' ) [П#] ) JOIN S ) [Имя] реляционной алгебры можно полу чить имена поставщиков, которые не поставляют деталь Р2 (рис. 3.7)
Сформулируйте запрос, в котором требуется определить названия фирм, которые поставляют товары, отличные от товаров, предлагаемых фирмой Pencraft (подраздел 3.8).
Литература
1. Дейт К, Дж. Введение в сисгемы баз данных.: Пер. с англ. 6-е изд. К.: Диалек тика, 1998.
2 ЗамулинА. В. Системы программирования бат данных и знаний Новосибирск.: Наука. Сиб. отд-ние, 1990.
Мартин Дж. Органи 1ация баз данных в вычислите льных системах. Пер. с англ. М.: Мир, 1980.
Романов Б. А., Кушниренко 1 С. dBase TV. Назначение, функции, применение. М.: Радио и связь, 1991.
Ульман Дж. Основы систем баз данных. М.: Финансы и статистика, 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. Исходя из этого, под КС обычно выделяют наиболее производительную и имеющую значительную память ПЭВМ. Кроме того, к КС обычно подключается дорогостоящее оборудование (лазерные принтеры, факсы, модемы, сканеры и т. д.).
Существует множество сетевых ОС, реализующих централизованное управление. Среди них 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
Компьютер-сервер ■