Уровень баз данных Введение в РСУБД
Содержание Что такое база данных? СУБД и РСУБД Транзакции ACID свойства транзакций Уровни изоляции в транзакциях Модель данных Классические модели данных Реляционная модель данных Реляционная база данных Нормализация базы данных
Что такое база данных? База данных – набор структурированных записей, преимущественно связанных между собой. Основные типы записей: данные; метаданные. Метаданные – определяют структуру базы. Данные – хранимая информация.
СУБД Database Managed System (DBMS) Система управления базой данных (СУБД) – программное обеспечение: предназначенное для создания и управления базой данных; позволяющее сохранять, модифицировать и извлекать информацию из базы данных. MS Access, FoxPro, DBase
Роль СУБД Доступность – СУБД должна обеспечивать доступ к данным всем пользователям, которым они предназначены. Безопасность – СУБД должна защищать от потери или повреждения данных. Конфиденциальность – СУБД должна защищать от неправомерного доступа к данным или их изменения. Целостность – СУБД должна гарантировать целостность данных, т.е. мы можем быть уверены, что данные верны и надежны, а также у нас должна быть возможность задавать определенные требования значениям данных. Например: все работники должны иметь имя (not null); все строки в таблице должны быть уникальными; менеджеры также должны являться работниками (FK).
Роль СУБД (продолжение) Распределенный доступ – для систем, где несколько пользователей одновременно работают над одними и теми же данными, СУБД должна обеспечить возможность параллельного доступа к одной записи двух или более пользователей, сохраняя целостность данных. Независимость – разработчики программ, поддерживающих использование СУБД: не обязаны знать, как хранится информация; не обязаны знать, где хранится информация; не обязаны быть осведомлены об информации, неиспользуемой, в частности, в их программах. Распределенная база данных – может пригодится поддержка СУБД, управляющей данными, которые хранятся на нескольких связанных между собой вычислительных машинах.
Транзакции Транзакция (transaction) – группа последовательных операций, которая представляет собой логическую единицу работы с данными. Может быть выполнена целиком: либо успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций; либо не выполнена вообще, и тогда она не должна произвести никакого эффекта. Пример: перевод денежных средств с одного счета на другой Начать транзакцию прочесть баланс на счету номер 5 уменьшить баланс на 10 денежных единиц сохранить новый баланс счёта номер 5 прочесть баланс на счету номер 7 увеличить баланс на 10 денежных единиц сохранить новый баланс счёта номер 7 Окончить транзакцию
ACID свойства транзакций в СУБД ACID свойства гарантируют надежность выполнения транзакций. Atomicity (атомарность) – гарантия того, что выполнятся все операции транзакции, либо не выполнится ни одна. Consistency (непротиворечивость) – состояние базы данных находится в непротиворечивом состоянии до и после выполнения транзакции. Isolation (изоляция) – во время выполнения транзакции другие процессы не должны видеть данные в промежуточном состоянии. Durability (долговечность) – гарантия того, что если получено уведомление об успешном выполнении транзакции, можно быть уверенным, что изменения не будут отменены из-за кого-либо сбоя.
Уровни изоляции транзакций в СУБД По соображениям производительности и для выполнения некоторых специальных задач, СУБД предоставляют различные уровни изоляции транзакций. 0 – Неподтвержденное чтение (Read Uncommitted, Dirty Read, грязное чтение) чтение незафиксированных изменений своей транзакции и конкурирующих транзакций; возможны нечистые, неповторяемые чтения и фантомы. 1 – Подтвержденное чтение (Read Committed) чтение всех изменений своей транзакции и зафиксированных изменений конкурирующих транзакций; нечистые чтения невозможны, возможны неповторяемые чтения и фантомы.
Уровни изоляции транзакций в СУБД (продолжение) 2 – Повторяемое чтение (Repeatable Read, Snapshot) чтение всех изменений своей транзакции; любые изменения, внесённые конкурирующими транзакциями после начала своей, недоступны; нечистые и неповторяемые чтения невозможны, возможны фантомы. 3 – Упорядоченный (Serializable, сериализуемый) транзакции выполняются в строгой последовательности, результаты действий которых не зависят от порядка выполнения шагов транзакции (запрещено чтение всех данных изменённых с начала транзакции, в том числе и своей транзакцией); фантомы невозможны. Чем выше уровень изоляции, тем больше требуется ресурсов, чтобы их поддерживать.
РСУБД Relational Database Management System (RDBMS) Реляционная СУБД (РСУБД) – управляет базами данных, построенными на основе реляционной модели данных. Oracle, DB2, MS SQL Server
Модель данных Модель данных – теория представления и обработки данных в системе управления базами данных (СУБД). Определяет различные аспекты: методы описания типов и логических структур данных; методы манипулирования данными; методы описания и поддержки целостности. Развитие технологий моделирования баз данных
Классические модели данных Классические модели данных: Hierarchical Data Model (Иерархическая модель данных) Network Data Model (Сетевая модель данных) Relational Data Model (Реляционная модель данных)
Иерархическая модель данных В иерархической модели данные представлены в виде дерева. Сегменты иерархии: parent (предок); child (потомок). Иерархическая модель структурирует данные в виде дерева записей. Каждая запись имеет одного предка и несколько потомков.
Сетевая модель данных В сетевой модели данные представлены в виде сети. Сегменты сети: parent (предок); child (потомок). Сетевая модель данных структурирует данные в виде сети записей. Каждая запись имеет как несколько потомков, так и несколько предков.
Недостатки иерархической и сетевой моделей данных Доступ к данным происходит не с помощью SQL, а с помощью специальных интерфейсов: FIND, CREATE, READ, UPDATE and DELETE. Каждый интерфейс может получить доступ только к одной таблице. Ограничения механизмов выборки данных: прочитать все записи; прочитать одну запись, используя ее главный ключ; прочитать всех потомков, ассоциированных с выбранным предком. Отсутствие возможности совершать выборку сортированных данных.
Реляционная модель данных Реляционная модель данных была изобретена Эдгаром Коддом в конце 1960-х. Модель данных основана на математической теории отношений, описывающей следующие аспекты: структурный аспект – данные представляют собой набор отношений; аспект целостности – отношения (таблицы) отвечают определенным условиям целостности: декларативные ограничения целостности уровня домена (типа данных) и уровня отношения; аспект обработки (манипулирования) – модель поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление)
Реляционная модель данных (продолжение) Отношение – основной элемент в реляционной модели данных, представляющий собой двумерную таблицу. Отношение состоит из кортежей (строк) и атрибутов (колонок). Домен (тип данных) – область значений, которые могут принимать атрибуты. Пример: если возраст должен быть 16 – 65 лет, то домен для атрибута «возраст» – целое число в диапазоне
Реляционная модель данных (продолжение) Помимо создания и управления кортежами существуют средства манипулирования отношениями. На таких операциях основана реляционная алгебра: SELECT – выборка кортежей для создания нового отношения PROJECT – выборка атрибутов для создания нового отношения JOIN – присоединение атрибутов одного отношения к другому PRODUCT – комбинирование всех кортежей одного отношения со всеми кортежами другого UNION – слияние двух отношений для создания нового INTERSECT – создание нового отношения из двух, у которых совпадают значения ключей Формальный язык реляционной алгебры представлен в математической форме и отличается от коммерческих РСУБД.
Реляционная база данных Реляционная база данных построена на реляционной модели данных. Данные представлены в виде простых таблиц, разбитых на строки и столбцы на пересечении каждого столбца и строчки – одно значение у каждого столбца есть свое имя все значения в одном столбце имеют один тип Запросы к таблицам возвращают таблицы, которые сами могут становиться предметом дальнейших запросов Каждая база данных может включать несколько таблиц Строки данных неупорядочены – упорядочивание происходить в момент формирования ответа на запрос
Объекты реляционной базы данных Table (таблица) объект хранения данных содержит строки и колонки View (представление) виртуальная, динамическая или логическая таблица, вычисленная на основе данных в базе изменения данных в таблицах отображаются в представлении Stored Procedure (хранимая процедура) хранимая процедура – подпрограмма, представляющая собой набор SQL инструкций может содержать входные, выходные параметры, локальные переменные, циклы, ветвления и т.п. находится в базе данных
Объекты реляционной базы данных (продолжение) Trigger (триггер) триггер базы данных – процедурный код, автоматически выполняемый при возникновении определенных событий для отдельных таблиц в базе данных триггеры могут запретить доступ к данным, выполнять логирование или проверку изменений данных Index (индекс) индекс – структура базы данных, ускоряющая выполнение операций над таблицами индексы могут быть созданы на основе одной или более колонок типы индексов: уникальные неуникальные
Объекты реляционной базы данных (продолжение) Primary Key (первичный ключ) состоит из одной или более уникальных ненулевых колонок в таблице является идентификатором каждой строки в таблице Foreign Key (внешний ключ) колонка в таблице, значения которой совпадают со значениями первичного ключа в другой таблице используется для создания и обеспечения надежных связей между данными в двух таблицах
Нормализация базы данных Нормализация – устранение недостатков структуры базы данных удаление избыточной информации обеспечение целесообразности связей между данными Нормальная форма – формальное свойство таблиц, характеризующее степень избыточности хранимых данных и возможные проблемы.
Нормальные формы таблиц Наиболее известные и важные нормальные формы: Первая нормальная форма (1НФ, 1NF) Вторая нормальная форма (2НФ, 2NF) Третья нормальная форма (3НФ, 3NF) Третья усиленная нормальная форма, или нормальная форма Бойда-Райса (НФБК, BCNF) Четвёртая нормальная форма (4НФ, 4NF) Пятая нормальная форма (5НФ, 5NF) Доменно-ключевая нормальная форма (ДКНФ, DKNF) При решении практических задач в большинстве случаев третья нормальная форма является достаточной.
Первая нормальная форма таблиц Первая нормальная форма (1NF) каждая колонка должна содержать одно значение все строки должны быть различны Исходная таблица: Таблица, приведенная к 1NF:
Вторая нормальная форма таблиц Вторая нормальная форма (2NF) выполнение условий 1NF любой атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа Исходная таблица: Приведение к 2NF:
Третья нормальная форма таблиц Третья нормальная форма (3NF) выполнение условий 2NF любой неключевой атрибут функционально зависит только от первичного ключа Исходная таблица: Приведение к 3NF:
Далее... Связи между таблицами Структурированный язык запросов (SQL)