Основные понятия
База данных
База данных — совокупность взаимосвязанных данных, хранимых постоянно на внешних носителях и используемых одновременно несколькими пользователями в рамках одной организации. База данных — совокупность файлов определённой структуры. Каждый файл является набором записей. Свойства БД:
- Интегрированность — наличие логической связи между данными в таблицах, которую можно проследить по структуре таблиц;
- Разделяемость — возможность многопользовательского режима работы с данными;
- Персистентность — долгоживущий характер записей базы данных: записи, созданные во время работы пользовательского приложения, продолжают существовать после его завершения и удаляются явно (сравните с переменными языка программирования).
Система БД
База данных является составной частью системы баз данных. Система БД — компьютеризированная система обработки таблиц (наборов записей), которые представляют собой БД.
Функции СБД:
- Добавление новой пустой таблицы в базу данных;
- Добавление новых записей в существующие таблицы;
- Выборка записей из существующих таблиц;
- Обновление записей в существующих таблицах;
- Удаление записей из существующих таблиц;
- Удаление существующих таблиц из базы данных;
- Поддержка языка баз данных.
Структура системы БД:
- Клиент — программа, реализующая интерфейс между приложением и конечным пользователем;
- Приложение — скрипт на языке баз данных (SQL), реализующий операции клиента;
- Машина баз данных — виртуальная машина, реализующая язык баз данных (SQL), и обеспечивающая преобразование команд этого языка в последовательность вызовов низкоуровневых функций системы управления файлами;
- Система управления файлами — программная система, реализующая низкоуровневые функции ввода-вывода, которые обеспечивают работу с файлами базы данных на физическом уровне;
- База данных.
СУБД
Структура СУБД:
- Машина баз данных;
- Система управления файлами;
- Инструментальные средства разработки приложений и клиентских частей.
Функции СУБД:
- поддержка языка баз данных SQL;
- поддержка словаря данных;
- управление данными на физическом уровне;
- управление буферами оперативной памяти;
- поддержка транзакций;
- резервное копирование данных и восстановление данных после сбоев;
- обеспечение безопасности данных;
- обеспечение целостности данных.
Архитектура систем баз данных ANSI/SPARC
Научная группа ANSI/SPARC (Study Group on Data Base Management Systems) была организована в 1972 комитетом Standards Planning and Requirements Committee (SPARC) института American National Standards Institute on Computers and Information Processing (ANSI/X3). Целью группы являлось определение областей технологии баз данных, нуждающихся в стандартизации, и выработка набора рекомендуемых действий в каждой из этих областей. В 1975-78 группа разработала архитектуру системы баз данных.
Уровни абстракции данных:
- уровень подсхем (пользователи БД);
Подсхема — представление БД с точки зрения конечного пользователя. - уровень схемы (Администратор БД);
Схема описывает логическую структуру БД в терминах некоторой реляционной модели данных. - физический уровень (база данных).
Представление схемы в виде совокупности файлов определенной структуры.
Цикл работы СУБД:
- Пользователь формирует запрос на языке SQL;
- СУБД воспринимает запрос и интерпретирует его;
- Запрос к подсхеме преобразуется в эквивалентный запрос к схеме;
- Запрос к схеме преобразуется в эквивалентный запрос к физическому представлению;
- Отрабатывается запрос к физическому представлению;
- Результат преобразуется к виду уровня схемы;
- Результат преобразуется к виду уровня подсхемы и помещается в рабочую область пользователя.
Проектирование баз данных
Нормальные формы
1НФ
Отношение находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.
То есть для каждого поля таблицы может быть определенио только одно атомартное значение. Поле не может содержать в себе списки, таблицы и тому подобное.
2НФ
Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и при этом любой его атрибут, не входящий в состав потенциального ключа, функционально полно зависит от каждого потенциального ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего составного потенциального ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него частей. Или другими словами: в 2НФ нет неключевых атрибутов, зависящих от части составного потенциального ключа.
Второе важное значение второй нормальной формы состоит в том, что она по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, 2НФ запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов
3НФ
Согласно определению Кодда, таблица находится в 3NF тогда и только тогда, когда выполняются следующие условия:
- Отношение R (таблица) находится во второй нормальной форме;
- Каждый непервичный атрибут R находится в нетранзитивной (то есть прямой) зависимости от каждого ключа R.
Непервичный (неключевой) атрибут R — это атрибут, который не принадлежит ни одному из возможных (альтернативных) ключей R. Транзитивная зависимость— это функциональная зависимость, при которой X → Z (X определяет Z) не напрямую, а посредством отношения X → Y и Y → Z (отношение Y → X не является обязательным условием).