Основные понятия теории баз данных.

Автор: Пользователь скрыл имя, 18 Ноября 2012 в 14:40, лекция

Описание работы

Лекции с глоссарием по базам данным

Работа содержит 1 файл

Лекции_БД_ВМЕСТЕ С ГЛОССАРИЕМ.doc

— 1.52 Мб (Скачать)

Как коррелированные, так и некоррелированные  запросы бывают трех типов, в зависимости  от элементов в предложении WHERE внешнего запроса.

Подзапросы, которые не возвращают ни одного или возвращают несколько  элементов (начинаются с IN или с оператора сравнения, содержат ключевые слова ANY или ALL).

Подзапросы, которые возвращают единственное значение (начинаются с простого оператора  сравнения).

Подзапросы, которые представляют собой тест на осуществление (начинаются с EXISTS).

 

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

 

SELECT Фамилия, Должность

FROM Сотрудники

WHERE Должность IN (

SELECT Должность

FROM Сотрудники

WHERE Фамилия = ‘Ребров’)

Подзапросы, возвращающие набор значений.

 

Подзапрос может  не возвращать значения или возвращать несколько значений. Эта группа включает подзапросы, начинающиеся с IN, NOT IN или оператора сравнения  с ключевыми словами ANY или ALL.

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

 

Начало операторов SELECT, INSERT, UPDATE, DELETE или подзапроса:

 

WHERE выражение [NOT] IN (подзапрос)

[Конец операторов SELECT, INSERT, UPDATE или  подзапроса]

 

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

 

Когда тот или иной подзапрос  начинается с ключевого слова EXISTS, этот подзапрос функционирует как  “тест на существование”. Ключевое слово EXISTS в предложении WHERE выполняет  проверку на существование (или несуществование) данных, которые удовлетворяют критериям соответствующего подзапроса, т.е. EXISTS выполняет проверку на наличие или отсутствие “пустого набора” строк. Если подзапрос возвращает хотя бы одну строку, этот результат оценивается как “истина”. Если подзапрос возвращает пустой набор, этот результат оценивается как “ложь”.

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

 

Начало операторов SELECT, INSERT, UPDATE, DELETE или подзапроса

WHERE выражение [NOT] EXISTS (подзапрос)

[Конец операторов SELECT, INSERT, UPDATE или подзапроса]

 

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

 

Начало операторов SELECT, INSERT, UPDATE, DELETE или подзапроса

WHERE выражение оператор_сравнения  [ANY | ALL] (подзапрос)

[Конец операторов SELECT, INSERT, UPDATE или  подзапроса]

 

Что такое ANY и ALL. Если в качестве примера воспользоваться операторами сравнения “ > “, то “ > ALL” означает “больше, чем каждое значение” (другими словами, “больше, чем наибольшее значение”). Таким образом, “ > ALL (1,2,3) ” означает “больше, чем 3 ”. “ > ANY ” означает “больше, чем, по крайней мере, одно значение» (другими словами, “больше, чем наименьшее значение”). Таким образом, “ > ANY (1,2,3) ” означает “больше, чем 1”.

Таблица 10.2 иллюстрирует различие между  ключевыми словами ANY и ALL.

 

Таблица 10.2 Различие между ключевыми словами ANY и ALL

ALL

Результат

ANY

Результат

> ALL (1,2,3)

>3

> ANY (1,2,3)

>1

< ALL (1,2,3)

<1

< ANY (1,2,3)

<3

= ALL (1,2,3)

=1 или =2 или =3

= ANY (1,2,3)

=1 или =2 или =3


 

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

SELECT  DISTINCT Оклад, Фамилия, Должность,  Отдел

FROM Сотрудники

WHERE Оклад > ANY ( SELECT Оклад FROM Сотрудники WHERE Отдел = 30)

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

 

Пример. Необходимо узнать фамилии сотрудников, должность и оклад которых совпадают с данными сотрудника Данина:

SELECT  DISTINCT Оклад, Должность, Фамилия

FROM Сотрудники

WHERE (Должность, Оклад) = (SELECT Должность,  Оклад  

FROM Сотрудники WHERE Фамилия = ‘Данин’)

Составные запросы с несколькими подзапросами.

 

Пример. Составить список сотрудников, должность которых совпадает  с должностью сотрудника Реброва  или получающих столько же или  более чем сотрудник Данин:

SELECT Оклад, Должность, Фамилия

FROM Сотрудники

