- •Понятия: первичный ключ, внешний ключ, суррогатный ключ, индекс.
- •Ограничения на значения данных.
- •Ограничения на связи между данными.
- •Нормализация отношений. Первая нормальная форма.
- •Нормализация отношений. Вторая нормальная форма.
- •Варианты задания условий отбора при создании sql-запросов.
- •Варианты создания многотабличных sql-запросов. Виды объединений.
- •Использование вычисляемых полей при создании sql-запросов.
- •Использование подчиненных запросов в sql-запросах.
- •Возможности запроса alter table.
- •Обработка транзакций.
- •Распределение функций в архитектуре «клиент-сервер».
- •1. Двухзвенные архитектуры.
- •2. Трёхзвенные архитектуры.
- •Понятие хранимой процедуры.
- •Понятие триггера.
Нормализация отношений. Первая нормальная форма.
Отношения, получившиеся в результате преобразования концептуальной модели данных в реляционную, могут иметь неоптимальную структуру, приводящую к нежелательным последствиям при изменении данных в этих отношениях.
Нормализация отношений – процесс построения оптимальной структуры отношений (таблиц) в реляционной БД.
Нормализация отношений заключается в последовательном приведении отношений к нормальным формам:
Первая нормальная форма (1НФ).
Вторая нормальная форма (2НФ).
Третья нормальная форма (3НФ).
Нормальная форма Бойса-Кодда (НФБК).
Четвертая нормальная форма (4НФ).
Пятая нормальная форма (5НФ).
Отношение
находится в 1НФ, если все его
атрибуты простые.
Приведение отношения к 1НФ обычно связано с изменением первичного ключа отношения.
Нормализация отношений. Вторая нормальная форма.
Пусть X и Y – два атрибута некоторого отношения.
Y функционально зависит от X, если каждому значению X соответствует не более одного значения Y.
X Y – функциональная зависимость.
Неключевой атрибут функционально полно зависит от составного ключа, если он не находится в функциональной зависимости ни от какой части составного ключа.
Функциональные зависимости:
Табельный номер ФИО
Табельный номер Комната
Комната Телефон
Неключевые атрибуты ФИО, Оклад, Комната и Телефон не находятся в полной функциональной зависимости от составного ключа, т.к. они функционально зависят от части составного ключа Табельный номер.
Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от составного ключа.
Чтобы отношение привести ко 2НФ, надо:
Построить проекцию отношения, исключив атрибуты, которые не находятся в полной функциональной зависимости от составного ключа.
Построить дополнительно одну или несколько проекций на часть составного ключа и атрибуты, функционально зависящие от этой части ключа.
Нормализация отношений. Третья нормальная форма.
Пусть X, Y и Z – три атрибута некоторого отношения.
При этом X Y и Y Z, но обратное соответствие отсутствует, т.е. не выполняется Z Y и/или Y X.
Тогда говорят, что Z транзитивно зависит от X.
Отношение находится в 3НФ, если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Транзитивная зависимость:
Табельный номер Комната Телефон
Понятие физической структуры БД.
Физическая структура БД – структура данных:
соответствующая логической структуре БД,
выраженная в среде конкретной СУБД.
Каждая СУБД имеет свои особенности по:
реализации структуры отношений (таблиц),
задания ограничений.
Для одной логической структуры БД может быть создано множество физических структур.
Физическая структура БД определяет:
реализацию ограничений (в соответствии с возможностями конкретной СУБД),
размещение данных на физических носителях (распределение по дискам, секционирование),
технику индексирования.
Структура запроса-выборки языка SQL. Предикаты предложения SELECT.
SQL – язык, ориентированный на преобразования,
– принимает на вход одно или несколько отношений и выдает на выходе одно отношение (даже если результатом запроса является одно число).
Результат запроса выборки – новое отношение (результирующий набор записей), удовлетворяющее условиям выборки.
Основная конструкция запроса выборки:
SELECT – поля, присутствующие в результирующем наборе
FROM – таблица (таблицы), которые участвуют в запросе
WHERE – критерий отбора записей.
Знак * - присутствие в результирующем наборе всех полей базовой таблицы.
При использовании * все изменения в структуре базовой таблицы (добавление или удаление полей) отразятся в результирующем наборе.
Пример: Вывести расписание самолетов, вылетающих в Москву.
SELECT [Номер рейса], [Пункт назначения], [Время вылета], [Время прибытия], [Число мест]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’
Предикаты предложения SELECT – для ограничения числа возвращаемых записей.
Предикат ALL – все записи, удовлетворяющие условиям отбора, – используется по умолчанию.
Предикат DISTINCT – исключаются записи, содержащие повторяющиеся значения.
SELECT DISTINCT [Пункт назначения]
FROM Рейс
(Автоматически сортирует по возрастанию)
ORDER BY – сортировка результирующего набора записей:
ASC – по возрастанию (по умолчанию).
DESC – по убыванию.
SELECT DISTINCT [Пункт назначения]
FROM Рейс
ORDER BY [Пункт назначения] DESC
Предикат DISTINCTROW – игнорируется в однотабличных запросах.
Предикат TOP – возвращает определённое число записей.
SELECT TOP 2 [Пункт назначения]
FROM Рейс
ORDER BY [Пункт назначения] DESC
Предикат PERCENT – возвращает определённый процент записей.
SELECT TOP 60 PERCENT [Пункт назначения]
FROM Рейс
ORDER BY [Пункт назначения] DESC
AS – изменение заголовков столбцов результирующего набора записей.
SELECT DISTINCT [Пункт назначения] AS Города
FROM Рейс
Выражение, задаваемое в предложении WHERE, может содержать:
Операторы (=, <, >, And, Or, …).
Идентификаторы – ссылки на значения полей ( [Номер рейса] ).
Функции ( Date () – возврат системной даты).
Константы ( True, False ).
Литералы – значения, которые используются в том виде, как они записаны (25, ‘Москва’).
Особенности использования дат:
Даты вводятся в американском формате (мм/дд/гг).
Литералы дат обрамляются символом # ( #10/21/05# - 21 октября 2005 года).
Оператор In – проверяет значение выражения на совпадение с любым из элементов списка.
SELECT *
FROM Рейс
WHERE [Пункт назначения] In ( ‘Москва’ , ‘Киев’ )
Оператор Not In – проверяет значение выражения на несовпадение с любым из элементов списка.
Оператор Like – позволяет использовать шаблоны (символы * и ?).
SELECT *
FROM Рейс
WHERE [Пункт назначения] Like ‘M*’
Оператор Between … And … – позволяет указать промежуток между значениями.
SELECT [Номер рейса]
FROM Вылет
WHERE [Плановая дата] Between #10/16/19# And #10/18/19#
Оператор Is Null – позволяет обнаружить пустое значение (Null).
SELECT [Номер рейса], [Плановая дата]
FROM Вылет
WHERE [Реальная дата] Is Null
WHERE может включать несколько выражений, связанных логическими операторами And и Or.
SELECT [Номер рейса], [Плановая дата]
FROM Вылет
WHERE [Реальная дата] = #10/16/19#
OR ( [Реальная дата] = #10/17/19# AND [Реальное время] <= #12:00# )
