Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по базам данных 2005.docx
Скачиваний:
154
Добавлен:
29.10.2018
Размер:
148.31 Кб
Скачать

4.2 Нормальные формы

Нормализация таблиц производится постепенно.

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

Всего известно 6 нормальных форм:

1 НФ (первая нормальная форма)

2 НФ (вторая нормальная форма)

3 НФ (третья нормальная форма)

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

4 НФ (четвертая нормальная форма)

5 НФ (пятая нормальная форма)

На практике, как правило, требуется соблюсти первые три нормальные формы.

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

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

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

Лекция 5. Проектирование и создание запросов. Структурированный язык запросов (sql).

  1. Понятие запроса

  2. Соединение таблиц в запросы

  3. Соединение трех и более таблиц

  4. Запрос на выборку

  5. Запрос на выборку с группировкой

  6. Перекрестный запрос

  7. Перекрестный запрос с составным заголовком строк

  8. Запрос на обновление

  9. Запрос на удаление

  10. Запрос на добавление

  11. Логически выраженные команды SQL

5.1 Понятие запроса

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

Кортежи, входящие в запрос, могут быть сгруппированы и отсортированы по определенному признаку. Слово «запрос» может использоваться также в понятии «команда» или «инструкция», которая написана на языке SQL (Structured Query Language). В Microsoft Access запросы могут создаваться в режиме конструктора, при помощи мастера или в режиме SQL, однако хранятся они в виде команд SQL.

5.2 Соединение таблиц в запросах

Если две физические таблицы имеют общие поля, то по этим полям данные из рассматриваемых таблиц могут быть объединены в одну общую таблицу. В принципе, все физические таблицы могут быть объединены в одну общую. Соединение таблиц может быть внутренним (inner join) и внешним (outer join). Внешнее соединение бывает левым (left join) и правым (right join). Перед созданием внешнего соединения всегда требуется определить, левым или правым оно является. Самого по себе внешнего соединения таблиц (без уточнения типа) не бывает. Рассмотрим пример соединения таблиц Т1 и Т2.

Таблица Т1

Таблица Т2

F1

F2

F3

F1

F4

07

B

009

02

ZZ

02

F

002

04

TT

04

C

004

02

WW

05

D

010

05

AA

012

09

BB

В таблице T1 поле F1 является ключевым, а поле F2 – информационным, в таблице Т2 ключевым является поле F3, а информационными - поля F1, F4. Результаты внутреннего соединения таблиц Т1 и Т2 представим в табл. Т3.

Таблица T3

F1

F2

F3

F4

02

F

009

ZZ

04

C

002

TT

05

D

010

AA

02

F

004

WW

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

Таблица Т1 является родительской, а таблица Т2 – дочерней. Соблюдение ссылочной целостности требует, чтобы каждый кортеж дочерней таблицы имел соответствие в родительской таблице. Однако не обязательно, чтобы каждый кортеж родительской таблицы имел соответствие в дочерней, т.е. отсутствие соответствия первому кортежу таблицы Т1 в таблице Т2, еще не означает, что ссылочная целостность не соблюдается.

Рассмотрим левое внешнее соединение таблиц Т1 и Т2, результаты представим в табл. Т4.

Таблица Т4

F1

F2

F3

F4

07

B

Null

Null

02

F

009

ZZ

02

F

004

WW

04

C

002

TT

05

D

010

AA

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

Рассмотрим внешнее правое соединение таблиц Т1 и Т2, результаты представим в табл. Т5.

Таблица Т5

F1

F2

F3

F4

02

F

009

ZZ

02

F

004

WW

04

C

002

TT

05

D

010

AA

09

Null

012

BB

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

Рассмотрим примеры соединений таблиц по полю F1 и запишем их в виде инструкций:

T1 INNER JOIN T2 ON T1.F1=T2.F1

T1 LEFT JOIN T2 ON T1.F1=T2.F1

T1 RIGHT JOIN T2 ON T1.F1=T2.F1