Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы к экзамену.docx
Скачиваний:
3
Добавлен:
02.01.2025
Размер:
521.41 Кб
Скачать

Нормализация отношений. Первая нормальная форма.

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

Нормализация отношений – процесс построения оптимальной структуры отношений (таблиц) в реляционной БД.

Нормализация отношений заключается в последовательном приведении отношений к нормальным формам:

  • Первая нормальная форма (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# )