рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Курс лекций В настоящем курсе рассматриваются вопросы организации баз данных и знаний

Курс лекций В настоящем курсе рассматриваются вопросы организации баз данных и знаний - Лекция, раздел Образование, Кафедра Компьютерных И Информационных Технологий   &nb...

кафедра компьютерных и информационных технологий

 

 

курс лекций


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

Основное назначение данного курса – систематическое введение в идеи и методы, используемые в современных системах управления базами данных. В курсе не рассматривается какая-либо одна популярная СУБД; излагаемый материал в равной степени относится к любой современной системе. Как показывает опыт, без знания основ теории баз данных трудно на серьезном уровне работать с конкретными системами, как бы хорошо они не были документированы.

 


Содержание

 

ЛЕКЦИЯ 1. Понятие СУБД. Функции СУБД............................................... 7

1.1 Введение..................................................................................................... 7

1.2 Понятие БД и СУБД................................................................................... 7

1.3 Уровни абстракции в СУБД. Функции абстрактных данных.................. 9

1.4 Представления.......................................................................................... 10

1.5 Функции СУБД......................................................................................... 11

1.6 Экспертные системы и базы знаний........................................................ 11

ЛЕКЦИЯ 2. Модели БД.............................................................................. 13

2.1 Обзор ранних (дореляционных) СУБД.................................................. 13

2.2 Системы, основанные на инвертированных списках.............................. 13

2.3 Иерархическая модель............................................................................. 14

2.4 Сетевая модель......................................................................................... 16

2.5 Основные достоинства и недостатки ранних СУБД............................... 17

ЛЕКЦИЯ 3. Реляционная модель и ее характеристики. Целостность в реляционной модели 18

3.1 Представление информации в реляционных БД.................................... 18

3.2 Домены 19

3.3 Отношения. Свойства и виды отношений............................................... 20

3.4 Целостность реляционных данных......................................................... 21

3.5 Потенциальные и первичные ключи....................................................... 22

3.6 Внешние ключи........................................................................................ 22

3.7 Ссылочная целостность........................................................................... 23

3.8 Значения NULL и поддержка ссылочной целостности........................... 24

ЛЕКЦИЯ 4. Реляционная алгебра.............................................................. 25

4.1 Понятие реляционной алгебры............................................................... 25

4.2 Замкнутость в реляционной алгебре....................................................... 25

4.3 Традиционные операции над множествами............................................ 25

4.4 Свойства основных операций реляционной алгебры............................ 27

4.5 Специальные реляционные операции..................................................... 28

ЛЕКЦИЯ 5. Вопросы проектирования БД................................................. 34

5.1 Понятие проектирования БД................................................................... 34

5.2 Функциональные зависимости................................................................. 35

5.3 Тривиальные и нетривиальные зависимости.......................................... 36

5.4 Замыкание множества зависимостей и правила вывода Армстронга... 36

5.5 Неприводимое множество зависимостей................................................. 38

5.6 Нормальные формы – основные понятия............................................... 38

5.7 Декомпозиция без потерь и функциональные зависимости................... 39

5.8 Диаграммы функциональных зависимостей........................................... 40

ЛЕКЦИЯ 6. Проектирование БД. Нормальные формы отношений......... 42

6.1 Первая нормальная форма. Возможные недостатки отношения в 1НФ 42

6.2 Вторая нормальная форма. Возможные недостатки отношения во 2НФ 44

6.3 Третья нормальная форма. Возможные недостатки отношения в 3НФ 45

6.4 Нормальная форма Бойса-Кодда............................................................ 46

ЛЕКЦИЯ 7. Проектирование БД. Нормальные формы отношений (продолжение) 49

7.1 Многозначные зависимости..................................................................... 49

7.2 Четвертая нормальная форма.................................................................. 51

7.3 Зависимости соединения.......................................................................... 51

7.4 Пятая нормальная форма........................................................................ 53

7.5 Итоговая схема процедуры нормализации............................................ 53

ЛЕКЦИЯ 8. Проектирование БД методом сущность-связь. ER-диаграммы 55

8.1 Возникновение семантического моделирования.................................... 55

8.2 Основные понятия метода........................................................................ 55

8.3 Диаграммы ER-экземпляров и ER-типа.................................................. 56

8.4 Правила формирования отношений....................................................... 59

8.5 Методология IDEF1 (самостоятельное изучение).................................. 62

ЛЕКЦИЯ 9. Язык SQL................................................................................ 66

9.1 История создания и развития SQL.......................................................... 66

9.2 Основные понятия SQL............................................................................ 66

9.3 Запросы на чтение данных. Оператор SELECT..................................... 71

9.4 Многотабличные запросы на чтение (объединения).............................. 75

ЛЕКЦИЯ 10. Язык SQL (продолжение)....................................................... 77

10.1 Объединения и стандарт SQL2.............................................................. 77

10.2 Итоговые запросы на чтение. Агрегатные функции............................. 80

10.3 Запросы с группировкой (предложение GROUP BY).......................... 80

10.4 Вложенные запросы............................................................................... 82

ЛЕКЦИЯ 11. Язык SQL. (продолжение)...................................................... 86

11.1 Внесение изменений в базу данных....................................................... 86

11.2 Удаление существующих данных (Оператор DELETE)...................... 87

11.3 Обновление существующих данных (Оператор UPDATE)................. 87

11.4 Определение структуры данных в SQL................................................ 88

11.5 Понятие представления.......................................................................... 91

11.6 Представления в SQL............................................................................. 92

11.7 Системный каталог (самостоятельное изучение).................................. 93

ЛЕКЦИЯ 12. Обеспечение безопасности БД................................................ 99

12.1 Общие положения.................................................................................. 99

12.2 Методы обеспечения безопасности..................................................... 100

12.3 Избирательное управление доступом................................................. 101

12.4 Обязательное управление доступом................................................... 102

12.5 Шифрование данных............................................................................ 102

12.6 Контрольный след выполняемых операций....................................... 102

12.7 Поддержка мер обеспечения безопасности в языке SQL................... 103

12.8 Директивы GRANT и REVOKE.......................................................... 103

12.9 Представления и безопасность............................................................ 105

ЛЕКЦИЯ 13. Физическая организация БД: структуры хранения и методы доступа 106

13.1 Доступ к базе данных........................................................................... 106

13.2 Кластеризация...................................................................................... 108

13.3 Индексирование................................................................................... 108

13.4 Структуры типа Б-дерева.................................................................... 111

13.5 Хеширование........................................................................................ 114

ЛЕКЦИЯ 14. Оптимизация запросов......................................................... 116

14.1 Оптимизация в реляционных СУБД.................................................... 116

14.2 Пример оптимизации реляционного выражения............................... 116

14.3 Обзор процесса оптимизации.............................................................. 117

14.4 Преобразование выражений................................................................ 119

ЛЕКЦИЯ 15. Восстановление после сбоев................................................. 123

15.1 Понятие восстановления системы........................................................ 123

15.2 Транзакции........................................................................................... 123

15.3 Алгоритм восстановления после сбоя системы.................................. 125

15.4 Параллелизм. Проблемы параллелизма............................................. 127

15.5 Понятие блокировки............................................................................ 129

15.6 Решение проблем параллелизма......................................................... 130

15.7 Тупиковые ситуации............................................................................ 132

15.8 Способность к упорядочению............................................................. 133

15.9 Уровни изоляции транзакции.............................................................. 134

15.10 Поддержка в языке SQL.................................................................... 135

ЛЕКЦИЯ 16. Технологии СУБД................................................................. 136

16.1 Распределенные базы данных............................................................. 136

16.2 Принципы функционирования распределенной БД........................... 136

16.3 Системы типа клиент/сервер................................................................ 139

16.4 Серверы баз данных............................................................................ 139

ЛЕКЦИЯ 17. Современные постреляционные модели БД........................ 141

17.1 Системы управления базами данных следующего поколения........... 141

17.2 Ориентация на расширенную реляционную модель.......................... 141

17.3 Объектно-ориентированные СУБД..................................................... 143

 

ЛЕКЦИЯ 1. Понятие СУБД. Функции СУБД

 

1.1 Введение

1.2 Понятие БД и СУБД

1.3 Уровни абстракции в СУБД. Функции абстрактных данных

1.4 Представления

1.5 Функции СУБД

1.6 Экспертные системы и базы знаний

 

Введение

 

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

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

По мере развития систем баз данных, менялись принципы организации данных в них: первоначально данные представлялись на основе иерархической, а в последствии сетевой модели. В конце 1970-х – начале 1980-х годов начали появляться первые реляционные продукты. В настоящее время системы баз данных на основе реляционной модели занимают лидирующее положение, несмотря на заявления многих исследователей о скором переходе к объектно-ориентированным системам. В настоящее время объектно-ориентированные системы, тем не менее, развиваются, хотя темпы их развития и сдерживаются медленным принятием соответствующих стандартов. Кроме того, многие коммерческие реляционные системы приобретают объектно-ориентированные черты. На основании этого, можно предположить, что в будущем объектно-ориентированные системы будут постепенно вытеснять реляционные.

В настоящее время ведутся исследования в следующих направлениях:

1. дедуктивные системы;

2. экспертные системы;

3. расширяемые системы;

4. объектно-ориентированные системы.

 

Понятие БД и СУБД

 

Система баз данных – это компьютеризированная система основная задача которой – хранение информации и предоставление доступа к ней по требованию.

Система баз данных включает в себя (рис. 1.1):

1. данные, непосредственно сохраняемые в базе данных;

2. аппаратное обеспечение;

3. программное обеспечение;

4. пользователей:

4.1. прикладные программисты;

4.2. конечные пользователи;

4.3. администраторы баз данных.

 

 

рис. 1.1 Система баз данных.

 

Данные.

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

 

Аппаратное обеспечение.

К аппаратному обеспечению системы относятся накопители для хранения информации, вместе с устройствами ввода-вывода, контролерами устройств и т.д.; вычислительная техника, используемая для поддержки работы ПО системы.

 

Программное обеспечение.

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

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

 

Пользователи.

Конечные пользователи – работают с базой данных непосредственно, через рабочую станцию или терминал. Конечный пользователь может получить доступ к… Администраторы базы данных – технические специалисты, осуществляющие создание… Функции администратора базы данных:

Уровни абстракции в СУБД. Функции абстрактных данных

 

Существует 3 уровня архитектуры СУБД (рис. 1.2):

1. Внутренний уровень - наиболее близкий к физическому хранению. Он связан со способами хранения информации на физических устройствах хранения;

2. Внешний уровень - наиболее близкий к пользователям. Он связан со способами представления данных для отдельных пользователей;

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

 

Представления

Соответственно трем уровням архитектуры выделяют три уровня абстракции данных в СУБД.   1.4.1 Внешний уровень – внешнее представление

Функции СУБД

1. Определение данных. СУБД должна допускать определения данных (внешние схемы, концептуальную и внутреннюю схемы, соответствующие отображения).… 2. Обработка данных. СУБД должна обрабатывать запросы пользователя на… 3. Безопасность и целостность данных. СУБД должна контролировать запросы и пресекать попытки нарушения правил…

Экспертные системы и базы знаний

В последнее время появилась необходимость хранения и использования слабоструктурированных данных, каковыми являются, например, человеческие знания в… Экспертная система – система искусственного интеллекта, включающая знания об… База знаний – семантическая модель, описывающая предметную область и позволяющая отвечать на такие вопросы из этой…

ЛЕКЦИЯ 2. Модели БД

 

2.1 Обзор ранних (дореляционных) СУБД

2.2 Системы, основанные на инвертированных списках

2.3 Иерархическая модель

2.4 Сетевая модель