WHERE Должность = ANY(SELECT Должность

FROM Сотрудники WHERE Фамилия = ‘Ребров’

OR Оклад >= ALL (SELECT Должность

FROM Сотрудники WHERE Фамилия = ‘Данин’)

ORDER BY Должность, Оклад

 

 

 

Пример. Найти фамилию и занимаемую должность всех сотрудников отдела 10, должность которых совпадает с должностью какого-либо сотрудника отдела торговли:

SELECT Должность, Фамилия

FROM Сотрудники

WHERE Должность IN (SELECT Должность 

FROM Отелы, Сотрудники 

WHERE Назв_отдела = ‘Торговля’ and

Сотрудники.Отдел = Отделы.Отдел)

Синхронизация повторяющихся подзапросов

 

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

Select Отдел, Фамилия, Оклад

From Сотрудники S

Where Оклад > (Select AVG (оклад)

From Сотрудники

Where отдел = S.отдел)

 

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

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

Последовательность действий СУБД при обработке вложенного подзапроса с синхронизацией:

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

Номер отдела из этой строки передается во вложенный подзапрос и используется вместо S.отдел.

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

Средний оклад передается в основной запрос и используется в предложении  Where.

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

 

 

 

 

 

 

 

Найти данные о сотрудниках, работающих в Твери, должность которых такая  же, как у Евдокимова:

Select Фамилия, Оклад, Должность,  Город

From Сотрудники, Отделы

Where Город = “Тверь” AND

Сотрудники.отдел = Отделы.отдел AND

Должность = ANY (Select Должность

From Сотрудники

Where Фамилия = “Евдокимов”)

ORDER BY Фамилия

Комбинация нескольких команд Select

 

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

 

  • UNION – объединение. Результат выполнения – не дублирующиеся записи, полученные в результате первого и второго запроса.
  • INTERSECT – пересечение. Результат – записи, полученные как в первом, так и во втором запросах.
  • EXCEPT – исключение. Результат – записи, извлеченные в первом запросе за исключением записей, полученных во втором запросе.

 

Пример. Выдать сотрудников с фамилией Иванов и получающих больше, чем 100 рублей:

Select Фамилия, Оклад

From Сотрудники

Where Фамилия = ‘Иванов’

UNION

Select Фамилия, Оклад

From Сотрудники

Where Оклад > 100

 

 

 

 

 

Замечание:

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

 

    1. Индексы

 

Служат для повышения скорости обработки таблиц. Для создания индексов существует команда CREATE INDEX:

 

CREATE INDEX имя ON имя таблицы (столбец1{, столбец2, …})

 

Достоинства: ускоряется поиск; недостатки: требуется дополнительное дисковое пространство.

 

Пример. Создать индекс по столбцу  Фамилия для таблицы Сотрудники:

 

CREATE INDEX Сотр_фам ON Сотрудники (Фам):

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

Найдем данные о сотруднике Егорове:

 

Select *From Сотрудники

Where Фамилия = ‘Егоров’

 

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

 

 

 

 

 

 

 

  1. ГЛОССАРИЙ

 

 

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

А


 

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

 

Активная база данных – эта та база данных в которой СУБД выполняет не только те действия, которые явно указывает пользователь, но и дополнительные действия в соответствии с правилами, заложенными в саму БД.

 

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

 

атрибут Простой - это тот атрибут, чье значение атомарно, т.е. неделимо (пример простых атрибутов: табельный номер сотрудника, фамилия сотрудника, оклад).

 

атрибут Сложный - это тот атрибут, чье значение представляет собой объединение значений различных атрибутов.

Б


 

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

 

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

Г


 

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

Д


 

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

 

Декартовым произведением  множеств называется множество упорядоченных кортежей вида

 

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

 

Декомпозиция без потерь – это правильно выполненная  декомпозиция. Декомпозиция выполнена правильно, если любой один и тот же запрос, примененный к исходному отношению и к полученным в результате декомпозиции отношениям, дает один и тот же результат. То есть соединение R1 и R2 дает в точности исходное соотношение R.

 

Декомпозиция с потерями. Если естественное соединение R1 и R2 в итоге дает больше кортежей, чем в R.

 

Детерминант отношения - это подмножество стоящее слево в функциональной зависимости (см. Полная функциональная зависимость).

 

Диаграмма Бахмана – это графическое изображение структуры БД, где групповые отношения изображается дугами ориентированного графа, а типы записи вершинами.

 

Домен (Domain) - набор правил ввода значений, форматных ограничений и других свойств, характеризующих группу атрибутов. Другими словами домен - это подмножество значений некоторого типа данных имеющих определенный смысл. Например: список значений и диапазон.

Ж


 

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

 

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

 

Журнализация –ведение в базе данных журнала транзакций. См. журнал транзакций.

З


 

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

И


 

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

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