Главная страница
Навигация по странице:

  • Пятая нормальная форма

  • Лекция 8: Введение в структурированный язык запросов - SQL Введение

  • SQL - язык манипулирования данными в реляционной базе данных SQL и его история

  • Описание основных операторов SQL

  • Команда Описание

  • бд полный курс. Информация, данные, информационные системы Информация как социальный ресурс


    Скачать 1.56 Mb.
    НазваниеИнформация, данные, информационные системы Информация как социальный ресурс
    Дата25.03.2023
    Размер1.56 Mb.
    Формат файлаdocx
    Имя файлабд полный курс.docx
    ТипДокументы
    #1014329
    страница13 из 17
    1   ...   9   10   11   12   13   14   15   16   17

    Рис. 6.7. Отношение в 4НФ

    Таким образом, процедура приведения отношения к 4НФ сводится к выполнению нескольких проекций, в данном случае двух проекций

    Пятая нормальная форма

    Как можно заметить, нормализация отношений выполнялась путем разложения (декомпозиции) схем отношений. Очевидно, что при таком подходе должен соблюдаться принцип обратимости: соединение проекций должно приводить к исходным отношениям. Это предполагает отсутствие потери кортежей; появление ранее не существовавших кортежей; сохранение ФЗ (семантика взаимосвязей между данными не должна нарушаться).

    Декомпозиция схем отношений не всегда гарантирует обратимость. Это обстоятельство связано с существованием класса ФЗ по соединению. Если отношение удовлетворяет ФЗ по соединению, то оно может быть восстановлено по своим проекциям. Отношения, содержащие более трех МФЗ, требуют особого внимания при построении логической модели реляционной базы данных. Также 4НФ не устраняет избыточность данных полностью, поэтому требуется дальнейшая декомпозиция схем отношений.

    Отношение находится в пятой нормальной форме (5НФ), если оно находится в 4НФ и удовлетворяет зависимости по соединению относительно своих проекций. 5НФ называют также нормальной формой с проецированием соединений. Она используется для разрешения трех и более отношений, которые связаны более чем тремя ФЗ по типу "многие-ко-многим".

    Пример. Приведение к 5НФ

    Рассмотрим отношение с несколькими многозначными зависимостями, представленное на рис. 6.8.




    Рис. 6.8. Отношение с несколькими многозначными зависимостями

    Рассмотрим сначала это отношение как три изолированных отношения со степенью связи quot;многие-ко-многимquot;:



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



    Предположим, что клиент желает приобрести автомобиль синего цвета модели С, при этом марка автомобиля роли не играет. Запрос к базе данных на поиск такого автомобиля будет содержать два соединения между тремя таблицами CarCar Color и Car Model по атрибуту наименование машины и два предиката: цвет = синий и модель = С.

    Результат выполнения запроса будет удивителен: есть и Волга, и Жигули! Однако из таблицы Model Color видно, что автомобиля синего цвета модели С не существует. Появляется несуществующий кортеж. Такое явление представляет собой аномалию проецирования соединений и пример нарушения 5НФ.

    Приведение отношения к 5НФ заключается во введении еще одного отношения, связывающего три исходных отношения, как показано на рис. 6.9.




    Рис. 6.9. Отношение в 5НФ

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

    Следовательно, каждая нормальная форма ограничивает определенный тип ФЗ и устраняет аномалии обработки данных. Нормальные формы характеризуются следующими свойствами:

    • 1НФ - все атрибуты отношения простые;

    • 2НФ - отношение находится в 1НФ и не содержит частичных ФЗ;

    • 3НФ - отношение находится во 2НФ и не содержит транзитивных ФЗ от ключа;

    • НФБК - отношение находится в 3НФ и не содержит ФЗ ключей от неключевых атрибутов;

    • 4НФ, применяется при наличии более чем одной многозначной ФЗ - отношение находится в НФБК или 3НФ и не содержит независимых многозначных ФЗ;

    • 5НФ - отношение находится в 4НФ и не содержит ФЗ по соединению.

    Лекция 8: 

    Введение в структурированный язык запросов - SQL

    Введение

    В настоящей лекции мы не определяем подробно основные объекты реляционной базы данных - базы данных, таблицы, индексы, представления, хранимые команды/процедуры, триггеры, события таймера. Это будет сделано в следующих лекциях. Данная лекция концентрирует ваше внимание на тех возможностях, которые предоставляет SQL по обработке данных.

    Для иллюстрации применения команд SQL будет использована простая база данных о сотрудниках организации, ее структуре и работах, которые выполняют сотрудники, предметная область и структура которой описана в приложении 1 к лекции.

    SQL - язык манипулирования данными в реляционной базе данных

    SQL и его история

    Единственным средством общения и администраторов баз данных, и проектировщиков, и разработчиков, и пользователей с реляционной базой данных является структурированный язык запрос SQL (Structured Query Language). SQL есть полнофункциональный язык манипулирования данными в реляционных базах данных. В настоящее время он является общепризнанным, стандартным интерфейсом для реляционных баз данных, таких как Oracle, InformixSybase, DB/2, MS SQL Server и ряда других (стандарты ANSI и ISO). SQL - непроцедурный язык, который предназначен для обработки множеств, состоящих из строк и колонок таблиц реляционной базы данных. Хотя существуют его расширения, допускающие процедурную обработку. Проектировщики баз данных используют SQL для создания всех физических объектов реляционной базы данных.

    Теоретические основы SQL были заложены в известной статье [Кодд], положившей начало развитию теории реляционных БД. Первая практическая реализации была выполнена в исследовательских лабораториях фирмы IBM Chamberlin D.D. и Royce R.F. Промышленное применение SQL было впервые реализовано в СУБД Ingres. Одной из первых промышленных реляционных СУБД является Oracle. По сути дела, реляционная СУБД - это программное обеспечение, которое управляет работой реляционной базы данных.

    Первый международный стандарт языка SQL был принят в 1989 г. (SQL-89). В конце 1992 г. был принят новый международный стандарт SQL-92. В настоящее время большинство производителей реляционных СУБД используют его в качестве базового. Однако работы по стандартизации языка SQL далеки от завершения и уже разработан проект стандарта SQL-99, который вводит в обиход языка понятие объекта и разрешает на него ссылаться в операторах SQL. В исходном варианте SQL не было команд управления потоком данных, они появились в недавно принятом стандарте ISO/IEC 9075-5: 1996 дополнительной части SQL.

    Каждой конкретной СУБД соответствует своя собственная реализация SQL, в целом поддерживающая определенный стандарт, но имеющая свои особенности. Эти реализации называются диалектами. Так, стандарт ISO/IEC 9075-5 предусматривает объекты, называемые постоянно хранимыми модулями или PSM-модулями (Persistent Stored Modules). В СУБД Oracle расширение PL/SQL является аналогом указанного выше расширения стандарта 1.

    Описание основных операторов SQL

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

    Весь набор команд SQL можно разбить на следующие группы:

    • команды определения данных ( DDL - Data Defininion Language );

    • команды манипулирования данными ( DML - Data Manipulation Language );

    • команды выборки данных ( DQL - Data Query Language );

    • команды управления транзакциями;

    • команды управления данными.

    При выполнении каждая команда SQL проходит четыре фазы обработки:

    • фаза синтаксического разбора, которая включает проверку синтаксиса команды, проверку имен таблиц и колонок в базе данных, а также подготовку исходных данных для оптимизатора;

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

    • фаза генерации исполняемого кода, которая включает построение выполняемого кода команды;

    • фаза выполнения команды, которая включает выполнение кода команды.

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

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

    Таблица 8.1. Типичный список команд SQL

    Команда

    Описание

    Команды определения данных объектов

    ALTER TABLE

    Изменяет описание таблицы (схему отношения)

    CREATE EVENT

    Создает событие таймера в базе данных

    CREATE INDEX

    Создает индекс для таблицы

    CREATE SEQUENCE

    Создает последовательность

    CREATE TABLE

    Определяет таблицу

    CREATE TABLESPACE

    Создает табличное пространство

    CREATE TRIGGER

    Создает триггер в базе данных

    CREATE VIEW

    Определяет представление на таблицах

    DROP INDEX

    Физически удаляет индекс из баз данных

    DROP SEQUENCE

    Удаляет последовательность

    DROP TABLE

    Физически удаляет таблицу из базы данных

    DROP TABLESPACE

    Удаляет табличное пространство

    DROP VIEW

    Удаляет представление

    Команды манипулирвания данными

    DELETE

    Удаляет одну или более строк из таблицы базы данных

    INSERT

    Вставляет одну или более строк в таблицу базы данных

    UPDATE

    Обновляет значения колонок в таблице базы данных

    Команды выборки данных

    SELECT

    Выполняет запрос на выборку данных из таблиц и представлений

    UNION

    Объединяет в одной выборке результаты выполнения двух или более команд SELECT

    Команды управления транзакциями

    COMMIT

    Завершает транзакцию и физически актуализирует состояние базы данных

    ROLLBACK

    Завершает транзакцию и возвращает текущее состояние базы данных на момент последней завершенной транзакции и контрольной точки

    SAVEPOINT

    Назначает контрольную точку внутри транзакции

    Команды управления данными

    ALTER DATABASE

    Изменяет группы хранения или журналы транзакций

    ALTER DBAREA

    Изменяет размер областей хранения базы данных

    ALTER PASSWORD

    Изменяет пароль для доступа к базе данных

    ALTER STOGROUP

    Изменяет состав областей хранения в группе хранения

    CHECK DATABASE

    Проверяет целостность базы данных

    CHECK INDEX

    Проверяет целостность индекса

    CHECK TABLE

    Проверяет целостность таблицы и индекса

    CREATE DATABASE

    Физически создает базу данных

    CREATE DBAREA

    Создает область хранения базы данных

    CREATE STOGROUP

    Создает группу хранения

    CREATE SYSNONYM

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

    DEINSTALL DATABASE

    Делает базу данныхх недоступной пользователям вычислительной сети

    DROP DATABASE

    Физически удаляет базы данных

    DROP DBAREA

    Физически удаляет область хранения данных

    DROP STOGROUP

    Удаляет группу хранения

    GRANT

    Определяет привилегии пользователей и разграничение доступа к базе данных

    INSTALL DATABASE

    Делает базу данных доступной пользователям вычислительной сети

    LOCK DATABASE

    Блокирует текущую активную базу данных

    REVOKE

    Отменяет привилегии пользователей и разграничения доступа к базе данных

    SET DEFAULT STOGROUP

    Определяет группу хранения по умолчанию

    UNLOCK DATABASE

    Деблокирует текущую активную базу данных

    UPDATE STATISTIK

    Обновляет статистику для базы данных

    Другие команды

    COMMENT ON

    Размещает в системном каталоге комментарии к описанию объектов БД

    CREATE SYNONYM

    Определяет в системном каталоге альтернативные имена для таблиц и представлений БД

    DROP SYNONYM

    Удаляет из системного каталого альтернативные именя для таблиц и представлений БД

    LABEL

    Изменяет метки системных описаний

    ROWCOUNT

    Вычисляет число строк в таблице БД

    Набор команд SQL, перечисленный в таблице, не является полным. Этот список приведен, чтобы вы составили впечатление о возможностях SQL в целом. Для получения полного списка команд следует обратиться к соответствующему руководству для конкретной СУБД. Следует помнить, что SQL является единственным средством общения всех категорий пользователей с реляционными базами данных.
    1   ...   9   10   11   12   13   14   15   16   17


    написать администратору сайта