- •1 Модели данных
- •2 Иерархическая модель
- •3 Сетевая модель
- •4 Реляционная модель
- •5 Структура реляционных данных
- •Отношение Студент
- •6 Отношения : определение, свойства
- •Бинарные операции
- •7 Реляционная алгебра. ( основные операции)
- •Унарные операции .
- •8 Реляционная алгебра. ( дополнительные операции).
- •9 Реляционное исчисление доменов.
- •10 Реляционное исчисление кортежей.
- •11 Построение sql- запросов.
- •12 Sql. Операторы between, in, like, is null
- •13 Комбинированные запросы.
- •14 Вложенные запросы.
- •15 Связанные запросы.
- •16 Использование оператора exists
- •17 Использование предложения union, except, intersect
- •18 Ввод, удаление, изменение значений полей в sql.
- •19 Использование подзапросов с командами обновления
- •20 Использование функций агрегирования в построении запросов
- •21 Форматирование результатов запросов
- •22 Ограничение foreign key.
- •23 Создание, изменение и удаление таблиц средствами -sql.
- •24 Поддержка основных правил целостности данных.
- •25 Sql server. Характеристика объектов бд.
- •Представления
- •Пользовательские типы данных
- •Ограничения целостности
- •28 Основные типы данных
- •Двоичные данные
- •Специальные типы данных.
- •29 Индексы: типы, назначение, создание
- •30 Представления. Изменение значений с помощью представлений
- •31 Обновляемые представления
- •32 Концепция er-модели
- •33 Типы связей и структурные ограничения в er-модели.
- •34 Проблемы er-моделирования
- •35 Основные положения проектирования схем реляционных баз данных
- •36 Избыточность данных и аномалии обновления.
- •37 Функциональные зависимости
- •38 Нормальные формы
- •39 Многозначные зависимости и 4нф ,5нф
- •40 Обзор процесса нормализации
- •41 Основные этапы проектирования баз данных
- •42 Методология концептуального проектирования
- •43 Методология логического проектирования
- •44 Основные задачи логического этапа проектирования базы данных.
- •45 Проверка логической модели с помощью правил нормализации и в отношении транзакций пользователей.
- •46 Определение требований поддержки целостности данных
- •47 Общий обзор методологии физического проектирования реляционных баз данных
- •48 Управление транзакциями.
- •49 Этапы обработки запросов
- •50 Методы защиты базы данных.
9 Реляционное исчисление доменов.
Использует переменные, значения которых берутся из доменов отношений. Если P(d1, d2, …., dn) – предикат, то множество переменных, для которых значение предиката является истинным, записывается – {d1, d2, d3| P(d1, d2, d3)}.
В реляционном исчислении доменов проверяется условие принадлежности заданного значения указанному отношению.
Например: необходимо отыскать типы объектов недвижимости, имеющих число комнат, равных трём.
{Тип | $ Тип (Объекты_недв (Тип, Чило_комнат) ^ Число_комнат =3)}
Определить типы объектов недвижимости, которые осматривались вчера:
{Тип | $ Тип (Объекты_недв (№объекта, Тип) ^ Осмотр (№объекта, Дата) ^ Объект_недв. №объекта = Осмотр. №объекта ^ Дата = ‘11/03/13’)}
Язык реляционного исчисления является непроцедурным языком и теоритической основой для разработки более современных языков БД.
Языки SEQUEL, SQUARE, SQL основаны на реляционном исчислении кортежей.
Язык QBE (Query-By-Example) основан на реляционном исчислении доменов.
В начало
10 Реляционное исчисление кортежей.
В реляционном исчислении кортежей задача состоит в отыскании кортежа, для которого значение предиката является истинным. Для построения запроса необходимо определить переменную, областью определения которой является отношение. Затем задается список атрибутов выходной последовательности и предикат.
RANGE of A IS Объект_недв
{A | A.Число_комнат = 3}
RANGE A IS Объект_недв
RANGE B IS Осмотр
{A | A. №объекта, A.Адрес, B.№арендатора, B.№ сотруд | A.№объекта=B. №объекта ^ Дата = ‘11/03/13’}
Для указания количества экземпляров, к которым может применяться предикат можно использовать два типа операторов: квантор существования и квантор общности.
Квантор существования ($) используется в том случае, если заданный предикат должен быть истинным хотя бы для одного экземпляра отношения.
Квантор общности (") используется в предикатах, которые относятся ко всем экземплярам отношения.
В начало
11 Построение sql- запросов.
SELECT */{DISTINCT/ALL]<список полей>.,…}
FROM {<имя таблицы>/[<алиас>]}.,...
WHERE [<предикат>]
[GROUP BY {<имя столбца>/<целое>}, ..]
HAVING[<предикат>]
ORDER BY [{<имя столбца>/<целое>}.,..]
Здесь «список полей» - выражение, которое задает результирующее значение. Оно может состоять из имен столбцов.
«Имя таблицы» - задается имя или синоним таблицы или представления.
«Алиас» - временный синоним имени таблицы, которое определяется и используется только в одной команде.
«Предикат» - условие, которое может задаваться для каждого столбца либо для комбинации столбцов.
«Целое» - число, которое определяет значение из списка выбираемых полей, указывая его расположение в этом списке.
Аргумент DISTINCT позволяет исключить дублирования значений из результата.
ALL принимает значения по умолчанию и оказывает противоположное действие аргументу DISTINCT.
Предложение WHERE позволяет определить условие. В случае его истинности строка таблицы будет заноситься в результат.
Предложение GROUP BY позволяет группировать столбцы в таблице.
Предложение ORDER BY позволяет упорядочить множество столбцов один внутри другого.
В примерах будет использоваться реляционная БД, состоящая из трех таблиц:
Транспорт, Водители, Поездки.
Структура таблиц приведена в лабораторной работе №2.
Полностью вывести таблицу Водители:
SELECT * FROM Водители;
Отыскать номера машин, требующих ремонта:
SELECT Номер FROM Транспорт
WHERE Состояние = 'ремонт';
Аргумент DISTINCT позволяет исключать дублирование предикатов. Например, необходимо узнать, какие водители были в поездках:
SELECT DISTINCT Личный_номер_вод FROM Поездки;
ALL принимается по умолчанию и оказывает противоположное действие.
Предложение WHERE позволяет определить условие, в случае его подлинности строка таблицы будет заносится в результат.
Получить сведения обо всех машинах, которые либо имеют грузоподъемность равную 5т, либо имеют Пробег больше чем 200.
SELECT * FROM Транспорт
WHERE Грузоподъемность = 5 OR Пробег > 200;
Иногда вместо логического выражения предпочтительнее задавать принадлежность множеству.
SELECT * FROM Транспорт
WHERE Модель IN (‘КаМаз’, ‘МАЗ’)
Можно в предложении WHERE задавать границы, в которых лежит значение:
SELECT * FROM Поездки
WHERE Километраж BETWEEN 10 AND 100;
Можно задавать условие, используя оператор LIKE:
SELECT * FROM Водители
WHERE Фамилия LIKE ‘К*’;
* - любое количество символов, _ - один символ.
Для нахождения полей с пропущенными значениями можно воспользоваться оператором IS NULL:
SELECT * FROM Транспорт
WHERE Состояние IS NULL;
В начало
