Нормальная форма Бойса – Кодда
Таблица находится в нормальной форме Бойса – Кодда только в том случае, если любая функциональная зависимость между ее полями сводится к полной функциональной зависимости от возможного ключа.
Согласно данному определению в структуре базы данных все таблицы соответствуют требованиям нормальной формы Бойса – Кодда.
Дальнейшая оптимизация таблиц баз данных должна сводиться к полной декомпозиции таблиц.
Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы.
Четвертая нормальная форма
Четвертая нормальная форма является частным случаем пятой нормальной формы, когда полная декомпозиция должна быть соединением двух проекций. Очень трудно найти такую таблицу, чтобы она находилась в четвертой нормальной форме, но не удовлетворяла определению пятой нормальной формы.
Пятая нормальная форма
Таблица находится в пятой нормальной форме тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в пятой нормальной форме.
На практике оптимизация таблиц базы данных заканчивается третьей нормальной формой. Приведение таблиц к четвертой и пятой нормальным формам представляет чисто теоретический интерес. Практически эта проблема решается разработкой запросов на создание новой таблицы.
Вопрос №18, 19,20
Структурированный язык запросов SQL
Структурированный язык запросов является обычным языком программирования, состоящим из операторов и правил грамматики. Запрос к таблице базы данных на языке SQL представляет собой инструкцию SELECT, которую можно описать следующим образом.
SELECT [ALL|] (список полей таблицы или запроса)
FROM (список таблиц или запросов. На основе которых формируется запрос)
[WHERE (условия отбора данных) ]
[GROUP BY (список полей, по которым упорядочивается вывод данных в запросе) ]
[HAVING (условие для группировки данных в запросе)]
[ORDER BY (список полей, по которым упорядочивается вывод данных в запросе) ]
В рассмотренной структуре SELECT ALL – ключевое слово которое означает, что в результирующий набор записей включаются все записи таблицы или запроса, которые удовлетворяют условиям запроса.
Ключевые слова могут отсутствовать в запросе.
В зависимости от характера выполняемых действий операторы SQL можно разделить на следующие группы:
- операторы определения данных
- операторы манипулирования данными
- операторы запросов
- операторы управления действиями
- операторы администрирования данными
- операторы управления
В таблицах представлены соответствующие группы операторов языка SQL и выполняемые ими действия.
Операторы определения данных
Оператор
| Действие
| CREATE TABLE
| Создает новую таблицу БД
| DROP TABLE
| Удаляет таблицу из БД
| ALTER TABLE
| Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы
| CREATE VIEW
| Создает виртуальную таблицу, соответствующую некоторому SQL – запросу
| ALTER VIEW
| Изменяет ранее созданное представление
| DROP VIEW
| Удаляет ранее созданное представление
| CREATE INDEX
| Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс
| DROP INDEX
| Удаляет ранее созданный индекс
| Операторы манипулирования данными
Оператор
| Действие
| DELETE
| Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому это оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно
| INSERT
| Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу
| UPDATE
| Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации
| SELECT
| Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу
|
Операторы управления действиями (транзакциями)
Оператор
| Действие
| CCOMMIT
| Завершает комплексную, взаимосвязанную обработку информации, объединенную в транзакцию
| ROLLBACK
| Отменяет изменения, проведенные в ходе выполнения транзакции
| SAVEPOINT
| Сохраняет промежуточное состояние БД, помечает его для того, чтобы можно было в дальнейшем к нему вернуться
|
Операторы администрирования данными
Оператор
| Действие
| ALTER DATABASE
| Изменяет набор основных объектов в базе данных, ограничений, касающихся всей базы данных
| ALTER DBAREA
| Изменяет ранее созданную область хранения
| ALTER PASSWORD
| Изменяет пароль для всей базы данных
| CREATE DATABASE
| Создает новую базу данных
| CREATE DBAREA
| Создает новую область хранения базы данных
| DROP DATABASE
| Удаляет базу данных
| DROP DBAREA
| Удаляет область хранения базы данных
| GRANT
| Предоставляет права доступа к базе данных или отдельным ее элементам
| REVOKE
| Лишает права доступа к базе данных или отдельным ее элементам
|
Операторы управления курсором
Оператор
| Действие
| DECLARE
| Определяет курсор для запроса. Задает имя и определяет связанный с ним запрос к БД
| OPEN
| Открывает курсор. Открывает объект базы данных
| FETH
| Устанавливает курсор на определенную запись и считывает ее
| CLOSE
| Закрывает курсор. Закрывает объект базы данных
| PREPARE
| Генерирует план выполнения запроса в соответствии с инструкцией SELECT
| EXECUTE
| Выполняет сгенерированный ранее запрос
|
Вопрос №3
Основные понятия ER – диаграмм
Сущность – это класс однотипных объектов, информация о которых должна быть учтена в модели.
Каждая сущность должна иметь наименование, выраженное существительным в единственном числе.
Примерами сущностей могут быть такие классы объектов, как «поставщик», «сотрудник», «накладная».
Каждая сущность в модели изображается в виде прямоугольника с наименованием «сотрудник»
Экземпляр сущности – это конкретный представитель данной сущности. Например, представителем сущности «сотрудник» может быть «сотрудник Иванов».
Экземпляры сущностей должны быть различимы, т.е. сущности должны иметь некоторые свойства, уникальные для каждого экземпляра этой сущности.
Атрибут сущности – это именованная характеристика, являющаяся некоторым свойством сущности. Наименование атрибута должно быть выражено существительным в единственном числе. Примерами атрибутов сущности «сотрудник» могут быть такие атрибуты, как «табельный номер», «фамилия», «имя», «отчество», «должность», «зарплата» и т.п.
Атрибуты изображаются в пределах прямоугольника, определяющего сущность
| | Сотрудник
Таб.номер
Фамилия
Имя
Отчество
Должность
Зарплата
| |
Ключ сущности – это неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Неизбыточность заключается в том, что удаление любого атрибута из ключа нарушает его уникальность.
Сущность может иметь несколько различных ключей. Ключевые атрибуты изображаются на диаграмме подчеркиванием.
Связь – это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собой. Связи позволяют по одной сущности находить другие сущности, связанные с нею.
Например, связи между сущностями могут выражаться следующими фразами: «сотрудник может иметь несколько детей», «каждый сотрудник обязан числиться только в одном отделе».
Каждая связь имеет два конца и одно или два наименования. Наименование обычно выражается в неопределенной глагольной форме: «иметь», «принадлежать» и т.п. Каждое из наименований относится к своему концу связи. Иногда наименования не пишутся ввиду их очевидности.
Каждая связь может иметь один из следующих типов связи: один – к одному, один – ко – многим, многие – ко многим.
Связь типа «один - одному» означает, что один экземпляр первой сущности связан с одним экземпляром второй сущности. Связь «один – к - одному» чаще всего свидетельствует о том, что на самом деле мы имеем всего одну сущность, неправильно разделенную на две.
Связь типа «один – ко - многим» означает, что один экземпляр первой сущности связан с несколькими экземплярами второй сущности. Это наиболее часто используемый тип связи. Левая сущность называется родительской, правая дочерней.
Связь типа «многие – ко - многим» означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности и каждый экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Тип связи «многие – ко - многим» является временным типом связи, допустимым на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменен двумя связями типа «один – ко - многим» путем создания промежуточной сущности.
|