2.5 Основные достоинства и недостатки ранних СУБД

 

Обзор ранних (дореляционных) СУБД

Рассмотрим системы, исторически предшествовавшие реляционным, что необходимо для правильного понимания причин повсеместного перехода к реляционным… Ограничимся рассмотрением только общих подходов к организации трех типов… Рассмотрим некоторые наиболее общие характеристики ранних систем:

Системы, основанные на инвертированных списках

 

К числу наиболее известных и типичных представителей таких систем относятся Datacom/DB компании Applied Data Research, Inc. (ADR), ориентированная на использование на машинах основного класса фирмы IBM, и Adabas компании Software AG.

Организация доступа к данным на основе инвертированных списков используется практически во всех современных реляционных СУБД, но в этих системах пользователи не имеют непосредственного доступа к инвертированным спискам (индексам).

Структуры данных

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

1. Строки таблиц упорядочены системой в некоторой физической последовательности.

2. Физическая упорядоченность строк всех таблиц может определяться и для всей БД (так делается, например, в Datacom/DB).

3. Для каждой таблицы можно определить произвольное число ключей поиска, для которых строятся индексы. Эти индексы автоматически поддерживаются системой, но явно видны пользователям.

 

Манипулирование данными

1. Операторы, устанавливающие адрес записи, среди которых: 1.1. прямые поисковые операторы (например, найти первую запись таблицы по… 1.2. операторы, находящие запись в терминах относительной позиции от предыдущей записи по некоторому пути доступа. …

Ограничения целостности

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

 

Иерархическая модель

 

Типичным представителем (наиболее известным и распространенным) является Information Management System (IMS) фирмы IBM. Первая версия появилась в 1968 г. До сих пор поддерживается много баз данных, что создает существенные проблемы с переходом как на новую технологию БД, так и на новую технику.

 

Иерархические структуры данных

Тип дерева (рис. 2.1) состоит из одного "корневого" типа записи и упорядоченного набора из нуля или более типов поддеревьев (каждое из…    

Манипулирование данными

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

1. Найти указанное дерево БД (например, отдел 310);

2. Перейти от одного дерева к другому;

3. Перейти от одной записи к другой внутри дерева (например, от отдела - к первому сотруднику);

4. Перейти от одной записи к другой в порядке обхода иерархии;

5. Вставить новую запись в указанную позицию;

6. Удалить текущую запись.

 

Ограничения целостности

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

В иерархических системах поддерживалась некоторая форма представлений БД на основе ограничения иерархии. Примером представления приведенной выше БД может быть иерархия, изображенная на рис. 2.3.

 

рис. 2.3 Пример представления иерархической БД.

 

Сетевая модель

 

Типичным представителем является Integrated Database Management System (IDMS) компании Cullinet Software, Inc., предназначенная для использования на машинах основного класса фирмы IBM под управлением большинства операционных систем. Архитектура системы основана на предложениях Data Base Task Group (DBTG) Комитета по языкам программирования Conference on Data Systems Languages (CODASYL), организации, ответственной за определение языка программирования Кобол. Отчет DBTG был опубликован в 1971г., а в 70-х годах появилось несколько систем, среди которых IDMS.

 

Сетевые структуры данных

Сетевая БД состоит из набора экземпляров каждого типа записи и набора экземпляров каждого типа связи (рис. 2.4). Тип связи определяется для двух типов записи: предка и потомка. Экземпляр типа… 1. Каждый экземпляр типа P является предком только в одном экземпляре L;

Манипулирование данными

Примерный набор операций может быть следующим:

1. Найти конкретную запись в наборе однотипных записей (инженера Сидорова);

2. Перейти от предка к первому потомку по некоторой связи (к первому сотруднику отдела 310);

3. Перейти к следующему потомку в некоторой связи (от Сидорова к Иванову);

4. Перейти от потомка к предку по некоторой связи (найти отдел Сидорова);

5. Создать новую запись;

6. Уничтожить запись;

7. Модифицировать запись;

8. Включить в связь;

9. Исключить из связи;

10. Переставить в другую связь и т.д.

Ограничения целостности

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

 

Основные достоинства и недостатки ранних СУБД

 

Сильные места ранних СУБД:

1. Развитые средства управления данными во внешней памяти на низком уровне;

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

3. Возможность экономии памяти за счет разделения подобъектов (в сетевых системах).

Недостатки:

1. Слишком сложно пользоваться;

2. Фактически необходимы знания о физической организации;

3. Прикладные системы зависят от этой организации;

4. Их логика перегружена деталями организации доступа к БД.

 

Литература:

 

1. Сергей Кузнецов, “Основы современных баз данных”. Центр Информационных Технологий, http://www.citforum.ru/database/osbd/contents.shtml

ЛЕКЦИЯ 3. Реляционная модель и ее характеристики. Целостность в реляционной модели

 

3.1 Представление информации в реляционных БД

3.2 Домены

3.3 Отношения. Свойства и виды отношений

3.4 Целостность реляционных данных

3.5 Потенциальные и первичные ключи

3.6 Внешние ключи

3.7 Ссылочная целостность

3.8 Значения NULL и поддержка ссылочной целостности

 

Представление информации в реляционных БД

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

Домены

 

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

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

Следует обратить внимание, что обычно в любой момент времени в домене будут значения, не являющиеся значением ни одного из атрибутов, соответствующих этому домену.

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

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

 

Отношения. Свойства и виды отношений

Вокруг понятия "отношение" сложилась некоторая двусмысленность из-за отсутствия четкого разграничения между переменными отношений и… Отношение R, определенное на множестве доменов D1, D2, …, Dn (не обязательно… 1. заголовок содержит фиксированное множество атрибутов или, точнее, пар <имя‑атрибута :…

Свойства отношений

Это свойство следует из того факта - что тело отношения – это математическое множество (кортежей), а множества в математике по-определению не… Важным следствием того, что не существует одинаковых строк является то, что… 2. Кортежи не упорядочены сверху вниз.

Виды отношений

1. Именованное отношение – это переменная отношения, определенная в СУБД посредством операторов создания отношений. 2. Базовым отношением называется именованное отношение, которое не является… 3. Производным отношением называется отношение, определенное (посредством реляционного выражения) через другие…

Целостность реляционных данных

 

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

 

Потенциальные и первичные ключи

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

Внешние ключи

Пусть R2 – базовое отношение. Тогда внешний ключ – FK в отношении R2 – это подмножество множества атрибутов R2 такое, что: 1. существует базовое отношение R1 (R1 и R2 не обязательно различны) с… 2. каждое значение FK в текущем значении R2 всегда совпадает со значением CK некоторого кортежа в текущем значении…

Ссылочная целостность

 

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

Понятия внешний ключ и ссылочная целостность определены в терминах друг друга.

Правила внешних ключей

1. При попытке удалить объект ссылки внешнего ключа: 1.1. Ограничить – приостановить операцию удаления, до момента, когда не будет… 1.2. Каскадировать – каскадировать операцию удаления, удалив соответствующие ссылающиеся объекты.

Значения NULL и поддержка ссылочной целостности

Значения NULL используются для обозначения факта отсутствия информации. Например: дата рождения человека может быть неизвестна. При этом следует… Возможность присутствия в отношении значений NULL приводит к необходимости… Правило ссылочной целостности также должно быть расширено с учетом возможности присутствия значений NULL.

ЛЕКЦИЯ 4. Реляционная алгебра

 

4.1 Понятие реляционной алгебры

4.2 Замкнутость в реляционной алгебре

4.3 Традиционные операции над множествами

4.4 Свойства основных операций реляционной алгебры

4.5 Специальные реляционные операции

 

Понятие реляционной алгебры

 

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

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

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

2. Специальные реляционные операции: выборка, проекция, соединение и деление.

 

Замкнутость в реляционной алгебре

Результат каждой операции над отношением (или реляционной операции) также является отношением. Это реляционное свойство называется свойством… Другими словами, можно записывать вложенные выражения, т.е. выражения, в… Если рассматривать замкнутость более строго, каждая реляционная операция должна быть определена таким образом, чтобы…

Традиционные операции над множествами

Объединение

Будем говорить, что два отношения совместимы по типу, если у них идентичные заголовки, а точнее, 1. если каждое из них имеет одно и то же множество имен атрибутов… 2. если соответствующие атрибуты (т.е. атрибуты с теми же самыми именами в двух отношениях) определены на одном и том…

Пересечение

Пересечением двух совместимых по типу отношений А и В (A INTERSECT B) называется отношение с тем же заголовком, как и в отношениях А и В, и с телом, состоящим из множества всех кортежей, принадлежащих одновременно обоим отношениям A и B.

Пример операции пересечения отношений приведен на рис. 4.1 и рис. 4.3.

 

A INTERSECT B
CityNo CityName RgNo
Кривой Рог
Пятихатки

 

рис. 4.3 Результат операции пересечения отношений A и B.

 

Вычитание

Вычитанием двух совместимых по типу отношений А и В (A MINUS B) называется отношение с тем же заголовком, как и в отношениях А и В, и с телом, состоящим из множества всех кортежей, принадлежащих отношению A и не принадлежащих отношению B.

Пример операции вычитания отношений приведен на рис. 4.1 и рис. 4.4.

 

A MINUS B   B MINUS A
CityNo CityName RgNo   CityNo CityName RgNo
Желтые Воды   Львов

 

рис. 4.4 Результат операции вычитания отношений A минус B и B минус A.

 

Произведение

Декартово произведение двух отношений А и В (A TIMES B), где А и В не имеют общих имен атрибутов, определяется как отношение с заголовком, который…   A   B CityNo …   A TIMES B CityNo CityName A_RgNo B_RgNo RgName …

Свойства основных операций реляционной алгебры

 

Операции объединения, пересечения и декартова произведения (но не вычитания) обладают свойствами ассоциативности и коммутативности.

Пусть А, В и С – произвольные реляционные выражения (дающие совместимые по типу отношения). Тогда операция объединения:

(A UNION В) UNION С

Эквивалентна операции:

А UNION (В UNION С) (свойство ассоциативности), а .операция объединения:

А UNION B эквивалентна операции:

В UNION A (свойство коммутативности). Аналогично свойства ассоциативности и коммутативности определяются для остальных операций.

Свойство ассоциативности позволяет записывать последовательные операторы объединения (пересечения и декартова произведения) без использования круглых скобок; таким образом, выражение из предыдущего примера можно однозначно упростить:

A UNION В UNION С.

 

Специальные реляционные операции

Выборка

A WHERE X Q Y называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество всех кортежей отношения А, для которых… На рис. 4.6приведен пример операции выборки.   A CityNo CityName RgNo Желтые Воды …

Проекция

A [ X, Y, …, Z ] называется отношение с заголовком {X, Y,..., Z} и телом, содержащим множество всех кортежей {Х:х, Y:y,..., Z:z}, таких, для которых… Таким образом, с помощью оператора проекции получено "вертикальное"… A CityNo CityName RgNo Желтые Воды …

Естественное соединение

Пусть отношения А и В имеют заголовки {Xl, X2, ..., Xm, Y1, Y2, ..., Yn} и {Yl, Y2, ..., Yn, Zl, Z2, ..., Zp} соответственно; т.е. атрибуты Yl, Y2,… Пример операции естественного соединения приведен на рис. 4.8. A …   A JOIN B CityNo CityName A_RgNo RgName …

Q-соединение

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

(A TIMES В) WHERE X Q Y

Q-соединение, таким образом, это отношение с тем же заголовком, что и при декартовом произведении отношений A и B, и с телом, содержащим множество кортежей, принадлежащих этому декартову произведению и вычисление условия XQY дает значение истина для этого кортежа. Атрибуты Х и У должны быть определены на одном и том же домене, а операция должна иметь смысл для этого домена.

 

Деление

{X1, X2,..., Xm, Y1, Y2, ..., Yn} и {Y1, Y2, ..., Yn} соответственно, т.е. атрибуты Y1, Y2,..., Yn — общие для двух отношений, и отношение A имеет… Пример операции деления приведен на рис. 4.9. Отношение M является проекцией…   M   S StNo SubjNo SubjNo …

Операция расширения

EXTEND GROUPS ADD (2002-EnterYear) AS COURCE   GROUPS   Результат операции…  

Операция подведения итогов

Пусть А1,А2,... ,An – отдельные атрибуты отношения А. Результатом операции подведения итогов

SUMMARIZE A BY (A1, A2, … An) ADD exp AS Z (которая является выражением, а не командой или оператором) будет отношение с заголовком {А1, А2, ..., An, Z} и с телом, содержащим все такие кортежи, которые являются кортежами проекции отношения А по атрибутам Al, A2, ..., An, расширенного значением для нового атрибута Z. Новое значение Z подсчитывается вычислением итогового выражения ехр по всем кортежам отношения А, которые имеют те же самые значения для атрибутов А1, А2, ..., Аn, что и кортеж t. Список атрибутов А1, А2, ..., Аn не должен включать атрибут с именем Z, а выражение ехр не должно ссылаться на атрибут Z. Кардинальное число результата равно кардинальному числу проекции отношения А по атрибутам Al, A2, ..., An, а степень результата равна степени такой проекции плюс единица.

 

Операторы обновления

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

TARGET := SOURCE где source и target— реляционные выражения, представляющие совместимые по типу отношения. Вычисленное значение source присваивается отношению target, заменяя его старое значение.

В реляционных системах также существуют операции вставки INSERT, удаления DELETE и модификации UPDATE.

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

INSERT source INTO target где source и target – это реляционные выражения, представляющие совместимые по типу отношения (на практике отношение target является просто именованным отношением). Значение отношения source вычисляется, и все кортежи результата вставляются в отношение target.

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

UPDATE target attribute1:=scalar_expression, attribute2:=scalar_expression, …, attributeN:=scalar_expression

где target – реляционное выражение, а каждый атрибут attribute принадлежит отношению, которое является результатом вычисления указанного выражения. Все кортежи в результирующем отношении обновляются в соответствии с указанными операторами attribute2:=scalar‑expression

На практике выражение target часто будет просто ограничивающим условием для некоторого именованного отношения.

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

DELETE target

где target – реляционное выражение; все кортежи в результирующем отношении удаляются.

Как и в случае с оператором обновления, выражение target часто будет просто ограничивающим условием для некоторого именованного отношения.

 

Реляционные сравнения

Реляционное сравнение имеет следующий вид:

Expression Q expression где expression –это выражения реляционной алгебры, представляющие совместимые по типу отношения, а Q – один из следующих операторов сравнения:

= (равно)

¹ (не равно)

£ (подмножество)

< (собственное подмножество)

³ (надмножество)

> (собственное надмножество).


Литература:

 

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

ЛЕКЦИЯ 5. Вопросы проектирования БД

 

5.1 Понятие проектирования БД

5.2 Функциональные зависимости

5.3 Тривиальные и нетривиальные зависимости

5.4 Замыкание множества зависимостей и правила вывода Армстронга

5.5 Неприводимое множество зависимостей

5.6 Нормальные формы – основные понятия

5.7 Декомпозиция без потерь и функциональные зависимости

5.8 Диаграммы функциональных зависимостей

 

Понятие проектирования БД

В этой лекции речь пойдет о проектировании реляционной базы данных. В общем проблема формулируется следующим образом: как в некоторой базе данных… Следует отметить следующие особенности. 1. Следует заметить, что речь здесь пойдет о логическом, а не физическом макете.

Функциональные зависимости

  SR StNo GrNo StName CityNo RgNo Иванов …   рис. 5.1 Данные отношения SR.

Тривиальные и нетривиальные зависимости

 

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

{StNo, GrNo} ® {StNo}

Фактически ФЗ тривиальна тогда и только тогда, когда правая часть символической записи данной зависимости является подмножеством (не обязательно собственным подмножеством) левой части.

 

Замыкание множества зависимостей и правила вывода Армстронга

Некоторые функциональные зависимости обозначают другие функциональные зависимости. Например, функциональная зависимость: {StNo}®{GrNo, StName} подразумевает следующие функциональные зависимости: {StNo}®{GrNo}

Неприводимое множество зависимостей

Далее, если S2 является покрытием для S1, а S1 – покрытием для S2, т.е. если S1+=S2+ , то S1 и S2 эквивалентны. Ясно, что если S1 и S2 эквивалентны… Множество ФЗ называется неприводимым тогда и только тогда, когда выполняются… 1. Правая часть (зависимая часть) каждой ФЗ множества S содержит только один атрибут (т.е. является одноэлементным…

Декомпозиция без потерь и функциональные зависимости

Как упоминалось ранее, процедура нормализации включает разбиение, или декомпозицию данного отношения на другие отношения, причем декомпозиция должна… Рассмотрим отношение Students из учебной базы данных, с атрибутами {StNo,…   Students StNo GrNo StName CityNo …

Диаграммы функциональных зависимостей

Некоторое неприводимое множество зависимостей отношения R можно представить в виде диаграммы функциональных зависимостей (диаграммы ФЗ). На рис. 5.5 и рис. 5.6 показаны диаграммы ФЗ для некоторых отношений из…  

ЛЕКЦИЯ 6. Проектирование БД. Нормальные формы отношений

 

6.1 Первая нормальная форма. Возможные недостатки отношения в 1НФ

6.2 Вторая нормальная форма. Возможные недостатки отношения во 2НФ

6.3 Третья нормальная форма. Возможные недостатки отношения в 3НФ

6.4 Нормальная форма Бойса-Кодда

 

Первая нормальная форма. Возможные недостатки отношения в 1НФ

Для простоты изложения предполагается, что каждое отношение имеет в точности один потенциальный ключ, который является первичным ключом. Это… Отношение находится в первой нормальной форме тогда и только тогда, когда все… В этом определении всего лишь утверждается, что любое нормализованное отношение находится в 1НФ. Однако отношение,…

Вторая нормальная форма. Возможные недостатки отношения во 2НФ

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

Третья нормальная форма. Возможные недостатки отношения в 3НФ

 

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

Отношения Cities и Regions находятся в третьей нормальной форме. Таким образом вторым этапом нормализации является создание проекций для исключения транзитивных зависимостей.

 

Сохранение зависимости

    рис. 6.5 Функциональные зависимости в отношении CNR

Нормальная форма Бойса-Кодда

В этом разделе опускается упрощающее допущение о том, что каждое отношение имеет только один потенциальный ключ (а именно первичный ключ), и… 1. Отношение имеет два (или более) потенциальных ключа. 2. Два потенциальных ключа являются сложными.

ЛЕКЦИЯ 7. Проектирование БД. Нормальные формы отношений (продолжение)

 

7.1 Многозначные зависимости

7.2 Четвертая нормальная форма

7.3 Зависимости соединения

7.4 Пятая нормальная форма

7.5 Итоговая схема процедуры нормализации

 

Многозначные зависимости

  UCTX COURSE TEACHERS TEXTS Физика проф. Иванов проф. Петров …   рис. 7.1 Ненормализованное отношения UCTX

Четвертая нормальная форма

 

Отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда существуют такие подмножества А и В атрибутов отношения R, что выполняется (нетривиальная) многозначная зависимость А —>> В. Тогда все атрибуты отношения R также функционально зависят от атрибута A.

 

Зависимости соединения

До сих пор предполагалось, что единственной операцией в процессе декомпозиции является замена данного отношения (при декомпозиции без потерь) двумя… На рисунке представлен пример конкретного набора данных, соответствующих… Если пара (t1,s1) находится в отношении TS и пара (s1,g1) находится в отношении SG и пара (t1,g1) находится в…

Пятая нормальная форма

 

Отношение R находится в пятой нормальной форме (5НФ), которая также называется проекционно-соединительной нормальной формой, тогда и только тогда, когда каждая зависимость соединения в отношении R подразумевается потенциальными ключами отношения R.

Отношение TSG не находится в 5НФ. Оно удовлетворяет некоторой зависимости соединения, а именно ЗД-ограничению, которое, конечно, не подразумевается его единственным потенциальным ключом. Наоборот, после 3-декомпозиции проекции TS, SG и GT находятся в 5НФ, поскольку для них вовсе нет зависимостей соединения.

Зависимости соединения, подразумеваемой потенциальными ключами

* ( (StNo, GrNo, StName), (StNo, CityNo) ). Это значит, что отношение Students равносильно соединению его проекций с… В заключение заметим, что, как следует из определения 5НФ, она является окончательной нормальной формой по отношению к…

Итоговая схема процедуры нормализации

 

Пусть дано отношение R, которое находится в 1НФ (или может быть приведено к такой форме после выравнивания исходной ненормализованной структуры), вместе с некоторыми ограничениями (функциональными зависимостями, многозначными зависимостями и зависимостями соединения). Тогда основная идея этой технологии состоит в систематическом приведении отношения R к набору меньших отношений, который в некотором заданном смысле эквивалентен отношению R, но более предпочтителен. Каждый этап процесса приведения состоит из разбиения на проекции отношений, полученных на предыдущем этапе, таким образом, чтобы проекции находились в нормальной форме более высокого порядка, чем первоначальное отношение.

Из приведенных выше правил можно выделить некоторые особенности.

1. Прежде всего, процесс разбиения на проекции на каждом этапе должен быть выполнен без потерь и с сохранением зависимости (там, где это возможно).

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

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

Литература:

 

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

ЛЕКЦИЯ 8. Проектирование БД методом сущность-связь. ER-диаграммы

 

8.1 Возникновение семантического моделирования

8.2 Основные понятия метода

8.3 Диаграммы ER-экземпляров и ER-типа

8.4 Правила формирования отношений

8.5 Методология IDEF1 (самостоятельное изучение)

 

Возникновение семантического моделирования

 

Широкое распространение реляционных СУБД и их использование в самых разнообразных приложениях показывает, что реляционная модель данных достаточна для моделирования предметных областей. Однако проектирование реляционной базы данных в терминах отношений на основе механизма нормализации часто представляет собой очень сложный и неудобный для проектировщика процесс. Потребности проектировщиков баз данных в более удобных и мощных средствах моделирования предметной области вызвали к жизни направление семантических моделей данных. В этой лекции рассматривается одна из популярных семантических моделей данных – модель "сущность–связь".

Метод сущность-связь называют также методом "ER-диаграмм": во-первых, ER –аббревиатура от слов Essence (сущность) и Relation (связь), во-вторых, метод основан на использовании диаграмм, называемых соответственно диаграммами ER-экземпляров и диаграммами ER-типа.

 

Основные понятия метода

 

Основными понятиями метода сущность-связь являются следующие:

1. сущность – представляет собой объект, информация о котором хранится в БД. Экземпляры сущности отличаются друг от друга и однозначно идентифицируются. Названиями сущностей являются, как правило, существительные, например: ПРЕПОДАВАТЕЛЬ, ДИСЦИПЛИНА, ГРУППА.

2. Атрибут сущности – представляет собой свойство сущности. Это понятие аналогично понятию атрибута в отношении. Так, атрибутами сущности ПРЕПОДАВАТЕЛЬ может быть его Фамилия, Должность, Стаж (преподавательский) и т. д.

3. Ключ сущности – атрибут или набор атрибутов, используемый для идентификации экземпляра сущности. Как видно из определения, понятие ключа сущности аналогично понятию ключа отношения.;

4. Связь между сущностями. Связь двух или более сущностей - предполагает зависимость между атрибутами этих сущностей. Название связи обычно представляется глаголом. Примерами связей между сущностями являются следующие- ПРЕПОДАВАТЕЛЬ ВДЕТ ДИСЦИПЛИНУ (Иванов ВЕДЕТ "Организацию БД и знаний"), ПРЕПОДАВАТЕЛЬ ПРЕПОДАЕТ В ГРУППЕ (Иванов ПРЕПОДАЕТ В 256 группе);

5. Степень связи – является характеристикой связи между сущностями, которая может быть следующих видов: 1:1, 1:М, М:1, М:М.;

6. Класс принадлежности (КП) экземпляров сущности. КП сущности может быть: обязательным и необязательным. Класс принадлежности сущности является обязательным, если все экземпляры этой сущности обязательно участвуют в рассматриваемой связи, в противном случае класс принадлежности сущности является необязательным.

7. Диаграммы ER-экземпляров;

8. Диаграммы ER-типа.

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

Диаграммы ER-экземпляров и ER-типа

1. диаграммы ER-экзрмпляров, 2. диаграммы ER-типа, или ER-диаграммы. На рисунке рис. 8.1 приведена диаграмма ER-экземпляров для сущностей ПРЕПОДАВАТЕЛЬ и ДИСЦИПЛИНА со связью ВЕДЕТ.

Правила формирования отношений

Правила формирования отношений основываются на учете следующего: 1. степени связи между сущностями (1:1, 1:М, М:1, М:М); 2. класса принадлежности экземпляров сущностей (обязательный и необязательный).

Методология IDEF1 (самостоятельное изучение)

Метод IDEF1, разработанный Т. Рэмей (T. Ramey), также основан на подходе П. Чена и позволяет построить модель данных, эквивалентную реляционной… Сущность в методологии IDEF1X является независимой от идентификаторов или…  

ЛЕКЦИЯ 9. Язык SQL

 

9.1 История создания и развития SQL

9.2 Основные понятия SQL

9.3 Запросы на чтение данных. Оператор SELECT

9.4 Многотабличные запросы на чтение (объединения).

 

История создания и развития SQL

Язык для взаимодействия с БД SQL появился в середине 70-х и был разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное… 1. независимость от конкретных СУБД. Если при создании БД не использовались… 2. реляционная основа. Реляционная модель имеет солидный теоретический фундамент. Язык SQL основан на реляционной…

Основные понятия SQL

Операторы

В SQL используется приблизительно тридцать операторов, каждый из которых "просит" СУБД выполнить определенное действие, например, прочитать данные, создать таблицу или добавить в таблицу новые данные. Все операторы SQL имеют одинаковую структуру, которая показана на рис. 9.1.

 

рис. 9.1Структура оператора SQL.

 

Каждый оператор SQL начинается с глагола, т.е. ключевого слова, описывающего действие, выполняемое оператором. Типичными глаголами являются SELECT (выбрать), CREATE (создать), INSERT (добавить), DELETE (удалить), COMMIT(завершить). После глагола идет одно или несколько предложений. Предложение описывает данные, с которыми работает оператор, или содержит уточняющую информацию о действии, выполняемом оператором. Каждое предложение также начинается с ключевого слова, такого как WHERE (где), FROM (откуда), INTO (куда) и HAVING (имеющий). Одни предложения в операторе являются обязательным, а другие – нет. Конкретная структура и содержимое предложения могут изменяться. Многие предложения содержат имена таблиц или столбцов; некоторые из них могут содержать дополнительные ключевые слова, константы и выражения.

В стандарте ANSI/ISO определены ключевые слова, которые применяются в качестве глаголов и в предложениях операторов. В соответствии со стандартом, эти ключевые слова нельзя использовать для именования объектов базы данных, таких как таблицы, столбцы и пользователи

 

Имена.

У каждого объекта в базе данных есть уникальное имя. Имена используются в операторах SQL и указывают, над каким объектом базы данных оператор должен выполнить действие. В стандарте ANSI/ISO определено, что имена имеются у таблиц, столбцов и пользователей. Во многих реализациях SQL поддерживаются также дополнительные именованные объекты, такие как хранимые процедуры, именованные отношения "первичный ключ – внешний ключ" и формы для ввода данных.

В соответствии со стандартом ANSI/ISO, в SQL имена должны содержать от 1 до 18 символов, начинаться с буквы и не содержать пробелы или специальные символы пунктуации. В стандарте SQL2 максимальное число символов в имени увеличено до 128.

Полное имя таблицы состоит из имени владельца таблицы и собственно ее имени, разделенных точкой (.). Например, полное имя таблицы Students, владельцем которой является пользователь по имени Admin, имеет следующий вид:

Admin.Students

Если в операторе задается имя столбца, SQL сам определяет, в какой из указанных в этом же операторе таблиц содержится данный столбец. Однако если в оператор требуется включить два столбца из различных таблиц, но с одинаковыми именами, необходимо указать полные имена столбцов, которые однозначно определяют их местонахождение. Полное имя столбца состоит из имени таблицы, содержащей столбец, и имени столбца (простого имени), разделенных точкой (.). Например, полное имя столбца StName из таблицы Students имеет следующий вид:

Students.StName

 

Типы данных в SQL

табл. 9.1 Типы данных в SQL.   Тип данных Описание CHAR (длина) …  

Константы

Числовые константы. Целые и десятичные константы (известные также под названием точных числовых литералов) в операторах SQL представляются в виде… 21 -3752000,00 +497500,8778 Константы с плавающей запятой (известные также под названием приблизительных числовых литералов) определяются с…

Запросы на чтение данных. Оператор SELECT

 

Оператор SELECT применяется для построения выборок данных и имеет следующий синтаксис:

 

SELECT [ALL | DISTINCT] возвращаемый_столбец, … | *

FROM спецификатор_таблицы, …

WHERE условие_поиска

GROUP BY имя_столбца, …

HAVING условие_поиска

ORDER BY спецификатор_сортировки, …

 

Предложение SELECT

1. имя столбца, идентифицирующее один из столбцов, содержащихся в таблицах, которые перечислены в предложении FROM Когда в качестве возвращаемого… 2. константа, показывающая, что в каждой строке результатов запроса должно… 3. выражение, показывающее, что SQL должен вычислять значение, помещаемое в результаты запроса, по формуле,…

Предложение FROM

Результатом SQL-запроса на чтение всегда является таблица, содержащая данные и ничем не отличающаяся от таблиц базы данных Кроме столбцов, значения которых считываются непосредственно из базы данных,… Иногда требуется получить содержимое всех столбцов таблицы. На практике такая ситуация может возникнуть, когда вы…

Отбор строк (предложение WHERE)

SQL-запросы, считывающие из таблицы все строки, полезны при просмотре базы данных и создании отчетов, однако редко применяются для чего-нибудь еще Обычно требуется выбрать из таблицы несколько строк и включить в результаты запроса только их Чтобы указать, какие строки требуется отобрать, следует использовать предложение WHERE.

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

Если условие поиска имеет значение TRUE, строка будет включена в результаты запроса.

Если условие поиска имеет значение FALSE или NULL, то строка исключается из результатов запроса.

 

Условия поиска

Сравнение (=, <>, <, <=, >, >=). Наиболее распространенным условием поиска в SQL является сравнение. При сравнении SQL вычисляет и… Ниже приведен синтаксис оператора сравнения. Выражение1 = | <> | < | <= | > | >= Выражение2

Сортировка результатов запроса (предложение ORDER BY).

Строки результатов запроса, как и строки таблицы базы данных, не имеют определенного порядка. Включив в оператор SELECT предложение ORDER BY, можно отсортировать результаты запроса. Это предложение состоит из ключевых слов ORDER BY, за которыми следует список имен столбцов, разделенных запятыми.

ORDER BY имя_столбца [ASC | DESC], …

В предложении ORDER BY можно выбрать возрастающий или убывающий порядок сортировки. По умолчанию, данные сортируются в порядке возрастания. Чтобы сортировать их по убыванию, следует включить в предложение сортировки ключевое слово DESC.

Например: вывести список фамилий студентов учащихся в группе с кодом 1 в обратном алфавитном порядке.

SELECT StName

FROM Students ORDER BY DESC StName

 

Многотабличные запросы на чтение (объединения).

 

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

 

9.4.1 Запросы с использованием отношения предок/потомок.

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

Например: вывести список фамилий студентов с названием группы, в которой он учится

SELECT StName, GrName

FROM Students, Groups

WHERE Students.GrNo = Groups.GrNo

 

Прочие объединения таблиц по равенству

Объединение таблиц по неравенству. Термин "объединение" применяется к любому запросу, который объединяет данные из двух таблиц базы данных… SELECT Marks1.SubjNo FROM Marks AS Marks1, Marks AS Marks2

ЛЕКЦИЯ 10. Язык SQL (продолжение)

 

10.1 Объединения и стандарт SQL2

10.2 Итоговые запросы на чтение. Агрегатные функции

10.3 Запросы с группировкой (предложение GROUP BY)

10.4 Вложенные запросы

 

Объединения и стандарт SQL2

 

В стандарте SQL2 был определен совершенно новый метод поддержки внешних объединений, который не опирался ни на одну популярную СУБД. В спецификации стандарта SQL2 поддержка внешних объединений осуществлялась в предложении FROM с тщательно разработанным синтаксисом, позволявшим пользователю точно определить, как исходные таблицы должны быть объединены в запросе. Расширенное предложение FROM поддерживает также операцию UNION над таблицами и допускает сложные комбинации запросов на объединение операторов SELECT и объединений таблиц.

 

Внутренние объединения в стандарте SQL2

Например: вывести список фамилий студентов, и названия групп, к которых они учаться. SELECT StName, GrName FROM Students INNER JOIN Groups

Внешние объединения в стандарте SQL2

SELECT Chief.TName, SubOrdinate.TName FROM Teachers AS Chief FULL OUTER JOIN Teachers AS SubOrdinate ON Chief.TNo = SubOrdinate.TChiefNo

Перекрестные объединения и запросы на объединение в SQL2

Расширенное предложение FROM в стандарте SQL2 поддерживает также два других способа соединения данных из двух таблиц – декартово произведение и запросы на объединение. Строго говоря, ни один из них не является операцией "объединения", но они поддерживаются в стандарте SQL2 с помощью тех же самых предложений, что и внутренние и внешние объединения. Вот запрос, создающий декартово произведение таблиц Students и Groups:

SELECT *

FROM Students CROSS JOIN Groups

 

Многотабличные объединения в стандарте SQL2

Одно из крупных преимуществ расширенного предложения FROM заключается в том, что оно дает единый стандарт для определения как внутренних и внешних объединений, так и произведений и запросов на объединение. Другим, даже еще более важным преимуществом этого предложения является то, что оно обеспечивает очень ясную и четкую спецификацию объединений трех и четырех таблиц, а также произведений и запросов на объединение. Для построения этих сложных объединений любые выражения описанные ранее, могут быть заключены в круглые скобки. Результирующее выражение, в свою очередь, можно использовать для создания других выражений объединения, как если бы оно было простой таблицей. Точно так же, как SQL позволяет с помощью круглых скобок комбинировать различные арифметические операции (+, –, * и /) и строить сложные выражения, стандарт SQL2 дает возможность создавать сложные выражения для объединений.

 

Итоговые запросы на чтение. Агрегатные функции

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

Агрегатные функции и значения NULL

В стандарте ANSI/ISO также определены следующие точные правила обработки значений NULL в агрегатных функциях:

1. если какие-либо из значений, содержащихся в столбце, равны NULL, при вычислении результата функции они исключаются;

2. если все значения в столбце равны NULL, то функции SUM(), AVG(), MIN() и MAX () возвращают значение NULL; функция COUNT () возвращает ноль;

3. если в столбце нет значений (т.е. столбец пустой), то функции SUM() , AVG(), MIN() и МАХ() возвращают значение NULL; функция COUNT() возвращает ноль;

4. функция COUNT(*) подсчитывает количество строк и не зависит от наличия или отсутствия в столбце значений NULL; если строк в таблице нет, эта функция возвращает ноль.


Запросы с группировкой (предложение GROUP BY)

 

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

Запрос, включающий в себя предложение GROUP BY, называется запросом с группировкой, поскольку он объединяет строки исходных таблиц в группы и для каждой группы строк генерирует одну строку таблицы результатов запроса. Столбцы, указанные в предложении GROUP BY, называются столбцами группировки, поскольку именно они определяют, по какому признаку строки делятся на группы. Например, получить список фамилий студентов и их средних оценок.

SELECT StName, AVG(Mark)

FROM Marks INNER JOIN Students USING(StNo)

GROUP BY StName

 

Несколько столбцов группировки

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

SELECT StName, Semester, AVG(Mark)

FROM Marks INNER JOIN Students USING(StNo)

GROUP BY StName, Semester

 

Ограничения на запросы с группировкой

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

Значения NULL в столбцах группировки

В стандарте ANSI определено, что два значения NULL в предложении GROUP BY равны.

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

Условия поиска групп (предложение HAVING)

Точно так же, как предложение WHERE используется для отбора отдельных строк, участвующих в запросе, предложение HAVING можно применить для отбора групп строк. Его формат соответствует формату предложения WHERE. Предложение HAVING состоит из ключевого слова HAVING, за которым следует условие поиска. Таким образом, данное предложение определяет условие поиска для групп.

 

Ограничения на условия поиска групп

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

 

Предложение HAVING без GROUP BY

Предложение HAVING почти всегда используется в сочетании с предложением GROUP BY, однако синтаксис оператора SELECT не требует этого. Если предложение HAVING используется без предложения GROUP BY, SQL рассматривает полные результаты запроса как одну группу. Другими словами, агрегатные функции, содержащиеся в предложении HAVING, применяются к одной и только одной группе, и эта группа состоит из всех строк. На практике предложение HAVING очень редко используется без соответствующего предложения GROUP BY.

 

Вложенные запросы

Вложенным (или подчиненным) запросом называется запрос, содержащийся в предложении WHERE или HAVING другого оператора SQL. Вложенные запросы… Чаще всего вложенные запросы указываются в предложении WHERE оператора SQL.… Например, вывести список фамилий студентов, средний балл которых выше 4,5:

Условия поиска во вложенном запросе

Вложенный запрос всегда является частью условия поиска в предложении WHERE или HAVING. Ранее были рассмотрены простые условия поиска, которые могут… Сравнение с результатом вложенного запроса (=, <>, <, <=, >,… проверяемое_выражение | = | <> | < | <= | > | >= | вложенный_запрос

Вложенные запросы и объединения

При чтении данной главы вы, возможно, заметили, что многие запросы, записанные с применением вложенных запросов, можно также записать в виде многотабличных запросов. Такое случается довольно часто, и SQL позволяет записать запрос любым способом.

 

Уровни вложенности запросов

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

 

Вложенные запросы в предложении HAVING

Хотя вложенные запросы чаще всего применяются в предложении WHERE их можно использовать и в предложении HAVING главного запроса. Когда вложенный запрос содержится в предложении HAVING, он участвует в отбор группы строк.


Литература:

 

1. Джеймс Р. Грофф, Пол Н. Вайнберг. SQL: полное руководство: пер.с англ. –К.: Издательская группа BHV, 2000.–608с. Стр. 169–217.

ЛЕКЦИЯ 11. Язык SQL. (продолжение)

 

11.1 Внесение изменений в базу данных.

11.2 Удаление существующих данных (Оператор DELETE)

11.3 Обновление существующих данных (Оператор UPDATE)

11.4 Определение структуры данных в SQL

11.5 Понятие представления.

11.6 Представления в SQL.

11.7 Системный каталог (самостоятельное изучение)

 

Внесение изменений в базу данных.

 

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

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

 

Добавление новых данных (оператор INSERT).

Однострочный оператор INSERT, синтаксис которого описан ниже, добавляет в таблицу новую строку. В предложении INTO указывается таблица, в которую добавляется новая строка (целевая таблица), а в предложении VALUES содержатся значения данных для новой строки. Список столбцов определяет, какие значения в какой столбец заносятся.

INSERT INTO имя_таблицы (имя_столбца,…) VALUES (константа | NULL,…)

Ниже приведен пример оператора INSERT, который добавляет информацию о новой группе ²К-99-51² в учебную базу данных:

INSERT INTO Groups(GrNo, EnterYear, GrName)

VALUES(6, 1999, 'К-99-51')

Добавление значений NULL. При добавлении в таблицу новой строки всем столбцам, имена которых отсутствуют в списке столбцов оператора INSERT, автоматически присваивается значение NULL.

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

INSERT INTO Groups

VALUES(6, 1999, 'К-99-51')

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

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

INSERT INTO имя_таблицы (имя_столбца,…) запрос

 

Удаление существующих данных (Оператор DELETE)

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

Оператор DELETE, синтаксис которого изображен ниже, удаляет выбранные строки данных из одной таблицы.

DELETE FROM имя_таблицы [WHERE условие_поиска]

В предложении FROM указывается таблица, содержащая строки, которые требуется удалить. В предложении WHERE указываются строки, которые должны быть удалены.

Например, удалить из учебной базы данных студента с кодом 3.

DELETE FROM Students

WHERE StNo = 3

Хотя предложение WHERE в операторе DELETE является необязательным, оно присутствует почти всегда. Если же оно отсутствует, то удаляются все строки целевой таблицы.

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

 

Обновление существующих данных (Оператор UPDATE)

 

Оператор UPDATE, обновляет значения одного или нескольких столбцов в выбранных строках одной таблицы.

UPDATE имя_таблицы

SET имя_столбца = выражение,...

[WHERE условие_поиска]

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

Например, Изменить фамилию студента ²Петрова² с кодом 2 на фамилию ²Петренко²:

UPDATE Students

SET StName = 'Петренко'

WHERE StNo = 2

Условия поиска, которые могут быть заданы в предложении WHERE оператора UPDATE, в точности соответствуют условиям поиска, доступным в операторах SELECT и DELETE.

Как и оператор DELETE, оператор UPDATE может одновременно обновить несколько строк, соответствующих условию поиска.

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

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

 

Определение структуры данных в SQL

В реляционной базе данных наиболее важным элементом ее структуры является таблица. В многопользовательской базе данных основные таблицы, как правило, создает администратор, а пользователи просто обращаются и ним в процессе работы. При работе с базой данных часто оказывается удобным создавать собственные таблицы и хранить в них собственные данные, а также данные, прочитанные из других таблиц. Такие таблицы могут быть временными и существовать только в течение одного интерактивного SQL‑сеанса, но могут сохраняться и в течение нескольких недель или даже месяцев.

Создание таблицы (оператор CREATE TABLE)

Оператор CREATE TABLE, синтаксис которого изображен ниже, определяет новую таблицу. Различные предложения оператора задают элементы определений таблицы. следует также помнить, что не все параметры стандарта SQL2 присутствуют во всех СУБД.

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

CREATE TABLE имя_таблицы(

определение столбцов

имя_столбца тип_данных [DEFAULT значение] [NOT NULL],…

определение первичного ключа

PRIMARY KEY(имя_столбца,…),

определение внешних ключей

FOREIGN KEY имя_ограничения (имя_столбца,…)

REFERENCE имя_таблицы

[ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]

[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION],

условие уникальности данных

UNIQUE(имя_столбца,…),

условие проверки

CHECK(условие_поиска)

)

Определения столбцов. Столбцы новой таблицы задаются в операторе CREATE TABLE. Определения столбцов представляют собой заключенный в скобки список, элементы которого отделены друг от друга запятыми. Порядок следования определений столбцов в списке соответствует расположению столбцов в таблице. Каждое такое определение содержит следующую информацию:

1. Имя столбца, которое используется для ссылки на столбец в оператора SQL. Каждый столбец в таблице должен иметь уникальное имя, но' разных таблицах имена столбцов могут совпадать.

2. Тип данных столбца, показывающий, данные какого вида хранятся в столбце.

3. Указание на то, обязательно ли столбец должен содержать данные. Предложение NOT NULL предотвращает занесение в столбец значений NULL, в противном случае значения NULL допускаются.

4. Значение по умолчанию для столбца СУБД, которое заносится в столбец в том случае, если в операторе INSERT для таблицы не определено значение данного столбца.

Определения первичного и внешнего ключей. Кроме определений столбцов таблицы, в операторе CREATE TABLE указывается информация о первичном ключе таблицы и о ее связях с другими таблицами базы данных Эта информация содержится в предложениях PRIMARY KEY и FOREIGN KEY.

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

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

1. столбец или столбцы создаваемой таблицы, которые образуют внешний ключ;

2. таблица, связь с которой создает внешний ключ. Это таблица-предок;

3. необязательное имя для этого отношения; оно не используется в операторах SQL, но может появляться в сообщениях об ошибках и потребуется в дальнейшем, если будет необходимо удалить внешний ключ;

4. как СУБД должна обращаться со значениями NULL в одном или нескольких столбцах внешнего ключа при связывании его со строками таблицы-предка;

5. необязательное правило удаления для данного отношения (CASCADE, SET NULL, SET DEFAULT или NO ACTION), которое определяет действие, предпринимаемое при удалении строки-предка;

6. необязательное правило обновления для данного отношения, которое определяет действие, предпринимаемое при обновлении первичного ключа в строке-предке;

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

Например, создать таблицу Students.

CREATE TABLE Students (

StNo INT NOT NULL,

GrNo INT NOT NULL,

StName CHAR(30) NOT NULL,

CityNo INT,

PRIMARY KEY (StNo),

FOREIGN KEY Students_Groups(GrNo)

REFERENCES Groups,

FOREIGN KEY Students_Cities(CityNo)

REFERENCES Cities,

CHECK(CHAR_LENGTH(StName)>10)

)

 

Удаление таблицы (оператор DROP TABLE)

Таблицы можно удалить из базы данных посредством оператора DROP TABLE.

DROP TABLE имя_таблицы CASCADE | RESTRICT

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

Стандарт SQL2 требует, чтобы оператор DROP TABLE включал в себя либо параметр CASCADE, либо RESTRICT, которые определяют, как влияет удаление таблицы на другие объекты базы данных. Если задан параметр RESTRICT и в базе данных имеются объекты, которые содержат ссылку на удаляемую таблицу, то выполнение оператора DROP TABLE закончится неуспешно. В большинстве коммерческих СУБД допускается применение оператора DROP TABLE без каких-либо параметров.

 

Изменение определения таблицы (оператор ALTER TABLE)

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

1. добавить в таблицу определение столбца;

2. изменить значение по умолчанию для какого-либо столбца;

3. добавить или удалить первичный ключ таблицы;

4. добавить или удалить новый внешний ключ таблицы;

5. добавить или удалить условие уникальности;

6. добавить или удалить условие проверки.

 

ALTER TABLE имя_таблицы

ADD определение_столбца

ALTER имя_столбца SET DEFAULT значение | DROP DEFAULT

DROP имя_столбца CASCADE | RESTRICT

ADD определение_первичного_ключа

ADD определение_внешнегого_ключа

ADD условие_уникальности_данных

ADD условие_проверки

DROP CONSTRAINT имя_ограничения CASCADE | RESTRICT

 

Определения доменов

В стандарте SQL2 формально определение домена реализовано как часть определения базы данных. Согласно этому стандарту, домен является именованной…   11.4.5 Индексы (операторы CREATE/DROP INDEX)

Понятие представления.

 

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

 

Преимущества представлений

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

Недостатки представлений

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

Представления в SQL.

Оператор CREATE VIEW, синтаксис которого изображен ниже, используется для создания представлений. В нем указываются имя представления и запрос,… CREATE VIEW имя_представления (имя_столбца,…) AS запрос При необходимости в операторе CREATE VIEW можно задать имя для каждого столбца создаваемого представления. Если…

Удаление представления (оператор DROP VIEW)

В стандарте SQL2 было формально закреплено использование оператора DROP VIEW для удаления представлений. В нем также детализированы правила удаления представлений, на основе которых были созданы другие представления.

DROP VIEW имя_представления CASCADE | RESTRICT


Системный каталог (самостоятельное изучение)

Понятие системный каталог

При обработке операторов SQL СУБД постоянно обращается к данным системного каталога. Например, чтобы обработать двухтабличный оператор SELECT, СУБД… 1. проверить, существуют ли две указанные таблицы; 2. убедиться, что пользователь имеет разрешение на доступ к ним;

Содержимое системного каталога

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

Информационная схема в стандарте SQL2

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

табл. 11.1 Идеализированный системный каталог, описанный в стандарте SQL2

 

Системная таблица Содержимое
USERS Одна строка для каждого идентификатора пользователя в каталоге
SCHEMATA Одна строка для каждой информационной схемы в каталоге
DATA_TYPE_DESCRIPTOR Одна строка для каждого домена или столбца, имеющего какой-то тип данных
DOMAINS Одна строка для каждого домена
DOMAIN_CONSTRAINTS Одна строка для каждого ограничительного условия, наложенного на домен
TABLES Одна строка для каждой таблицы или представления
VIEWS Одна строка для каждого представления
COLUMNS Одна строка для каждого столбца в каждом определении таблицы или представления
VIEW_TABLE_USAGE Одна строка для каждой таблицы, на которую имеется ссылка в каком-либо определении представления (если определением представления является многотабличный запрос, каждая таблица будет представлена отдельной строкой)
VIEW_COLUMN_USAGE Одна строка для каждого столбца, на который имеется ссылка в каком-либо представлении
TABLE_CONSTRAINTS Одна строка для каждого ограничительного условия, заданного в каком-либо определении таблицы
KEY_COLUMN_USAGE Одна строка для каждого столбца, на который наложено условие уникальности и который присутствует в определении первичного или внешнего ключа (если в определении ключа или условия уникальности указано несколько столбцов, то это определение будет представлено несколькими строками)
REFERENTIAL_CONSTRAINTS Одна строка для каждого определения внешнего ключа, присутствующего в определении таблицы
CHECK_CONSTRAINTS Одна строка для каждого условия проверки, заданного в определении таблицы
CHECK_TABLE_USAGE Одна строка для каждой таблицы, на которую имеется ссылка в условии проверки, ограничительном условии для домена или утверждении
CHECK_COLUMN_USAGE Одна строка для каждого столбца, на который имеется ссылка в условии проверки, ограничительном условии для домена или утверждении
ASSERTIONS Одна строка для каждого заданного утверждения
TABLE_PRIVILEGES Одна строка для каждой привилегии, предоставленной на какую-либо таблицу
COLUMN_PRIVILEGES Одна строка для каждой привилегии, предоставленной на какой-либо столбец
USAGE_PRIVILEGES Одна строка для каждой привилегии, предоставленной на какой-либо домен, набор символов и т.п.
CHARACTER_SETS Одна строка для каждого заданного набора символов
COLLATIONS Одна строка для каждой заданной последовательности сравнения
TRANSLATIONS Одна строка для каждого заданного преобразования
SQL_LANGUAGES Одна строка для каждого языка (например, COBOL, С и т.д.), поддерживаемого СУБД данного типа

 

Стандарт SQL2 не требует, чтобы СУБД поддерживали таблицы системного каталога, приведенные в табл. 11.1 или какие-либо иные. Вместо этого в стандарте SQL2 определен ряд представлений, основанных на этих системных таблицах. Данные представления содержат те объекты базы данных, которые должны быть доступны для рядового пользователя. (Эти представления системного каталога называются в стандарте информационной схемой). Для того чтобы СУБД соответствовала стандарту SQL2, она должна поддерживать эти представления. Такой подход дает пользователю стандартный способ получения информации о доступных ему объектах базы данных с помощью стандартных запросов к представлениям системного каталога.

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

Представления системного каталога, требуемые стандартом SQL2, приведены в табл. 11.2. В ней дается краткое описание информации, которая содержится в каждом представлении. В стандарте определены также три домена, которые .используются представлениями системного каталога и являются доступными для пользователей. Эти домены приведены в табл. 11.3.

табл. 11.2 Представления системного каталога, установленные стандартом SQL2

Представление в системном каталоге Содержимое
INFORMATION_SСНЕМА_CATALOG_NAME Одна строка с именем базы данных для каждого пользователя ("каталога" по терминологии стандарта SQL2), описываемого данной информационной схемой
SCHEMATA Одна строка для каждой информационной схемы в базе данных, принадлежащей текущему пользователю; содержит имя схемы, набор символов по умолчанию и т.д.
DOMAINS Одна строка для каждого домена, доступного текущему пользователю; содержит имя домена, базовый тип данных, набор символов, максимальную длину, степень, точность и т.д.
DOMAIN_CONSTRAINTS Одна строка для каждого ограничительного условия домена; содержит имя условия и его характеристики
TABLES Одна строка для каждой таблицы или представления, доступных пользователю; содержит имя и признак того, идет ли речь о таблице или представлении
VIEWS Одна строка для каждого представления, доступного пользователю; содержит имя, информацию о режиме контроля и возможности обновления.
COLUMNS Одна строка для каждого столбца, доступного пользователю; содержит имя столбца, имя таблицы или представления, которые содержат данный столбец, тип содержащихся в нем данных, степень, точность, набор символов и т.д.
TABLE_PRIVILEGES Одна строка для .каждой привилегии на таблицу, предоставленной пользователю или предоставленной им другому пользователю; содержит имя таблицы, тип привилегии, указание на то, кто предоставил привилегию, кому она предоставлена и имеет ли пользователь право предоставления этой привилегии
COLUMN_PRIVILEGES Одна строка для каждой привилегии на столбец, предоставленной пользователю или предоставленной им другому пользователю; содержит имя таблицы и столбца, тип привилегии, указание на то, кто предоставил привилегию, кому она предоставлена и имеет ли пользователь право предоставления этой привилегии
USAGE_PRIVILEGES Одна строка для каждой привилегии, предоставленной пользователю или пользователем на какой-либо домен, набор символов и т.п.
TABLE_CONSTRAINTS Одна строка на каждое ограничительное условие (первичный ключ, внешний ключ, условие уникальности или условие проверки), заданное для таблицы, которой владеет пользователь; содержит имя условия и таблицы, тип условия и его характеристики
REFERENTIAL_CONSTRAINTS Одна строка для каждого ссылочного ограничения (определения внешнего ключа) на таблицу, которой владеет пользователь; содержит имя ограничения, имя таблицы-потомка и имя таблицы-предка
CHECK__CONSTRAINTS Одна строка на каждое условие проверки для таблицы, которой владеет пользователь
KEY_COLUMN_USAGE Одна строка для каждого столбца первичного или внешнего ключа, на который (столбец) наложено ), условие уникальности и который входит в таблицу, принадлежащую пользователю; строка содержит имя таблицы, имя столбца и позицию столбца в ключе
ASSERTIONS Одна строка для каждого утверждения, которым владеет пользователь; содержит имя утверждения и его характеристики
CHARACTER_SETS Одна строка для каждого определения набора символов, доступного пользователю
COLLATIONS Одна строка для каждого определения последовательности сравнения, доступного пользователю
TRANSLATIONS Одна строка для каждого определения преобразования, доступного пользователю
VIEW_TABLE_USAGE Одна строка для каждой таблицы, на которую имеется ссылка в определениях представлений, принадлежащих пользователю; строка содержит имя таблицы
VIEW_COLUMN_USAGE Одна строка для каждого столбца, на который имеется ссылка в представлениях, принадлежащих пользователю; строка содержит имя столбца и таблицы, в которую входит столбец
CONSTRAINT_TABLE_ USAGE Одна строка для каждой таблицы, на которую имеется ссылка в условии проверки, условии уникальности, утверждении и определении внешнего ключа, принадлежащих пользователю
CONSTRAINT_COLUMN_ USAGE Одна строка для каждого столбца, на который имеется ссылка в условии проверки, условии уникальности, утверждении и определении внешнего ключа, принадлежащих пользователю
SQL_LANGUAGES Одна строка для каждого языка (например, COBOL, С и т.д.), поддерживаемого СУБД данного типа; в строке указывается уровень соответствия языка стандарту SQL2, тип поддерживаемого диалекта SQL и т.д.

 

табл. 11.3 Домены, определенные в стандарте SQL2

 

Системный домен Область значений домена
SQL_IDENTIFIER   Домен всех символьных строк переменной длины, которые являются допустимыми идентификаторами SQL согласно стандарту SQL2. Любое значение, взятое из этого (домена, является допустимым именем таблицы, именем столбца и т.д.
CHARACTER_DATA   Домен всех символьных строк переменной длины, имеющих длину от нуля до максимального значения, поддерживаемого данной СУБД. Значение, взятое из этого домена, является допустимой символьной строкой.
CARDINAL_NUMBER Домен всех неотрицательных чисел от нуля до максимального целого числа, с которым может работать данная СУБД. Значение, взятое из этого домена, является нулем или допустимым положительным числом.

 

Вот примеры нескольких запросов, используемых для извлечения информации о структуре базы данных из представлений системного каталога, определенных в стандарте SQL2:

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

SELECT TABLE_NAME

FROM TABLES

2. Вывести имя, позицию и тип данных для каждого столбца во всех представлениях.

SELECT TABLE_NAME, С.COLUMN_NAME, ORDINAL_POSITION, DATAJTYPE

FROM COLUMNS

WHERE (COLUMNS.TABLE_NAME IN (SELECT TABLE_NAME FROM VIEWS))

3. Определить, сколько столбцов имеется в таблице STUDENTS.

SELECT COUNT(*)

FROM COLUMNS

WHERE (TABLE_NAME = 'STUDENTS')

 

Литература:

 

1. Джеймс Р. Грофф, Пол Н. Вайнберг. SQL: полное руководство: пер.с англ. –К.: Издательская группа BHV, 2000.–608с. Стр. 295–346.

ЛЕКЦИЯ 12. Обеспечение безопасности БД

 

12.1 Общие положения

12.2 Методы обеспечения безопасности

12.3 Избирательное управление доступом

12.4 Обязательное управление доступом

12.5 Шифрование данных

12.6 Контрольный след выполняемых операций

12.7 Поддержка мер обеспечения безопасности в языке SQL

12.8 Директивы GRANT и REVOKE

12.9 Представления и безопасность

 

Общие положения

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

Методы обеспечения безопасности

В современных СУБД поддерживается один из двух широко распространенных подходов к вопросу обеспечения безопасности данных, а именно избирательный… 1. В случае избирательного управления некий пользователь обладает различными… 2. В случае обязательного управления, наоборот, каждому объекту данных присваивается некоторый классификационный…

Избирательное управление доступом

Избирательное управление доступом поддерживается многими СУБД. Избирательное управление доступом поддерживается в языке SQL. В общем случае система безопасности таких СУБД базируется на трех… 1. Пользователи. СУБД выполняет любое действия с БД от имени какого-то пользователя. Каждому пользователю…

Обязательное управление доступом

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

Шифрование данных

Для обсуждения основных концепций кодирования данных следует ввести некоторые новые понятия. Исходные (незакодированные) данные называются открытым…  

Контрольный след выполняемых операций

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

Поддержка мер обеспечения безопасности в языке SQL

 

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

 

Директивы GRANT и REVOKE

Механизм представлений языка SQL позволяет различными способами разделить базу данных на части таким образом, чтобы некоторая информация была скрыта… Обратите внимание, что создателю любого объекта автоматически предоставляются… Стандарт SQL1 определяет следующие привилегии для таблиц:

Представления и безопасность

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

Доступ к базе данных

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

Кластеризация

Нельзя завершить этот краткий обзор без упоминания технологии кластеризации данных. В ее основе лежит принцип как можно более близкого физического… 1. Если страницы р1 и р2 совпадают, то для доступа к записи r2 не потребуется… 2. Если страницы р1 и р2 не совпадают, но физически размещаются достаточно близко, например смежные страницы, то для…

Индексирование

  рис. 13.2 Индексирование файла поставщиков по полю CITY файла городов.  

Плотное и неплотное индексирование

Эту идею можно развить дальше, если вспомнить, что данные в каждом хранимом файле находятся в единой "физической" последовательности на… рис. 13.4, где для простоты предполагается, что на каждой странице может…  

Структуры типа Б-дерева

Одним из наиболее важных и распространенных индексов является структура типа Б-дерева (B-tree). Причина необходимости создания структуры типа Б-дерева заключается в желании… Структура типа Б-дерева является частным случаем индекса древовидного типа и впервые описана в статье Байера (Вауег) и…

Хеширование

Хешированием, хеш-адресацией или хеш-индексированием называется технология быстрого прямого доступа к хранимой записи на основе заданного значения… Ниже перечислены основные черты этой технологии: 1. каждая хранимая запись базы данных размещается по адресу, который вычисляется с помощью специальной хеш-функции на…

ЛЕКЦИЯ 14. Оптимизация запросов

 

14.1 Оптимизация в реляционных СУБД.

14.2 Пример оптимизации реляционного выражения

14.3 Обзор процесса оптимизации

14.4 Преобразование выражений

Оптимизация в реляционных СУБД.

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

Пример оптимизации реляционного выражения

 

Начнем изложение с простого примера, дающего представление о результатах, которые можно получить с помощью оптимизации. Рассмотрим запрос "Получить список фамилий студентов, учащихся в группе А-98-51". Алгебраическая запись этого запроса такова:

((Students JOIN Groups) WHERE GrName = 'А-98-51') [StName]

Предположим, что база данных содержит информацию о 100 группах и 10000 студентов, только 30 из которых обучаются в группе А-98-51. В таком случае, если система будет вычислять выражение прямо (т.е. вообще без оптимизации), то последовательность выполняемых действий будет выглядеть так:

1. Соединение отношений Students и Groups (по атрибуту GrNo). На этом этапе считывается информация о 10000 студентов и 10000 раз считывается информация о 100 группах (один раз для каждого студента). После этого создается промежуточный результат, состоящий из 10000 соединенных кортежей.

2. Выборка кортежей с данными только о группе А-98-51 из результата, полученного на этапе 1. На этом этапе создается новое отношение, которое состоит из 30 кортежей.

3. Проекция результата, полученного на этапе 2, по атрибуту StName. На этом этапе создается требуемый результат, состоящий из 30 кортежей.

Показанная ниже процедура эквивалентна описанной в том смысле, что обязательно создаст тот же конечный результат, но более эффективным способом:

1. Выборка кортежей с данными только о группе А-98-51 из отношения Groups. На этом этапе выполняется чтение 100 кортежей и создается результат, состоящий только из 1 кортежа.

2. Соединение результата, полученного на этапе 1, с отношением Students (по атрибуту GrNo). На этом этапе выполняется считывание данных о 10000 студентов и 10000 раз считывается информация о группе А-98-51, полученная на 1 этапе. Результат содержит 30 кортежей.

3. Проецирование результата, полученного на этапе 2, по атрибуту StName (аналогично этапу 3 предыдущей последовательности действий). Требуемый результат содержит 30 кортежей.

Первая из показанных процедур выполняет в общем 1010000 операций ввода-вывода кортежа, в то время как вторая процедура выполняет только 20000 операции ввода-вывода. Следовательно, если принять "количество операции ввода-вывода кортежа" в качестве меры производительности, то вторая процедура в 50 раз эффективнее первой. (На практике мерой производительности служит количество операций ввода-вывода страницы, а не одного кортежа, но для данного примера эту поправку можно игнорировать.)

 

Обзор процесса оптимизации

Стадия 1. Преобразование запроса во внутреннюю форму

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

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

Например, на рисунке показано дерево рассматриваемого выше в этой главе запроса ("Получить список фамилий студентов, учащихся в группе А-98-51").

 

рис. 14.1. Дерево запроса "Получить список фамилий студентов, учащихся в группеА-98-51"

 

Стадия 2. Преобразование в каноническую форму

Замечание о канонической форме. Понятие канонической формы употребляется, во многих разделах математики и связанных с ней дисциплин. Каноническая… Чтобы преобразовать результаты стадии 1 в некоторую эквивалентную, но более…  

Стадия 3. Выбор потенциальных низкоуровневых процедур

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

Стадия 4. Генерация планов вычисления запроса и выбор плана с наименьшей стоимостью

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

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

 

Преобразование выражений

Выборки и проекции

(A WHERE выборка_1) WHERE выборка_2 эквивалентно выражению A WHERE выборка_1 AND выборка_2

Распределительный закон

F (А О В) º f (А) О f (В). В реляционной алгебре операция выборки распределяется по операциям… Далее приведено несколько более специфических примеров распределительного закона, на этот раз с операцией проекции.…

Коммутативность и ассоциативность

А О В º В О А Например, в обычной арифметике операции умножения и сложения являются… Перейдем к ассоциативности. Принято считать, что бинарная операция О является ассоциативной, если для всех А, В и С…

Идемпотентность

Еще одним важным правилом является закон идемпотентности. Идемпотентной называют такую бинарную операцию О, для которой для всех А выполняется равенство

A О А = А.

Можно ожидать, что свойство идемпотентности также может быть полезным в процессе трансформации выражений. В реляционной алгебре операции объединения, пересечения и соединения являются идемпотентными, а операции деления и вычитания – нет.

 

Вычисляемые скалярные выражения

Предметом применения законов трансформации являются не только реляционные выражения. Например, уже было показано, что некоторые законы трансформации применимы и к арифметическим выражениям. Ниже приведен пример. Выражение

А * В + А * С

можно трансформировать в выражение

А * (В + С)

вследствие того, что операция умножения "*" распределяется по операции сложения "+". Оптимизатор реляционных выражений должен обладать информацией о подобных преобразованиях, так как он учитывает вычисляемые скалярные выражения в контексте операций EXTEND и SUMMARIZE.

Говорят, что бинарная операция О распределяется по бинарной операции О, если для всех А, В и С истинно равенство

A Ъ (B О C) = (A Ъ B) O ( A Ъ C )

(для приведенного выше арифметического примера замените Ъ на "*", а О на "+").

 

Условия

А>В AND В>3 (которое может быть частью запроса) абсолютно эквивалентно выражению А > В AND В > 3 AND A > 3

Семантические преобразования

(Students JOIN Groups) [StName] Данное соединение относится к соединениям типа… Students [StName]

Статистики базы данных

На стадиях 3 и 4 общего процесса оптимизации (они называются стадиями "выбора пути доступа") используются так называемые статистики базы данных, которые хранятся в каталоге.

 

Литература:

 

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

ЛЕКЦИЯ 15. Восстановление после сбоев

 

15.1 Понятие восстановления системы

15.2 Транзакции

15.3 Алгоритм восстановления после сбоя системы

15.4 Параллелизм. Проблемы параллелизма

15.5 Понятие блокировки

15.6 Решение проблем параллелизма

15.7 Тупиковые ситуации

15.8 Способность к упорядочению

15.9 Уровни изоляции транзакции

15.10 Поддержка в языке SQL

 

Понятие восстановления системы

 

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

 

Транзакции

Понятие транзакции

В приведенном примере предполагается, что речь идет об одиночной, атомарной операции. На самом деле добавление новой оценки в таблицу Marks – это… Из этого следует, что недопустимо, чтобы одно из обновлений было выполнено, а… Системный компонент, обеспечивающий атомарность (или ее подобие), называется администратором транзакций (или…

Восстановление транзакции.

Случаи установки точки фиксации: 1. Все обновления, совершенные программой с тех пор, как установлена… 2. Все позиционирование базы данных утеряно, и все блокировки кортежей реализованы. Позиционирование базы данных…

Свойства АСИД.

1. Атомарность. Транзакции атомарны (выполняется все или ничего). 2. Согласованность. Транзакции защищают базу данных согласованно. Это… 3. Изоляция. Транзакции отделены одна от другой. Это означает, что, если даже будет запущено множество конкурирующих…

Алгоритм восстановления после сбоя системы

Существует два вида глобальных нарушений: 1. Отказы системы (например, сбои в питании), поражающие все выполняющиеся в… 2. Отказы носителей (например, поломка головок дискового накопителя), которые могут представлять угрозу для базы…

Восстановление после отказов системы

Более того, возможно, потребуется повторно выполнить определенную успешно завершившуюся до аварийного отказа транзакцию при перезагрузке системы,… Для определения во время перезагрузки, какую транзакцию отменить, а какую…  

Параллелизм. Проблемы параллелизма

Каждый метод управления параллелизмом предназначен для решения некоторой конкретной задачи. Тем не менее, при обработке правильно составленных… 1. проблема потери результатов обновления; 2. проблема незафиксированной зависимости;

Проблема потери результатов обновления

  Транзакция A Время Транзакция B Извлечение кортежа р t1 – – …   рис. 15.2. Потеря в момент времени t4 результатов обновления, выполненного транзакцией A.

Проблема незафиксированной зависимости

В первом примере (рис. 15.3) транзакция A в момент времени t2 встречается с невыполненным обновлением (оно также называется невыполненным…   Транзакция A Время Транзакция B …  

Проблема несовместимого анализа

табл. 15.1 Остатки на счетах до выполнения транзакций.   Счет СЧЕТ 1 СЧЕТ 2 СЧЕТ 3 …   Транзакция A Время Транзакция B Извлечение кортежа СЧЕТ 1: СУММА =…

Понятие блокировки

Описанные выше проблемы могут быть разрешены с помощью методики управления параллельным выполнением процессов под названием блокировка. Ее основная… Предположим, что в системе поддерживается два типа блокировок: блокировка без… 1. Если транзакция A блокирует кортеж р без возможности взаимного доступа (Х‑блокировка), то запрос другой…

Решение проблем параллелизма

 

Рассмотрим решение проблем параллелизма с помощью механизма блокировок.

 

Проблема потери результатов обновления.

  рис. 15.7. Хотя обновления не утрачиваются, но в момент времени t4 возникает…  

Проблема незафиксированной зависимости.

  Транзакция A Время Транзакция B – t1 Обновление кортежа р (задание X-блокировки…   рис. 15.8. Транзакция A предохраняется от выполнения операций с незафиксированным изменением в момент времени t2.

Проблема несовместимого анализа

  СЧЕТ 1 СЧЕТ 2 СЧЕТ 3 Транзакция A Время Транзакция B …   рис. 15.10. Проблема несовместимого анализа разрешается, но в момент времени t7 возникает тупиковая ситуация.

Тупиковые ситуации

  Транзакция A Время Транзакция B Блокировка р1 без взаимного доступа t1 – …   рис. 15.11. Пример тупиковой ситуации.

Способность к упорядочению

Чередующееся выполнение заданного множества транзакций будет верным, если оно упорядочено, т.е. при его выполнении будет получен такой же результат,… 1. Отдельные транзакции считаются верными, если при их выполнении база данных… 2. Выполнение транзакций одна за другой в любом последовательном порядке также является верным. При этом под…

Уровни изоляции транзакции

 

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

Уровень изоляции обычно рассматривается как некоторое свойство транзакции. В реальных СУБД может быть реализовано различное количество уровней изоляции.

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

 

Поддержка в языке SQL

 

SQL поддерживает операции COMMIT и ROLLBACK для фиксации и отката транзакции соответственно.

Специальный оператор SET TRANSACTION используется для определения некоторых характеристик транзакции, которую нужно будет инициировать, такие, как режим доступа и уровень изоляции.

В стандарте языка SQL не предусмотрена поддержка явным образом возможности блокировки (фактически, блокировка в нем вообще не упоминается). Блокировки накладываются неявно, при выполнении операторов SQL.


Литература:

 

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

ЛЕКЦИЯ 16. Технологии СУБД

 

16.1 Распределенные базы данных

16.2 Принципы функционирования распределенной БД

16.3 Системы типа клиент/сервер

16.4 Серверы баз данных

 

Распределенные базы данных

Предварительные замечания.

1. каждый узел обладает своими собственными системами баз данных; 2. узлы работают согласованно, поэтому пользователь может получить доступ к… Из этого следует, что так называемая "распределенная база данных" на самом деле является типом виртуального…

Принципы функционирования распределенной БД

 

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

1. Изложенный фундаментальный принцип приводит к следующему набору правил и целе9ф:Локальная автономия;Независимость от центрального узла;Непрерывное функционирование;Независимость от расположения

2. Независимость от фрагментации;

3. Независимость от репликации;

4. Обработка распределенных запросов;

5. Управление распределенными транзакциями;

6. Независимость от аппаратного обеспечения;

7. Независимость от операционной системы;

8. Независимость от сети;

9. Независимость от СУБД.

 

Локальная автономия

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

 

Независимость от центрального узла

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

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

 

Непрерывное функционирование

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

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

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

 

Независимость от расположения

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

 

Независимость от фрагментации

Существует два основных типа фрагментации – горизонтальная и вертикальная, которые связаны с реляционными операциями выборки и проекции… Предполагается без утраты общности, что все фрагменты данного отношения…  

Независимость от репликации

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

 

Обработка распределенных запросов.

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

 

Управление распределенными транзакциями.

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

 

Независимость от аппаратного обеспечения.

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

 

Независимость от операционной системы.

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

 

Независимость от сети.

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

 

Независимость от СУБД.

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

 

Распространение обновления

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

Серверы баз данных

Обычно для обозначения всей СУБД, основанной на архитектуре "клиент-сервер", включая и серверную, и клиентскую части используют термин… Доступ к базе данных от прикладной программы или пользователя производится… В типичном на сегодняшний день случае на стороне клиента СУБД работает только такое программное обеспечение, которое…

ЛЕКЦИЯ 17. Современные постреляционные модели БД

 

17.1 Системы управления базами данных следующего поколения

17.2 Ориентация на расширенную реляционную модель

17.3 Объектно-ориентированные СУБД

 

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

В этом разделе очень кратко рассматриваются основные направления исследований и разработок в области так называемых постреляционных систем, т.е.… Хотя отнесение СУБД к тому или иному классу в настоящее время может быть… 1. Направление Postgres. Основная характеристика: максимальное следование (насколько это возможно с учетом новых…

Ориентация на расширенную реляционную модель

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

Абстрактные типы данных

Одной из наиболее известных СУБД третьего поколения является система Postgres, (создатель этой системы М.Стоунбрекер).Одно свойство системы Postgres сближает ее со свойствами объектно-ориентированных СУБД. В Postgres допускается хранение в полях отношений данных абстрактных, определяемых пользователями типов.

 

Генерация систем баз данных, ориентированных на приложения

Идея очень проста: никогда не станет возможно создать универсальную систему управления базами данных, которая будет достаточна и не избыточна для применения в любом приложении. Например, если посмотреть на использование универсальных коммерческих СУБД, то можно легко увидеть, что по крайней мере в 90% случаев применяется не более чем 30% возможностей системы. Тем не менее, приложение несет всю тяжесть поддерживающей его СУБД, рассчитанной на использование в наиболее общих случаях.

Поэтому очень заманчиво производить не законченные универсальные СУБД, а нечто вроде компиляторов (сompiler compiler), позволяющих собрать систему баз данных, ориентированную на конкретное приложение (или класс приложений). Существуют как минимум два экспериментальных прототипа таких систем – Genesis и Exodus.

 

Поддержка исторической информации и темпоральных запросов

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

Объектно-ориентированные СУБД

Направление объектно-ориентированных баз данных (ООБД) возникло сравнительно давно. Публикации появлялись уже в середине 1980-х. Однако наиболее… В компьютерных технологиях сегодня отчетливо просматривается стремление с… Использование объектного подхода к проектированию систем поднимает роль ООСУБД как средства для наиболее естественного…

Модель данных ООБД

Базовыми примитивами являются объекты и литералы. Каждый объект имеет уникальный идентификатор, литерал не имеет идентификатора. 1. Объекты и литералы различаются по типу. Все элементы одного типа имеют… 2. Состояние объекта определяется набором значений, реализуемых множеством свойств. Этими свойствами могут быть…

Идентификатор объекта

Каждый объект в базе данных уникален. Существует несколько подходов для идентификации объекта. Самый простой – присвоить ему уникальный номер (OID – object identificator) в базе и никогда больше не повторять этот номер, даже если пре базах могут оказаться объекты одного класса, а уникальность номеров соблюдается только в пределах одной базы. Преимущество подхода – в простоте извлечения объектов нужного класса: объекты одного класса будут иметь идентификатор, имеющий общую часть. Идеальный же вариант – использование OID, состоящего из трех частей: номер базы, номер класса, номер объекта. Однако и при этом остается вопрос о том, как обеспечить уникальность номеров баз и классов на глобальном уровне – при использовании ООСУБД на различных платформах, в разных городах и странах.

 

Новые типы данных

табл. 17.1. Различие атрибутов типа и объекта   Атрибуты типа Значение атрибутов типа …  

Оптимизация ядра СУБД

Ядро ООСУБД оптимизировано для операций с объектами. Естественными операциями для него являются кэширование объектов, ведение версий объектов, разделение прав доступа к конкретным объектам. Ядро объектно-реляционной СУБД остается реляционным, а "объектность" реализуется в виде специальной надстройки. Как следствие, ООСУБД свойственно более высокое быстродействие на операциях, требующих доступа и получения данных, упакованных в объекты, по сравнению с реляционными СУБД, для которых необходимость выборки связных данных ведет к выполнению дополнительных внутренних операций.

Язык СУБД и запросы

Вторая, сравнительно новая (применяется с 1998 года) группа языков запросов базируется на XML. Собирательное название языков этой группы — XML QL…  

Транзакции в ООСУБД

Короткие транзакции характеризуются малым временем выполнения; они могут существовать только в рамках сеанса работы с ООСУБД. Это наиболее простой… Длинные транзакции предназначены для увеличения производительности при… Вложенные транзакции по принципу функционирования аналогичны коротким. В процессе выполнения одной транзакции…

Блокировки в ООСУБД

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

Короткие блокировки (short lock) предназначены для обеспечения последовательного доступа к данных при многопользовательском режиме работы. Они автоматически выполняются во время выполнения коротких транзакций.

Продолжительные блокировки (persistent lock) обеспечивают блокирование объектов на продолжительное время – часы, дни, недели. Применяются совместно с длинными транзакциями. При этом объект может быть заблокирован несколькими способами: с исключением снятия другим процессом (hard lock); с возможностью снятия другим процессом (soft lock); по конкретным операциям.

 

Ведение версий

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

Физические хранилища

1. системное хранилище (system store) используется для хранения системы классов, создается на этапе установки Jasmine и содержит информацию о… 2. пользовательское хранилище (user store) служит для хранения… 3. рабочее хранилище (work store) предназначено для поддержки временной информации в ходе сеанса работы, например…

– Конец работы –

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Курс лекций В настоящем курсе рассматриваются вопросы организации баз данных и знаний

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

КУРС ЛЕКЦИЙ ПО ИНФОРМАТИКЕ Тема: Базы данных, Банки Данных, Системы Управления Базами Данных — СУБД
ГОУ ВПО ВОЛОГОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Факультет промышленного менеджмента...

КУРС ЛЕКЦИЙ по дисциплине Железобетонные конструкции Курс лекций. Для специальностей «Архитектура» и «Промышленное и гражданское строительство»
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ... ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ...

КОНСПЕКТ ЛЕКЦИЙ По курсу статистика – для заочной формы обучения ЭКЗАМЕНАЦИОННЫЕ ВОПРОСЫ ПО КУРСУ СТАТИСТИКА 1
По курсу статистика для заочной формы обучения... ЭКЗАМЕНАЦИОННЫЕ ВОПРОСЫ ПО КУРСУ СТАТИСТИКА Повторить общую теорию статистики часть ряды динамики и индексы...

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

КОНСПЕКТ ЛЕКЦИЙ по курсу Архитектурное материаловедение Конспект лекций по курсу Архитектурное материаловедение
ФГОУ ВПО ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ... ИНСТИТУТ Архитектуры и искусств... КАФЕДРА ИНЖЕНЕРНО строительных ДИСЦИПЛИН...

Курс офтальмологии КУРС ЛЕКЦИЙ ТЕМАТИЧЕСКИЙ ПЛАН ЛЕКЦИЙ 1. Введение. Офтальмология и ее место среди других медицинских дисциплин. История офтальмологии. Анатомо-физиологические особенности органа зрения. 2. Зрительные функции и методы их исследования
Курс офтальмологии... КОРОЕВ О А...

Общее понятие о базах данных. Основные понятия систем управления базами данных. Модели данных. 10
Сетевые технологии обработки данных Компоненты вычислительных сетей... Принципы организации и основные топологии вычислительных сетей Принципы... Сетевой сервис и сетевые стандарты Средства использования сетевых сервисов...

МАСТЕРСКАЯ ПРАКТИЧЕСКОГО ПСИХОЛОГА КУРС ЛЕКЦИЙ Введение в общую психодиагностику. Курс лекций
ИНСТИТУТ ИНФОРМАТИЗАЦИИ СОЦИАЛЬНЫХ СИСТЕМ... МАСТЕРСКАЯ ПРАКТИЧЕСКОГО ПСИХОЛОГА...

Краткий курс механики в качестве программы и методических указаний по изучению курса Физика Краткий курс механики: Программа и методические указания по изучению курса Физика / С
Федеральное агентство железнодорожного транспорта... Омский государственный университет путей сообщения...

Институциональная экономика. Курс лекций Тема 1. Введение в курс Институциональная экономика
Тема Введение в курс Институциональная экономика... История экономических учений Зарождение...

0.035
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам